C++程序  |  103行  |  4.81 KB

/*
 * 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          //
    );