/* * 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_CPRISYM_FP_H #define __TPM2_CPRISYM_FP_H LIB_EXPORT CRYPT_RESULT _cpri__AESDecryptCBC( BYTE *dOut, // OUT: the decrypted data UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in bytes is // (keySizeInBits + 7) / 8 BYTE *iv, // IN/OUT: IV for decryption. The size of this buffer is 16 byte UINT32 dInSize, // IN: data size BYTE *dIn // IN: data buffer ); LIB_EXPORT CRYPT_RESULT _cpri__AESDecryptCFB(BYTE *dOut, // OUT: the decrypted data UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in // bytes is (keySizeInBits + 7) / 8 BYTE *iv, // IN/OUT: IV for decryption. UINT32 dInSize, // IN: data size BYTE *dIn // IN: data buffer ); // // _cpri__AESDecryptCTR() // // Counter mode decryption uses the same algorithm as encryption. The // _cpri__AESDecryptCTR() function is implemented as a macro call to // _cpri__AESEncryptCTR(). #define _cpri__AESDecryptCTR(dOut, keySize, key, iv, dInSize, dIn) \ _cpri__AESEncryptCTR(((BYTE *)dOut), ((UINT32)keySize), ((BYTE *)key), \ ((BYTE *)iv), ((UINT32)dInSize), ((BYTE *)dIn)) LIB_EXPORT CRYPT_RESULT _cpri__AESDecryptECB(BYTE *dOut, // OUT: the clear text data UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in // bytes is (keySizeInBits + 7) / 8 UINT32 dInSize, // IN: data size BYTE *dIn // IN: cipher text buffer ); // // _cpri__AESDecryptOFB() // // OFB encryption and decryption use the same algorithms for both. The // _cpri__AESDecryptOFB() function is implemented as a macro call to // _cpri__AESEncrytOFB(). // #define _cpri__AESDecryptOFB(dOut, keySizeInBits, key, iv, dInSize, dIn) \ _cpri__AESEncryptOFB(((BYTE *)dOut), ((UINT32)keySizeInBits), ((BYTE *)key), \ ((BYTE *)iv), ((UINT32)dInSize), ((BYTE *)dIn)) // // _cpri__SM4DecryptCTR() // // Counter mode decryption uses the same algorithm as encryption. The // _cpri__SM4DecryptCTR() function is implemented as a macro call to // _cpri__SM4EncryptCTR(). // #define _cpri__SM4DecryptCTR(dOut, keySize, key, iv, dInSize, dIn) \ _cpri__SM4EncryptCTR(((BYTE *)dOut), ((UINT32)keySize), ((BYTE *)key), \ ((BYTE *)iv), ((UINT32)dInSize), ((BYTE *)dIn)) // // _cpri__SM4DecryptOFB() // // OFB encryption and decryption use the same algorithms for both. The // _cpri__SM4DecryptOFB() function is implemented as a macro call to // _cpri__SM4EncrytOFB(). // #define _cpri__SM4DecryptOFB(dOut, keySizeInBits, key, iv, dInSize, dIn) \ _cpri__SM4EncryptOFB(((BYTE *)dOut), ((UINT32)keySizeInBits), ((BYTE *)key), \ ((BYTE *)iv), ((UINT32)dInSize), ((BYTE *)dIn)) LIB_EXPORT CRYPT_RESULT _cpri__AESEncryptCBC( BYTE *dOut, // OUT: UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in bytes is // (keySizeInBits + 7) / 8 BYTE *iv, // IN/OUT: IV for decryption. UINT32 dInSize, // IN: data size (is required to be a multiple of 16 bytes) BYTE *dIn // IN: data buffer ); LIB_EXPORT CRYPT_RESULT _cpri__AESEncryptCFB(BYTE *dOut, // OUT: the encrypted UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in // bytes is (keySizeInBits + 7) / 8 BYTE *iv, // IN/OUT: IV for decryption. UINT32 dInSize, // IN: data size BYTE *dIn // IN: data buffer ); LIB_EXPORT CRYPT_RESULT _cpri__AESEncryptCTR(BYTE *dOut, // OUT: the encrypted data UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in // bytes is (keySizeInBits + 7) / 8 BYTE *iv, // IN/OUT: IV for decryption. UINT32 dInSize, // IN: data size BYTE *dIn // IN: data buffer ); LIB_EXPORT CRYPT_RESULT _cpri__AESEncryptECB(BYTE *dOut, // OUT: encrypted data UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in // bytes is (keySizeInBits + 7) / 8 UINT32 dInSize, // IN: data size BYTE *dIn // IN: clear text buffer ); LIB_EXPORT CRYPT_RESULT _cpri__AESEncryptOFB( BYTE *dOut, // OUT: the encrypted/decrypted data UINT32 keySizeInBits, // IN: key size in bit BYTE *key, // IN: key buffer. The size of this buffer in bytes is // (keySizeInBits + 7) / 8 BYTE *iv, // IN/OUT: IV for decryption. The size of this buffer is 16 byte UINT32 dInSize, // IN: data size BYTE *dIn // IN: data buffer ); LIB_EXPORT INT16 _cpri__GetSymmetricBlockSize( TPM_ALG_ID symmetricAlg, // IN: the symmetric algorithm UINT16 keySizeInBits // IN: the key size ); LIB_EXPORT BOOL _cpri__SymStartup(void); #endif // __TPM2_CPRISYM_FP_H