blob: 06047a9984cc1feb85f76b1a044ea3153446df53 [file] [log] [blame]
/*
* 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 //
);