UNPACK_ALLOC
} UnpackPtr;
+static
inline BYTE* pack_BYTE(BYTE* ptr, BYTE t) {
ptr[0] = t;
return ++ptr;
}
+static
inline BYTE* unpack_BYTE(BYTE* ptr, BYTE* t) {
t[0] = ptr[0];
return ++ptr;
}
+static
inline int unpack3_BYTE(BYTE* ptr, UINT32* pos, UINT32 max, BYTE *t)
{
if (*pos + 1 > max)
#define unpack3_BOOL(p, x, m, t) unpack3_BYTE(p, x, m, t)
#define sizeof_BOOL(t) 1
+static
inline BYTE* pack_UINT16(void* ptr, UINT16 t) {
UINT16* p = ptr;
*p = cpu_to_be16(t);
return ptr + sizeof(UINT16);
}
+static
inline BYTE* unpack_UINT16(void* ptr, UINT16* t) {
UINT16* p = ptr;
*t = be16_to_cpu(*p);
return ptr + sizeof(UINT16);
}
+static
inline int unpack3_UINT16(BYTE* ptr, UINT32* pos, UINT32 max, UINT16 *t)
{
if (*pos + 2 > max)
return 0;
}
+static
inline BYTE* pack_UINT32(void* ptr, UINT32 t) {
UINT32* p = ptr;
*p = cpu_to_be32(t);
return ptr + sizeof(UINT32);
}
+static
inline BYTE* unpack_UINT32(void* ptr, UINT32* t) {
UINT32* p = ptr;
*t = be32_to_cpu(*p);
return ptr + sizeof(UINT32);
}
+static
inline int unpack3_UINT32(BYTE* ptr, UINT32* pos, UINT32 max, UINT32 *t)
{
if (*pos + 4 > max)
#define sizeof_TCS_KEY_HANDLE(t) sizeof_UINT32(t)
+static
inline BYTE* pack_BUFFER(BYTE* ptr, const BYTE* buf, UINT32 size) {
memcpy(ptr, buf, size);
return ptr + size;
}
+static
inline BYTE* unpack_BUFFER(BYTE* ptr, BYTE* buf, UINT32 size) {
memcpy(buf, ptr, size);
return ptr + size;
}
+static
inline int unpack3_BUFFER(BYTE* ptr, UINT32* pos, UINT32 max, BYTE* buf, UINT32 size) {
if (*pos + size > max)
return TPM_SIZE;
#define sizeof_BUFFER(b, s) s
+static
inline BYTE* unpack_ALIAS(BYTE* ptr, BYTE** buf, UINT32 size) {
*buf = ptr;
return ptr + size;
}
+static
inline BYTE* unpack_ALLOC(BYTE* ptr, BYTE** buf, UINT32 size) {
if(size) {
*buf = malloc(size);
return ptr + size;
}
+static
inline BYTE* unpack_PTR(BYTE* ptr, BYTE** buf, UINT32 size, UnpackPtr alloc) {
if(alloc == UNPACK_ALLOC) {
return unpack_ALLOC(ptr, buf, size);
}
}
+static
inline int unpack3_PTR(BYTE* ptr, UINT32* pos, UINT32 max, BYTE** buf, UINT32 size, UnpackPtr alloc) {
if (size > max || *pos + size > max)
return TPM_SIZE;
}
#define unpack3_VPTR(ptr, pos, max, buf, size, alloc) unpack3_PTR(ptr, pos, max, (void*)(buf), size, alloc)
+static
inline BYTE* pack_TPM_AUTHDATA(BYTE* ptr, const TPM_AUTHDATA* d) {
return pack_BUFFER(ptr, *d, TPM_DIGEST_SIZE);
}
+static
inline BYTE* unpack_TPM_AUTHDATA(BYTE* ptr, TPM_AUTHDATA* d) {
return unpack_BUFFER(ptr, *d, TPM_DIGEST_SIZE);
}
+static
inline int unpack3_TPM_AUTHDATA(BYTE* ptr, UINT32* pos, UINT32 len, TPM_AUTHDATA* d) {
return unpack3_BUFFER(ptr, pos, len, *d, TPM_DIGEST_SIZE);
}
#define sizeof_TPM_TAG(t) sizeof_UINT16(t)
#define sizeof_TPM_STRUCTURE_TAG(t) sizeof_UINT16(t)
+static
inline BYTE* pack_TPM_VERSION(BYTE* ptr, const TPM_VERSION* t) {
ptr[0] = t->major;
ptr[1] = t->minor;
return ptr + 4;
}
+static
inline BYTE* unpack_TPM_VERSION(BYTE* ptr, TPM_VERSION* t) {
t->major = ptr[0];
t->minor = ptr[1];
return ptr + 4;
}
+static
inline int unpack3_TPM_VERSION(BYTE* ptr, UINT32 *pos, UINT32 max, TPM_VERSION* t) {
if (*pos + 4 > max)
return TPM_SIZE;
#define sizeof_TPM_VERSION(x) 4
+static
inline BYTE* pack_TPM_CAP_VERSION_INFO(BYTE* ptr, const TPM_CAP_VERSION_INFO* v) {
ptr = pack_TPM_STRUCTURE_TAG(ptr, v->tag);
ptr = pack_TPM_VERSION(ptr, &v->version);
return ptr;
}
+static
inline BYTE* unpack_TPM_CAP_VERSION_INFO(BYTE* ptr, TPM_CAP_VERSION_INFO* v, UnpackPtr alloc) {
ptr = unpack_TPM_STRUCTURE_TAG(ptr, &v->tag);
ptr = unpack_TPM_VERSION(ptr, &v->version);
return ptr;
}
+static
inline BYTE* pack_TPM_DIGEST(BYTE* ptr, const TPM_DIGEST* d) {
return pack_BUFFER(ptr, d->digest, TPM_DIGEST_SIZE);
}
+static
inline BYTE* unpack_TPM_DIGEST(BYTE* ptr, TPM_DIGEST* d) {
return unpack_BUFFER(ptr, d->digest, TPM_DIGEST_SIZE);
}
+static
inline int unpack3_TPM_DIGEST(BYTE* ptr, UINT32* pos, UINT32 max, TPM_DIGEST* d) {
return unpack3_BUFFER(ptr, pos, max, d->digest, TPM_DIGEST_SIZE);
}
#define pack_TPM_CHOSENID_HASH(ptr, d) pack_TPM_DIGEST(ptr, d)
#define unpack_TPM_CHOSENID_HASH(ptr, d) unpack_TPM_DIGEST(ptr, d)
+static
inline BYTE* pack_TPM_NONCE(BYTE* ptr, const TPM_NONCE* n) {
return pack_BUFFER(ptr, n->nonce, TPM_DIGEST_SIZE);
}
+static
inline BYTE* unpack_TPM_NONCE(BYTE* ptr, TPM_NONCE* n) {
return unpack_BUFFER(ptr, n->nonce, TPM_DIGEST_SIZE);
}
#define sizeof_TPM_NONCE(x) TPM_DIGEST_SIZE
+static
inline int unpack3_TPM_NONCE(BYTE* ptr, UINT32* pos, UINT32 max, TPM_NONCE* n) {
return unpack3_BUFFER(ptr, pos, max, n->nonce, TPM_DIGEST_SIZE);
}
+static
inline BYTE* pack_TPM_SYMMETRIC_KEY_PARMS(BYTE* ptr, const TPM_SYMMETRIC_KEY_PARMS* k) {
ptr = pack_UINT32(ptr, k->keyLength);
ptr = pack_UINT32(ptr, k->blockSize);
return pack_BUFFER(ptr, k->IV, k->ivSize);
}
+static
inline BYTE* pack_TPM_SYMMETRIC_KEY(BYTE* ptr, const TPM_SYMMETRIC_KEY* k) {
ptr = pack_UINT32(ptr, k->algId);
ptr = pack_UINT16(ptr, k->encScheme);
return pack_BUFFER(ptr, k->data, k->size);
}
+static
inline int unpack3_TPM_SYMMETRIC_KEY_PARMS(BYTE* ptr, UINT32* pos, UINT32 max, TPM_SYMMETRIC_KEY_PARMS* k, UnpackPtr alloc) {
return unpack3_UINT32(ptr, pos, max, &k->keyLength) ||
unpack3_UINT32(ptr, pos, max, &k->blockSize) ||
unpack3_PTR(ptr, pos, max, &k->IV, k->ivSize, alloc);
}
+static
inline int sizeof_TPM_SYMMETRIC_KEY_PARMS(const TPM_SYMMETRIC_KEY_PARMS* k) {
return 12 + k->ivSize;
}
+static
inline int unpack3_TPM_SYMMETRIC_KEY(BYTE* ptr, UINT32* pos, UINT32 max, TPM_SYMMETRIC_KEY* k, UnpackPtr alloc) {
return unpack3_UINT32(ptr, pos, max, &k->algId) ||
unpack3_UINT16(ptr, pos, max, &k->encScheme) ||
unpack3_PTR(ptr, pos, max, &k->data, k->size, alloc);
}
+static
inline BYTE* pack_TPM_RSA_KEY_PARMS(BYTE* ptr, const TPM_RSA_KEY_PARMS* k) {
ptr = pack_UINT32(ptr, k->keyLength);
ptr = pack_UINT32(ptr, k->numPrimes);
return pack_BUFFER(ptr, k->exponent, k->exponentSize);
}
+static
inline int unpack3_TPM_RSA_KEY_PARMS(BYTE* ptr, UINT32* pos, UINT32 max, TPM_RSA_KEY_PARMS* k, UnpackPtr alloc) {
return unpack3_UINT32(ptr, pos, max, &k->keyLength) ||
unpack3_UINT32(ptr, pos, max, &k->numPrimes) ||
unpack3_PTR(ptr, pos, max, &k->exponent, k->exponentSize, alloc);
}
+static
inline int sizeof_TPM_RSA_KEY_PARMS(const TPM_RSA_KEY_PARMS* k) {
return 12 + k->exponentSize;
}
+static
inline BYTE* pack_TPM_KEY_PARMS(BYTE* ptr, const TPM_KEY_PARMS* k) {
ptr = pack_TPM_ALGORITHM_ID(ptr, k->algorithmID);
ptr = pack_TPM_ENC_SCHEME(ptr, k->encScheme);
return ptr;
}
+static
inline int unpack3_TPM_KEY_PARMS(BYTE* ptr, UINT32* pos, UINT32 len, TPM_KEY_PARMS* k, UnpackPtr alloc) {
int rc = unpack3_TPM_ALGORITHM_ID(ptr, pos, len, &k->algorithmID) ||
unpack3_TPM_ENC_SCHEME(ptr, pos, len, &k->encScheme) ||
return TPM_FAIL;
}
+static
inline int sizeof_TPM_KEY_PARMS(const TPM_KEY_PARMS* k) {
int rc = 0;
rc += sizeof_TPM_ALGORITHM_ID(&k->algorithmID);
return rc;
}
+static
inline BYTE* pack_TPM_STORE_PUBKEY(BYTE* ptr, const TPM_STORE_PUBKEY* k) {
ptr = pack_UINT32(ptr, k->keyLength);
ptr = pack_BUFFER(ptr, k->key, k->keyLength);
return ptr;
}
+static
inline int unpack3_TPM_STORE_PUBKEY(BYTE* ptr, UINT32* pos, UINT32 max, TPM_STORE_PUBKEY* k, UnpackPtr alloc) {
return unpack3_UINT32(ptr, pos, max, &k->keyLength) ||
unpack3_PTR(ptr, pos, max, &k->key, k->keyLength, alloc);
}
+static
inline int sizeof_TPM_STORE_PUBKEY(const TPM_STORE_PUBKEY* k) {
return 4 + k->keyLength;
}
+static
inline BYTE* pack_TPM_PUBKEY(BYTE* ptr, const TPM_PUBKEY* k) {
ptr = pack_TPM_KEY_PARMS(ptr, &k->algorithmParms);
return pack_TPM_STORE_PUBKEY(ptr, &k->pubKey);
}
+static
inline int unpack3_TPM_PUBKEY(BYTE* ptr, UINT32* pos, UINT32 len, TPM_PUBKEY* k, UnpackPtr alloc) {
return unpack3_TPM_KEY_PARMS(ptr, pos, len, &k->algorithmParms, alloc) ||
unpack3_TPM_STORE_PUBKEY(ptr, pos, len, &k->pubKey, alloc);
}
+static
inline BYTE* pack_TPM_PCR_SELECTION(BYTE* ptr, const TPM_PCR_SELECTION* p) {
ptr = pack_UINT16(ptr, p->sizeOfSelect);
ptr = pack_BUFFER(ptr, p->pcrSelect, p->sizeOfSelect);
return ptr;
}
+static
inline BYTE* unpack_TPM_PCR_SELECTION(BYTE* ptr, TPM_PCR_SELECTION* p, UnpackPtr alloc) {
ptr = unpack_UINT16(ptr, &p->sizeOfSelect);
ptr = unpack_PTR(ptr, &p->pcrSelect, p->sizeOfSelect, alloc);
return ptr;
}
+static
inline int unpack3_TPM_PCR_SELECTION(BYTE* ptr, UINT32* pos, UINT32 max, TPM_PCR_SELECTION* p, UnpackPtr alloc) {
return unpack3_UINT16(ptr, pos, max, &p->sizeOfSelect) ||
unpack3_PTR(ptr, pos, max, &p->pcrSelect, p->sizeOfSelect, alloc);
}
+static
inline int sizeof_TPM_PCR_SELECTION(const TPM_PCR_SELECTION* p) {
return 2 + p->sizeOfSelect;
}
+static
inline BYTE* pack_TPM_PCR_INFO(BYTE* ptr, const TPM_PCR_INFO* p) {
ptr = pack_TPM_PCR_SELECTION(ptr, &p->pcrSelection);
ptr = pack_TPM_COMPOSITE_HASH(ptr, &p->digestAtRelease);
return ptr;
}
+static
inline int unpack3_TPM_PCR_INFO(BYTE* ptr, UINT32* pos, UINT32 max, TPM_PCR_INFO* p, UnpackPtr alloc) {
return unpack3_TPM_PCR_SELECTION(ptr, pos, max, &p->pcrSelection, alloc) ||
unpack3_TPM_COMPOSITE_HASH(ptr, pos, max, &p->digestAtRelease) ||
unpack3_TPM_COMPOSITE_HASH(ptr, pos, max, &p->digestAtCreation);
}
+static
inline int sizeof_TPM_PCR_INFO(const TPM_PCR_INFO* p) {
int rc = 0;
rc += sizeof_TPM_PCR_SELECTION(&p->pcrSelection);
return rc;
}
+static
inline BYTE* pack_TPM_PCR_INFO_LONG(BYTE* ptr, const TPM_PCR_INFO_LONG* p) {
ptr = pack_TPM_STRUCTURE_TAG(ptr, p->tag);
ptr = pack_TPM_LOCALITY_SELECTION(ptr, p->localityAtCreation);
return ptr;
}
+static
inline int sizeof_TPM_PCR_INFO_LONG(const TPM_PCR_INFO_LONG* p) {
int rc = 0;
rc += sizeof_TPM_STRUCTURE_TAG(p->tag);
return rc;
}
+static
inline int unpack3_TPM_PCR_INFO_LONG(BYTE* ptr, UINT32* pos, UINT32 max, TPM_PCR_INFO_LONG* p, UnpackPtr alloc) {
return unpack3_TPM_STRUCTURE_TAG(ptr, pos, max, &p->tag) ||
unpack3_TPM_LOCALITY_SELECTION(ptr, pos, max,
unpack3_TPM_COMPOSITE_HASH(ptr, pos, max, &p->digestAtRelease);
}
+static
inline BYTE* pack_TPM_PCR_COMPOSITE(BYTE* ptr, const TPM_PCR_COMPOSITE* p) {
ptr = pack_TPM_PCR_SELECTION(ptr, &p->select);
ptr = pack_UINT32(ptr, p->valueSize);
return ptr;
}
+static
inline int unpack3_TPM_PCR_COMPOSITE(BYTE* ptr, UINT32* pos, UINT32 max, TPM_PCR_COMPOSITE* p, UnpackPtr alloc) {
return unpack3_TPM_PCR_SELECTION(ptr, pos, max, &p->select, alloc) ||
unpack3_UINT32(ptr, pos, max, &p->valueSize) ||
unpack3_PTR(ptr, pos, max, (BYTE**)&p->pcrValue, p->valueSize, alloc);
}
+static
inline BYTE* pack_TPM_KEY(BYTE* ptr, const TPM_KEY* k) {
ptr = pack_TPM_VERSION(ptr, &k->ver);
ptr = pack_TPM_KEY_USAGE(ptr, k->keyUsage);
return pack_BUFFER(ptr, k->encData, k->encDataSize);
}
+static
inline int unpack3_TPM_KEY(BYTE* ptr, UINT32* pos, UINT32 max, TPM_KEY* k, UnpackPtr alloc) {
int rc = unpack3_TPM_VERSION(ptr, pos, max, &k->ver) ||
unpack3_TPM_KEY_USAGE(ptr, pos, max, &k->keyUsage) ||
unpack3_PTR(ptr, pos, max, &k->encData, k->encDataSize, alloc);
}
+static
inline int sizeof_TPM_KEY(const TPM_KEY* k) {
int rc = 0;
rc += sizeof_TPM_VERSION(&k->ver);
return rc;
}
+static
inline BYTE* pack_TPM_BOUND_DATA(BYTE* ptr, const TPM_BOUND_DATA* b, UINT32 payloadSize) {
ptr = pack_TPM_VERSION(ptr, &b->ver);
ptr = pack_TPM_PAYLOAD_TYPE(ptr, b->payload);
return pack_BUFFER(ptr, b->payloadData, payloadSize);
}
+static
inline BYTE* unpack_TPM_BOUND_DATA(BYTE* ptr, TPM_BOUND_DATA* b, UINT32 payloadSize, UnpackPtr alloc) {
ptr = unpack_TPM_VERSION(ptr, &b->ver);
ptr = unpack_TPM_PAYLOAD_TYPE(ptr, &b->payload);
return unpack_PTR(ptr, &b->payloadData, payloadSize, alloc);
}
+static
inline BYTE* pack_TPM_STORED_DATA(BYTE* ptr, const TPM_STORED_DATA* d) {
ptr = pack_TPM_VERSION(ptr, &d->ver);
ptr = pack_UINT32(ptr, d->sealInfoSize);
return ptr;
}
+static
inline int sizeof_TPM_STORED_DATA(const TPM_STORED_DATA* d) {
int rv = sizeof_TPM_VERSION(&d->ver) + sizeof_UINT32(d->sealInfoSize);
if (d->sealInfoSize) {
return rv;
}
+static
inline int unpack3_TPM_STORED_DATA(BYTE* ptr, UINT32* pos, UINT32 len, TPM_STORED_DATA* d, UnpackPtr alloc) {
int rc = unpack3_TPM_VERSION(ptr, pos, len, &d->ver) ||
unpack3_UINT32(ptr, pos, len, &d->sealInfoSize);
return rc;
}
+static
inline BYTE* pack_TPM_STORED_DATA12(BYTE* ptr, const TPM_STORED_DATA12* d) {
ptr = pack_TPM_STRUCTURE_TAG(ptr, d->tag);
ptr = pack_TPM_ENTITY_TYPE(ptr, d->et);
return ptr;
}
+static
inline int sizeof_TPM_STORED_DATA12(const TPM_STORED_DATA12* d) {
int rv = sizeof_TPM_STRUCTURE_TAG(&d->ver) +
sizeof_TPM_ENTITY_TYPE(&d->et) +
return rv;
}
+static
inline int unpack3_TPM_STORED_DATA12(BYTE* ptr, UINT32* pos, UINT32 len, TPM_STORED_DATA12* d, UnpackPtr alloc) {
int rc = unpack3_TPM_STRUCTURE_TAG(ptr, pos, len, &d->tag) ||
unpack3_TPM_ENTITY_TYPE(ptr, pos, len, &d->et) ||
return rc;
}
+static
inline BYTE* pack_TPM_AUTH_SESSION(BYTE* ptr, const TPM_AUTH_SESSION* auth) {
ptr = pack_TPM_AUTH_HANDLE(ptr, auth->AuthHandle);
ptr = pack_TPM_NONCE(ptr, &auth->NonceOdd);
return ptr;
}
+static
inline BYTE* unpack_TPM_AUTH_SESSION(BYTE* ptr, TPM_AUTH_SESSION* auth) {
ptr = unpack_TPM_NONCE(ptr, &auth->NonceEven);
ptr = unpack_BOOL(ptr, &auth->fContinueAuthSession);
return ptr;
}
+static
inline int unpack3_TPM_AUTH_SESSION(BYTE* ptr, UINT32* pos, UINT32 len, TPM_AUTH_SESSION* auth) {
return unpack3_TPM_NONCE(ptr, pos, len, &auth->NonceEven) ||
unpack3_BOOL(ptr, pos, len, &auth->fContinueAuthSession) ||
}
+static
inline int sizeof_TPM_AUTH_SESSION(const TPM_AUTH_SESSION* auth) {
int rv = 0;
rv += sizeof_TPM_AUTH_HANDLE(auth->AuthHandle);
return rv;
}
+static
inline BYTE* pack_TPM_RQU_HEADER(BYTE* ptr,
TPM_TAG tag,
UINT32 size,
return pack_UINT32(ptr, ord);
}
+static
inline BYTE* unpack_TPM_RQU_HEADER(BYTE* ptr,
TPM_TAG* tag,
UINT32* size,
return ptr;
}
+static
inline int unpack3_TPM_RQU_HEADER(BYTE* ptr, UINT32* pos, UINT32 max,
TPM_TAG* tag, UINT32* size, TPM_COMMAND_CODE* ord) {
return
#define pack_TPM_BUFFER(ptr, buf, size) pack_BUFFER(ptr, buf, size)
#define unpack_TPM_BUFFER(ptr, buf, size) unpack_BUFFER(ptr, buf, size)
+static
inline BYTE* pack_BYTE_ARRAY(BYTE* ptr, const BYTE* array, UINT32 size)
{
int i;
return ptr;
}
+static
inline BYTE* pack_TPMA_SESSION(BYTE* ptr, const TPMA_SESSION *attr)
{
return pack_BYTE(ptr, (BYTE)(*attr));
}
+static
inline BYTE* unpack_TPMA_SESSION(BYTE* ptr, TPMA_SESSION *attr)
{
return unpack_BYTE(ptr, (BYTE *)attr);
}
+static
inline BYTE* pack_TPMI_ALG_HASH(BYTE* ptr, const TPMI_ALG_HASH *hash)
{
return pack_UINT16(ptr, *hash);
}
+static
inline BYTE* unpack_TPMI_ALG_HASH(BYTE *ptr, TPMI_ALG_HASH *hash)
{
return unpack_UINT16(ptr, hash);
#define pack_TPMI_RH_LOCKOUT(ptr, l) pack_TPM2_HANDLE(ptr, l)
#define unpack_TPMI_RH_LOCKOUT(ptr, l) unpack_TPM2_HANDLE(ptr, l)
+static
inline BYTE* pack_TPM2B_DIGEST(BYTE* ptr, const TPM2B_DIGEST *digest)
{
ptr = pack_UINT16(ptr, digest->size);
return ptr;
}
+static
inline BYTE* unpack_TPM2B_DIGEST(BYTE* ptr, TPM2B_DIGEST *digest)
{
ptr = unpack_UINT16(ptr, &digest->size);
return ptr;
}
+static
inline BYTE* pack_TPMT_TK_CREATION(BYTE* ptr,const TPMT_TK_CREATION *ticket )
{
ptr = pack_TPM_ST(ptr , &ticket->tag);
return ptr;
}
+static
inline BYTE* unpack_TPMT_TK_CREATION(BYTE* ptr, TPMT_TK_CREATION *ticket )
{
ptr = unpack_TPM_ST(ptr, &ticket->tag);
return ptr;
}
+static
inline BYTE* pack_TPM2B_NAME(BYTE* ptr,const TPM2B_NAME *name )
{
ptr = pack_UINT16(ptr, name->size);
return ptr;
}
+static
inline BYTE* unpack_TPM2B_NAME(BYTE* ptr, TPM2B_NAME *name)
{
ptr = unpack_UINT16(ptr, &name->size);
return ptr;
}
+static
inline BYTE* pack_TPM2B_NONCE(BYTE* ptr, const TPM2B_NONCE *nonce)
{
return pack_TPM2B_DIGEST(ptr, (const TPM2B_DIGEST*)nonce);
#define unpack_TPM2B_NONCE(ptr, nonce) unpack_TPM2B_DIGEST(ptr, (TPM2B_DIGEST*)nonce)
+static
inline BYTE* pack_TPM2B_AUTH(BYTE* ptr, const TPM2B_AUTH *auth)
{
return pack_TPM2B_DIGEST(ptr, (const TPM2B_DIGEST*)auth);
#define unpack_TPM2B_AUTH(ptr, auth) unpack_TPM2B_DIGEST(ptr, (TPM2B_DIGEST*)auth)
+static
inline BYTE* pack_TPM2B_DATA(BYTE* ptr, const TPM2B_DATA *data)
{
return pack_TPM2B_DIGEST(ptr, (const TPM2B_DIGEST*)data);
#define unpack_TPM2B_DATA(ptr, data) unpack_TPM2B_DIGEST(ptr, (TPM2B_DIGEST*)data)
+static
inline BYTE* pack_TPM2B_SENSITIVE_DATA(BYTE* ptr, const TPM2B_SENSITIVE_DATA *data)
{
return pack_TPM2B_DIGEST(ptr, (const TPM2B_DIGEST*)data);
#define unpack_TPM2B_SENSITIVE_DATA(ptr, data) unpack_TPM2B_DIGEST(ptr, (TPM2B_DIGEST*)data)
+static
inline BYTE* pack_TPM2B_PUBLIC_KEY_RSA(BYTE* ptr, const TPM2B_PUBLIC_KEY_RSA *rsa)
{
return pack_TPM2B_DIGEST(ptr, (const TPM2B_DIGEST*)rsa);
#define unpack_TPM2B_PUBLIC_KEY_RSA(ptr, rsa) unpack_TPM2B_DIGEST(ptr, (TPM2B_DIGEST*)rsa)
+static
inline BYTE* pack_TPM2B_PRIVATE(BYTE* ptr, const TPM2B_PRIVATE *Private)
{
ptr = pack_UINT16(ptr, Private->size);
return ptr;
}
+static
inline BYTE* unpack_TPM2B_PRIVATE(BYTE* ptr, TPM2B_PRIVATE *Private)
{
ptr = unpack_UINT16(ptr, &Private->size);
return ptr;
}
+static
inline BYTE* pack_TPMS_PCR_SELECTION_ARRAY(BYTE* ptr, const TPMS_PCR_SELECTION *sel, UINT32 count)
{
int i;
return ptr;
}
+static
inline BYTE* unpack_TPMS_PCR_SELECTION_ARRAY(BYTE* ptr, TPMS_PCR_SELECTION *sel, UINT32 count)
{
int i;
return ptr;
}
+static
inline BYTE* pack_TPML_PCR_SELECTION(BYTE* ptr, const TPML_PCR_SELECTION *sel)
{
ptr = pack_UINT32(ptr, sel->count);
return ptr;
}
+static
inline BYTE* unpack_TPML_PCR_SELECTION(BYTE* ptr, TPML_PCR_SELECTION *sel)
{
ptr = unpack_UINT32(ptr, &sel->count);
return ptr;
}
+static
inline BYTE* unpack_TPML_DIGEST(BYTE* ptr,TPML_DIGEST *digest)
{
int i;
return ptr;
}
+static
inline BYTE* pack_TPMS_CREATION_DATA(BYTE* ptr,const TPMS_CREATION_DATA *data)
{
ptr = pack_TPML_PCR_SELECTION(ptr, &data->pcrSelect);
return ptr;
}
+static
inline BYTE* unpack_TPMS_CREATION_DATA(BYTE* ptr, TPMS_CREATION_DATA *data)
{
ptr = unpack_TPML_PCR_SELECTION(ptr, &data->pcrSelect);
return ptr;
}
+static
inline BYTE* pack_TPM2B_CREATION_DATA(BYTE* ptr, const TPM2B_CREATION_DATA *data )
{
ptr = pack_UINT16(ptr, data->size);
return ptr;
}
+static
inline BYTE* unpack_TPM2B_CREATION_DATA(BYTE* ptr, TPM2B_CREATION_DATA * data)
{
ptr = unpack_UINT16(ptr, &data->size);
return ptr;
}
+static
inline BYTE* pack_TPMS_SENSITIVE_CREATE(BYTE* ptr, const TPMS_SENSITIVE_CREATE *create)
{
ptr = pack_TPM2B_AUTH(ptr, &create->userAuth);
return ptr;
}
+static
inline BYTE* pack_TPM2B_SENSITIVE_CREATE(BYTE* ptr, const TPM2B_SENSITIVE_CREATE *create)
{
BYTE* sizePtr = ptr;
return ptr;
}
+static
inline BYTE* pack_TPMU_SYM_MODE(BYTE* ptr, const TPMU_SYM_MODE *p,
const TPMI_ALG_SYM_OBJECT *sel)
{
}
return ptr;
}
+static
inline BYTE* unpack_TPMU_SYM_MODE(BYTE* ptr, TPMU_SYM_MODE *p,
const TPMI_ALG_SYM_OBJECT *sel)
{
return ptr;
}
+static
inline BYTE* pack_TPMU_SYM_KEY_BITS(BYTE* ptr, const TPMU_SYM_KEY_BITS *p,
const TPMI_ALG_SYM_OBJECT *sel)
{
return ptr;
}
+static
inline BYTE* unpack_TPMU_SYM_KEY_BITS(BYTE* ptr, TPMU_SYM_KEY_BITS *p,
const TPMI_ALG_SYM_OBJECT *sel)
{
return ptr;
}
+static
inline BYTE* pack_TPMT_SYM_DEF_OBJECT(BYTE* ptr, const TPMT_SYM_DEF_OBJECT *p)
{
ptr = pack_TPMI_ALG_SYM_OBJECT(ptr, &p->algorithm);
return ptr;
}
+static
inline BYTE* unpack_TPMT_SYM_DEF_OBJECT(BYTE *ptr, TPMT_SYM_DEF_OBJECT *p)
{
ptr = unpack_TPMI_ALG_SYM_OBJECT(ptr, &p->algorithm);
#define pack_TPMS_SCHEME_OAEP(p, t) pack_TPMI_ALG_HASH(p, &((t)->hashAlg))
#define unpack_TPMS_SCHEME_OAEP(p, t) unpack_TPMI_ALG_HASH(p, &((t)->hashAlg))
+static
inline BYTE* pack_TPMU_ASYM_SCHEME(BYTE *ptr, const TPMU_ASYM_SCHEME *p,
const TPMI_ALG_RSA_SCHEME *s)
{
return ptr;
}
+static
inline BYTE* unpack_TPMU_ASYM_SCHEME(BYTE *ptr, TPMU_ASYM_SCHEME *p,
const TPMI_ALG_RSA_SCHEME *s)
{
return ptr;
}
+static
inline BYTE* pack_TPMT_RSA_SCHEME(BYTE* ptr, const TPMT_RSA_SCHEME *p)
{
ptr = pack_TPMI_ALG_RSA_SCHEME(ptr, &p->scheme);
return ptr;
}
+static
inline BYTE* unpack_TPMT_RSA_SCHEME(BYTE* ptr, TPMT_RSA_SCHEME *p)
{
ptr = unpack_TPMI_ALG_RSA_SCHEME(ptr, &p->scheme);
return ptr;
}
+static
inline BYTE* pack_TPMT_RSA_DECRYPT(BYTE* ptr, const TPMT_RSA_DECRYPT *p)
{
ptr = pack_TPMI_ALG_RSA_SCHEME(ptr, &p->scheme);
return ptr;
}
+static
inline BYTE* pack_TPMS_RSA_PARMS(BYTE* ptr, const TPMS_RSA_PARMS *p)
{
ptr = pack_TPMT_SYM_DEF_OBJECT(ptr, &p->symmetric);
return ptr;
}
+static
inline BYTE* unpack_TPMS_RSA_PARMS(BYTE *ptr, TPMS_RSA_PARMS *p)
{
ptr = unpack_TPMT_SYM_DEF_OBJECT(ptr, &p->symmetric);
return ptr;
}
+static
inline BYTE* pack_TPMU_PUBLIC_PARMS(BYTE* ptr, const TPMU_PUBLIC_PARMS *param,
const TPMI_ALG_PUBLIC *selector)
{
return NULL;
}
+static
inline BYTE* unpack_TPMU_PUBLIC_PARMS(BYTE* ptr, TPMU_PUBLIC_PARMS *param,
const TPMI_ALG_PUBLIC *selector)
{
return NULL;
}
+static
inline BYTE* pack_TPMS_ECC_POINT(BYTE* ptr, const TPMS_ECC_POINT *point)
{
assert(false);
return ptr;
}
+static
inline BYTE* unpack_TPMS_ECC_POINT(BYTE* ptr, TPMS_ECC_POINT *point)
{
assert(false);
return ptr;
}
+static
inline BYTE* pack_TPMU_PUBLIC_ID(BYTE* ptr, const TPMU_PUBLIC_ID *id,
const TPMI_ALG_PUBLIC *selector)
{
return NULL;
}
+static
inline BYTE* unpack_TPMU_PUBLIC_ID(BYTE* ptr, TPMU_PUBLIC_ID *id, TPMI_ALG_PUBLIC *selector)
{
switch (*selector) {
return NULL;
}
+static
inline BYTE* pack_TPMT_PUBLIC(BYTE* ptr, const TPMT_PUBLIC *public)
{
ptr = pack_TPMI_ALG_PUBLIC(ptr, &public->type);
return ptr;
}
+static
inline BYTE* unpack_TPMT_PUBLIC(BYTE* ptr, TPMT_PUBLIC *public)
{
ptr = unpack_TPMI_ALG_PUBLIC(ptr, &public->type);
return ptr;
}
+static
inline BYTE* pack_TPM2B_PUBLIC(BYTE* ptr, const TPM2B_PUBLIC *public)
{
BYTE *sizePtr = ptr;
return ptr;
}
+static
inline BYTE* unpack_TPM2B_PUBLIC(BYTE* ptr, TPM2B_PUBLIC *public)
{
ptr = unpack_UINT16(ptr, &public->size);
return ptr;
}
+static
inline BYTE* pack_TPMS_PCR_SELECTION(BYTE* ptr, const TPMS_PCR_SELECTION *selection)
{
ptr = pack_TPMI_ALG_HASH(ptr, &selection->hash);
return ptr;
}
+static
inline BYTE* pack_TPMS_PCR_SELECTION_Array(BYTE* ptr, const TPMS_PCR_SELECTION *selections,
const UINT32 cnt)
{
return ptr;
}
+static
inline BYTE* pack_TPM_AuthArea(BYTE* ptr, const TPM_AuthArea *auth)
{
BYTE* sizePtr = ptr;
return ptr;
}
+static
inline BYTE* unpack_TPM_AuthArea(BYTE* ptr, TPM_AuthArea *auth)
{
ptr = unpack_UINT32(ptr, &auth->size);
return ptr;
}
+static
inline BYTE* pack_TPM2_RSA_KEY(BYTE* ptr, const TPM2_RSA_KEY *key)
{
ptr = pack_TPM2B_PRIVATE(ptr, &key->Private);
return ptr;
}
+static
inline BYTE* unpack_TPM2_RSA_KEY(BYTE* ptr, TPM2_RSA_KEY *key)
{
ptr = unpack_TPM2B_PRIVATE(ptr, &key->Private);