102 lines
4.8 KiB
C
102 lines
4.8 KiB
C
/*
|
|
* 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 //
|
|
);
|