/*
* Copyright 2015 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef __TPM2_CPRIHASH_FP_H
#define __TPM2_CPRIHASH_FP_H
LIB_EXPORT UINT16
_cpri__CompleteHash(CPRI_HASH_STATE *hashState, // IN: the state of hash stack
UINT32 dOutSize, // IN: size of digest buffer
BYTE *dOut // OUT: hash digest
);
LIB_EXPORT UINT16
_cpri__CopyHashState(CPRI_HASH_STATE *out, // OUT: destination of the state
CPRI_HASH_STATE *in // IN: source of the state
);
LIB_EXPORT UINT16
_cpri__HashBlock(TPM_ALG_ID hashAlg, // IN: The hash algorithm
UINT32 dataSize, // IN: size of buffer to hash
BYTE *data, // IN: the buffer to hash
UINT32 digestSize, // IN: size of the digest buffer
BYTE *digest // OUT: hash digest
);
LIB_EXPORT BOOL _cpri__HashStartup(void);
LIB_EXPORT UINT16
_cpri__GetDigestSize(TPM_ALG_ID hashAlg // IN: hash algorithm to look up
);
LIB_EXPORT UINT16
_cpri__GetHashDER(TPM_ALG_ID hashAlg, // IN: the algorithm to look up
const BYTE **p);
LIB_EXPORT UINT16
_cpri__KDFa(TPM_ALG_ID hashAlg, // IN: hash algorithm used in HMAC
TPM2B *key, // IN: HMAC key
const char *label, // IN: a 0-byte terminated label used in KDF
TPM2B *contextU, // IN: context U
TPM2B *contextV, // IN: context V
UINT32 sizeInBits, // IN: size of generated key in bit
BYTE *keyStream, // OUT: key buffer
UINT32 *counterInOut, // IN/OUT: caller may provide the iteration
// counter for incremental operations to
// avoid large intermediate buffers.
BOOL once // IN: TRUE if only one iteration is performed FALSE if
// iteration count determined by "sizeInBits"
);
LIB_EXPORT UINT16
_cpri__KDFe(TPM_ALG_ID hashAlg, // IN: hash algorithm used in HMAC
TPM2B *Z, // IN: Z
const char *label, // IN: a 0 terminated label using in KDF
TPM2B *partyUInfo, // IN: PartyUInfo
TPM2B *partyVInfo, // IN: PartyVInfo
UINT32 sizeInBits, // IN: size of generated key in bit
BYTE *keyStream // OUT: key buffer
);
LIB_EXPORT CRYPT_RESULT
_cpri__MGF1(UINT32 mSize, // IN: length of the mask to be produced
BYTE *mask, // OUT: buffer to receive the mask
TPM_ALG_ID hashAlg, // IN: hash to use
UINT32 sSize, // IN: size of the seed
BYTE *seed // IN: seed size
);
LIB_EXPORT UINT16
_cpri__StartHMAC(TPM_ALG_ID hashAlg, // IN: the algorithm to use
BOOL sequence, // IN: indicates if the state should be saved
CPRI_HASH_STATE *state, // IN/OUT: the state buffer
UINT16 keySize, // IN: the size of the HMAC key
BYTE *key, // IN: the HMAC key
TPM2B *oPadKey // OUT: the key prepared for the oPad round
);
LIB_EXPORT UINT16
_cpri__StartHash(TPM_ALG_ID hashAlg, // IN: hash algorithm
BOOL sequence, // IN: TRUE if the state should be saved
CPRI_HASH_STATE *hashState // OUT: the state of hash stack.
);
LIB_EXPORT void _cpri__UpdateHash(
CPRI_HASH_STATE *hashState, // IN: the hash context information
UINT32 dataSize, // IN: the size of data to be added to the digest
BYTE *data // IN: data to be hashed
);
#endif // __TPM2_CPRIHASH_FP_H
LIB_EXPORT UINT16 _cpri__CompleteHMAC(
CPRI_HASH_STATE *hashState, // IN: the state of hash stack
TPM2B *oPadKey, // IN: the HMAC key in oPad format
UINT32 dOutSize, // IN: size of digest buffer
BYTE *dOut // OUT: hash digest
);
LIB_EXPORT TPM_ALG_ID
_cpri__GetContextAlg(CPRI_HASH_STATE *hashState // IN: the hash context
);
LIB_EXPORT TPM_ALG_ID _cpri__GetHashAlgByIndex(UINT32 index // IN: the index
);
LIB_EXPORT UINT16
_cpri__GetHashBlockSize(TPM_ALG_ID hashAlg // IN: hash algorithm to look up
);
LIB_EXPORT void _cpri__ImportExportHashState(
CPRI_HASH_STATE *
osslFmt, // IN/OUT: the hash state formated for use by openSSL
EXPORT_HASH_STATE *externalFmt, // IN/OUT: the exported hash state
IMPORT_EXPORT direction //
);