Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. | 2 * Copyright 2010, Google Inc. |
|
Che-Liang Chiou
2011/03/14 08:49:54
Please use "chromium os authors..." copyright head
rongchang
2011/03/23 11:44:57
Done.
| |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * All rights reserved. |
| 4 * found in the LICENSE file. | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | |
| 6 * modification, are permitted provided that the following conditions are | |
| 7 * met: | |
| 8 * | |
| 9 * * Redistributions of source code must retain the above copyright | |
| 10 * notice, this list of conditions and the following disclaimer. | |
| 11 * * Redistributions in binary form must reproduce the above | |
| 12 * copyright notice, this list of conditions and the following disclaimer | |
| 13 * in the documentation and/or other materials provided with the | |
| 14 * distribution. | |
| 15 * * Neither the name of Google Inc. nor the names of its | |
| 16 * contributors may be used to endorse or promote products derived from | |
| 17 * this software without specific prior written permission. | |
| 18 * | |
| 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
| 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
| 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
| 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
| 23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
| 24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
| 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
| 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
| 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
| 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
| 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
| 5 * | 30 * |
| 6 * Alternatively, this software may be distributed under the terms of the | 31 * Alternatively, this software may be distributed under the terms of the |
| 7 * GNU General Public License ("GPL") version 2 as published by the Free | 32 * GNU General Public License ("GPL") version 2 as published by the Free |
| 8 * Software Foundation. | 33 * Software Foundation. |
| 9 */ | 34 */ |
| 10 | 35 |
| 11 #include <config.h> | 36 #include <config.h> |
| 12 #include <common.h> | 37 #include <common.h> |
| 13 #include <tlcl_stub.h> | 38 #include <tlcl_stub.h> |
| 14 #include <tpm.h> | 39 #include <tpm.h> |
| 15 | 40 |
| 16 /* A simple TPM library implementation for now */ | 41 /* A simple TPM library implementation for now */ |
| 17 | 42 |
| 18 uint32_t TlclStubInit(void) | 43 uint32_t TlclStubInit(void) |
| 19 { | 44 { |
| 20 #ifdef CONFIG_HARDWARE_TPM | 45 #ifdef CONFIG_HARDWARE_TPM |
| 21 » return tpm_init(); | 46 » int ret = tis_init(); |
| 22 #else | 47 » if (ret) |
| 48 » » return TPM_E_IOERROR; | |
| 49 » /* tpm-lite lib doesn't call TlclOpenDevice after TlclStubInit */ | |
| 50 » ret = tis_open(); | |
| 51 » if (ret) | |
| 52 » » return TPM_E_IOERROR; | |
| 53 #endif | |
| 23 return TPM_SUCCESS; | 54 return TPM_SUCCESS; |
| 24 #endif | |
| 25 } | 55 } |
| 26 | 56 |
| 27 uint32_t TlclCloseDevice(void) | 57 uint32_t TlclCloseDevice(void) |
| 28 { | 58 { |
| 59 #ifdef CONFIG_HARDWARE_TPM | |
| 60 int ret = tis_close(); | |
| 61 if (ret) | |
| 62 return TPM_E_IOERROR; | |
| 63 #endif | |
| 29 return TPM_SUCCESS; | 64 return TPM_SUCCESS; |
| 30 } | 65 } |
| 31 | 66 |
| 32 uint32_t TlclOpenDevice(void) | 67 uint32_t TlclOpenDevice(void) |
| 33 { | 68 { |
| 69 #ifdef CONFIG_HARDWARE_TPM | |
| 70 int ret = tis_open(); | |
| 71 if (ret) | |
| 72 return TPM_E_IOERROR; | |
| 73 #endif | |
| 34 return TPM_SUCCESS; | 74 return TPM_SUCCESS; |
| 35 } | 75 } |
| 36 | 76 |
| 37 uint32_t TlclStubSendReceive(const uint8_t* request, int request_length, | 77 uint32_t TlclStubSendReceive(const uint8_t* request, int request_length, |
| 38 uint8_t* response, int max_length) | 78 uint8_t* response, int max_length) |
| 39 { | 79 { |
| 40 #ifdef CONFIG_HARDWARE_TPM | 80 #ifdef CONFIG_HARDWARE_TPM |
| 41 » int ret_code; | 81 » int ret; |
| 42 » ret_code = tpm_send(request, request_length); | 82 » size_t recv_len = (size_t) max_length; |
| 43 » if (ret_code) | 83 » ret= tis_sendrecv(request, request_length, response, &recv_len); |
| 84 » if (ret) | |
| 44 return TPM_E_IOERROR; | 85 return TPM_E_IOERROR; |
| 45 » ret_code = tpm_receive(response, max_length); | 86 #endif |
| 46 » if (ret_code) | |
| 47 » » return TPM_E_IOERROR; | |
| 48 return TPM_SUCCESS; | 87 return TPM_SUCCESS; |
| 49 #else | |
| 50 return TPM_SUCCESS; | |
| 51 #endif | |
| 52 } | 88 } |
| 53 | 89 |
| OLD | NEW |