diff options
Diffstat (limited to 'roms/skiboot/libstb/tss2/ibmtpm20tss/utils/ibmtss/tsscrypto.h')
-rw-r--r-- | roms/skiboot/libstb/tss2/ibmtpm20tss/utils/ibmtss/tsscrypto.h | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/ibmtss/tsscrypto.h b/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/ibmtss/tsscrypto.h new file mode 100644 index 000000000..5bf559106 --- /dev/null +++ b/roms/skiboot/libstb/tss2/ibmtpm20tss/utils/ibmtss/tsscrypto.h @@ -0,0 +1,164 @@ +/********************************************************************************/ +/* */ +/* TSS Library Dependent Crypto Support */ +/* Written by Ken Goldman */ +/* IBM Thomas J. Watson Research Center */ +/* */ +/* (c) Copyright IBM Corporation 2015 - 2019. */ +/* */ +/* All rights reserved. */ +/* */ +/* Redistribution and use in source and binary forms, with or without */ +/* modification, are permitted provided that the following conditions are */ +/* met: */ +/* */ +/* Redistributions of source code must retain the above copyright notice, */ +/* this list of conditions and the following disclaimer. */ +/* */ +/* Redistributions in binary form must reproduce the above copyright */ +/* notice, this list of conditions and the following disclaimer in the */ +/* documentation and/or other materials provided with the distribution. */ +/* */ +/* Neither the names of the IBM Corporation nor the names of its */ +/* contributors may be used to endorse or promote products derived from */ +/* this software without specific prior written permission. */ +/* */ +/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ +/* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ +/* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */ +/* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ +/* HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ +/* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */ +/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */ +/* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */ +/* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ +/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */ +/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/********************************************************************************/ + +/* This is a semi-public header. The API should be stable, but is less guaranteed. + + It is useful for applications that need some basic crypto functions. +*/ + +#ifndef TSSCRYPTO_H +#define TSSCRYPTO_H + +#include <stdint.h> +#include <stdio.h> + +#ifndef TPM_TSS_NORSA +#include <openssl/rsa.h> +#endif +#ifndef TPM_TSS_NOECC +#include <openssl/ec.h> +#endif + +#include <ibmtss/tss.h> + +#ifdef __cplusplus +extern "C" { +#endif + + LIB_EXPORT + TPM_RC TSS_Crypto_Init(void); + + LIB_EXPORT + TPM_RC TSS_Hash_Generate_valist(TPMT_HA *digest, + va_list ap); + LIB_EXPORT + TPM_RC TSS_HMAC_Generate_valist(TPMT_HA *digest, + const TPM2B_KEY *hmacKey, + va_list ap); + LIB_EXPORT void TSS_XOR(unsigned char *out, + const unsigned char *in1, + const unsigned char *in2, + size_t length); + LIB_EXPORT + TPM_RC TSS_RandBytes(unsigned char *buffer, uint32_t size); + + LIB_EXPORT + TPM_RC TSS_RSA_padding_add_PKCS1_OAEP(unsigned char *em, uint32_t emLen, + const unsigned char *from, uint32_t fLen, + const unsigned char *p, + int plen, + TPMI_ALG_HASH halg); +#ifndef TPM_TSS_NORSA + LIB_EXPORT + void TSS_RsaFree(void *rsaKey); + + LIB_EXPORT + TPM_RC TSS_RSAPublicEncrypt(unsigned char* encrypt_data, + size_t encrypt_data_size, + const unsigned char *decrypt_data, + size_t decrypt_data_size, + unsigned char *narr, + uint32_t nbytes, + unsigned char *earr, + uint32_t ebytes, + unsigned char *p, + int pl, + TPMI_ALG_HASH halg); + /* + deprecated OpenSSL specific functions + */ +#ifndef TPM_TSS_NO_OPENSSL + + LIB_EXPORT + TPM_RC TSS_RsaNew(void **rsaKey); + + LIB_EXPORT + TPM_RC TSS_RSAGeneratePublicToken(RSA **rsa_pub_key, /* freed by caller */ + const unsigned char *narr, /* public modulus */ + uint32_t nbytes, + const unsigned char *earr, /* public exponent */ + uint32_t ebytes); +#endif /* TPM_TSS_NO_OPENSSL */ + + /* crypto library independent */ + LIB_EXPORT + TPM_RC TSS_RSAGeneratePublicTokenI(void **rsa_pub_key, /* freed by caller */ + const unsigned char *narr, /* public modulus */ + uint32_t nbytes, + const unsigned char *earr, /* public exponent */ + uint32_t ebytes); + +#endif +#ifndef TPM_TSS_NOECC + TPM_RC TSS_ECC_Salt(TPM2B_DIGEST *salt, + TPM2B_ENCRYPTED_SECRET *encryptedSalt, + TPMT_PUBLIC *publicArea); + +#endif + TPM_RC TSS_AES_GetEncKeySize(size_t *tssSessionEncKeySize); + TPM_RC TSS_AES_GetDecKeySize(size_t *tssSessionDecKeySize); + TPM_RC TSS_AES_KeyGenerate(void *tssSessionEncKey, + void *tssSessionDecKey); + TPM_RC TSS_AES_Encrypt(void *tssSessionEncKey, + unsigned char **encrypt_data, + uint32_t *encrypt_length, + const unsigned char *decrypt_data, + uint32_t decrypt_length); + TPM_RC TSS_AES_Decrypt(void *tssSessionDecKey, + unsigned char **decrypt_data, + uint32_t *decrypt_length, + const unsigned char *encrypt_data, + uint32_t encrypt_length); + TPM_RC TSS_AES_EncryptCFB(uint8_t *dOut, + uint32_t keySizeInBits, + uint8_t *key, + uint8_t *iv, + uint32_t dInSize, + uint8_t *dIn); + TPM_RC TSS_AES_DecryptCFB(uint8_t *dOut, + uint32_t keySizeInBits, + uint8_t *key, + uint8_t *iv, + uint32_t dInSize, + uint8_t *dIn); + +#ifdef __cplusplus +} +#endif + +#endif |