1d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury/*
2d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury * Copyright 2015 The Chromium OS Authors. All rights reserved.
3d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury * Use of this source code is governed by a BSD-style license that can be
4d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury * found in the LICENSE file.
5d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury */
6d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury
7f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury#ifndef __TPM2_MEMORYLIB_FP_H
8f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury#define __TPM2_MEMORYLIB_FP_H
9d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury
10a4ed3aa64664a1241ea982d685db744caaae3ffaJocelyn Bohr#include "InternalRoutines.h"
11a4ed3aa64664a1241ea982d685db744caaae3ffaJocelyn Bohr
12f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyBYTE *MemoryGetResponseBuffer(
13f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury    TPM_CC command  // Command that requires the buffer
14f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury    );
15f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyLIB_EXPORT BOOL Memory2BEqual(const TPM2B *aIn,  // IN: compare value
16f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                              const TPM2B *bIn   // IN: compare value
17f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                              );
18f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury#define MemoryCopy(destination, source, size, destSize) \
19f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury  MemoryMove((destination), (source), (size), (destSize))
20f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyLIB_EXPORT INT16 MemoryCopy2B(TPM2B *dest,          // OUT: receiving TPM2B
21f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                              const TPM2B *source,  // IN: source TPM2B
22f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                              UINT16 dSize  // IN: size of the receiving buffer
23f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                              );
24f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyLIB_EXPORT void MemoryMove(void *destination,   //   OUT: move destination
25f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                           const void *source,  //   IN: move source
26f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                           UINT32 size,  //   IN: number of octets to moved
27f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                           UINT32 dSize  //   IN: size of the receive buffer
283743ac1a96b45f78720fb5008771b90d9e2c5adeVadim Bendebury                           );
29f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyUINT16 MemoryRemoveTrailingZeros(TPM2B_AUTH *auth  // IN/OUT: value to adjust
30f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                                 );
31f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyLIB_EXPORT void MemorySet(void *destination,  // OUT: memory destination
32f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                          char value,         // IN: fill value
33f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                          UINT32 size         // IN: number of octets to fill
34d881367e349b1e8676c9ff84d8b9cfc494fc07b2Vadim Bendebury                          );
35c00055c030100256f3c2015b9892cdb0bd39fcb0Vadim BendeburyLIB_EXPORT void MemoryConcat2B(
36f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury    TPM2B *aInOut,  // IN/OUT: destination 2B
37f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury    TPM2B *bIn,     // IN: second 2B
38f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury    UINT16 aSize  // IN: The size of aInOut.buffer (max values for aInOut.size)
39f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury    );
40f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim BendeburyLIB_EXPORT BOOL MemoryEqual(const void *buffer1,  // IN: compare buffer1
41f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                            const void *buffer2,  // IN: compare buffer2
42f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                            UINT32 size  // IN: size of bytes being compared
43f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury                            );
44f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury
45f788ffb5e5b4493cb4c1deaa12a97c80c2694b01Vadim Bendebury#endif  // __TPM2_MEMORYLIB_FP_H
46