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