1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 */ 5 6 #ifndef TPM_LITE_TLCL_INTERNAL_H_ 7 #define TPM_LITE_TLCL_INTERNAL_H_ 8 9 /* 10 * These numbers derive from adding the sizes of command fields as shown in the 11 * TPM commands manual. 12 */ 13 #define kTpmRequestHeaderLength 10 14 #define kTpmResponseHeaderLength 10 15 #define kTpmReadInfoLength 12 16 #define kEncAuthLength 20 17 #define kPcrDigestLength 20 18 19 20 /* 21 * Conversion functions. ToTpmTYPE puts a value of type TYPE into a TPM 22 * command buffer. FromTpmTYPE gets a value of type TYPE from a TPM command 23 * buffer into a variable. 24 */ 25 __attribute__((unused)) 26 static inline void ToTpmUint32(uint8_t *buffer, uint32_t x) { 27 buffer[0] = (uint8_t)(x >> 24); 28 buffer[1] = (uint8_t)((x >> 16) & 0xff); 29 buffer[2] = (uint8_t)((x >> 8) & 0xff); 30 buffer[3] = (uint8_t)(x & 0xff); 31 } 32 33 /* 34 * See comment for above function. 35 */ 36 __attribute__((unused)) 37 static inline void FromTpmUint32(const uint8_t *buffer, uint32_t *x) { 38 *x = ((buffer[0] << 24) | 39 (buffer[1] << 16) | 40 (buffer[2] << 8) | 41 buffer[3]); 42 } 43 44 /* 45 * See comment for above function. 46 */ 47 __attribute__((unused)) 48 static inline void ToTpmUint16(uint8_t *buffer, uint16_t x) { 49 buffer[0] = (uint8_t)(x >> 8); 50 buffer[1] = (uint8_t)(x & 0xff); 51 } 52 53 /* 54 * See comment for above function. 55 */ 56 __attribute__((unused)) 57 static inline void FromTpmUint16(const uint8_t *buffer, uint16_t *x) { 58 *x = (buffer[0] << 8) | buffer[1]; 59 } 60 61 #endif /* TPM_LITE_TLCL_INTERNAL_H_ */ 62