72 lines
3.5 KiB
C
72 lines
3.5 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_CPRIRSA_FP_H
|
|
#define __TPM2_CPRIRSA_FP_H
|
|
|
|
LIB_EXPORT BOOL _cpri__RsaStartup(void);
|
|
LIB_EXPORT CRYPT_RESULT _cpri__DecryptRSA(
|
|
UINT32 *dOutSize, // OUT: the size of the decrypted data
|
|
BYTE *dOut, // OUT: the decrypted data
|
|
RSA_KEY *key, // IN: the key to use for decryption
|
|
TPM_ALG_ID padType, // IN: the type of padding
|
|
UINT32 cInSize, // IN: the amount of data to decrypt
|
|
BYTE *cIn, // IN: the data to decrypt
|
|
TPM_ALG_ID hashAlg, // IN: in case this is needed for the scheme
|
|
const char *label // IN: in case it is needed for the scheme
|
|
);
|
|
LIB_EXPORT CRYPT_RESULT
|
|
_cpri__EncryptRSA(UINT32 *cOutSize, // OUT: the size of the encrypted data
|
|
BYTE *cOut, // OUT: the encrypted data
|
|
RSA_KEY *key, // IN: the key to use for encryption
|
|
TPM_ALG_ID padType, // IN: the type of padding
|
|
UINT32 dInSize, // IN: the amount of data to encrypt
|
|
BYTE *dIn, // IN: the data to encrypt
|
|
TPM_ALG_ID hashAlg, // IN: in case this is needed
|
|
const char *label // IN: in case it is needed
|
|
);
|
|
LIB_EXPORT CRYPT_RESULT _cpri__GenerateKeyRSA(
|
|
TPM2B *n, // OUT: The public modulu
|
|
TPM2B *p, // OUT: One of the prime factors of n
|
|
UINT16 keySizeInBits, // IN: Size of the public modulus in bit
|
|
UINT32 e, // IN: The public exponent
|
|
TPM_ALG_ID
|
|
hashAlg, // IN: hash algorithm to use in the key generation proce
|
|
TPM2B *seed, // IN: the seed to use
|
|
const char *label, // IN: A label for the generation process.
|
|
TPM2B *extra, // IN: Party 1 data for the KDF
|
|
UINT32 *counter // IN/OUT: Counter value to allow KFD iteration to be
|
|
// propagated across multiple routine
|
|
);
|
|
LIB_EXPORT CRYPT_RESULT
|
|
_cpri__SignRSA(UINT32 *sigOutSize, // OUT: size of signature
|
|
BYTE *sigOut, // OUT: signature
|
|
RSA_KEY *key, // IN: key to use
|
|
TPM_ALG_ID scheme, // IN: the scheme to use
|
|
TPM_ALG_ID hashAlg, // IN: hash algorithm for PKSC1v1_5
|
|
UINT32 hInSize, // IN: size of digest to be signed
|
|
BYTE *hIn // IN: digest buffer
|
|
);
|
|
LIB_EXPORT CRYPT_RESULT _cpri__TestKeyRSA(
|
|
TPM2B *d, // OUT: the address to receive the private exponent
|
|
UINT32 exponent, // IN: the public modulu
|
|
TPM2B *publicKey, // IN/OUT: an input if only one prime is provided. an
|
|
// output if both primes are provided
|
|
TPM2B *prime1, // IN: a first prime
|
|
TPM2B *prime2 // IN: an optional second prime
|
|
);
|
|
LIB_EXPORT CRYPT_RESULT _cpri__ValidateSignatureRSA(
|
|
RSA_KEY *key, // IN: key to use
|
|
TPM_ALG_ID scheme, // IN: the scheme to use
|
|
TPM_ALG_ID hashAlg, // IN: hash algorithm
|
|
UINT32 hInSize, // IN: size of digest to be checked
|
|
BYTE *hIn, // IN: digest buffer
|
|
UINT32 sigInSize, // IN: size of signature
|
|
BYTE *sigIn, // IN: signature
|
|
UINT16 saltSize // IN: salt size for PSS
|
|
);
|
|
|
|
#endif // __TPM2_CPRIRSA_FP_H
|