blob: cfd840cecf50dc062a1004f8fd73e5a43fb07f1f [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*******************************************************************************
* Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
* All rights reserved.
******************************************************************************/
#ifndef FAPI_CRYPTO_H
#define FAPI_CRYPTO_H
#include "fapi_int.h"
TSS2_RC
ifapi_get_profile_sig_scheme(
const IFAPI_PROFILE *profile,
const TPMT_PUBLIC *tpmPublic,
TPMT_SIG_SCHEME *signatureScheme);
TSS2_RC
ifapi_der_sig_to_tpm(
const TPMT_PUBLIC *tpmPublic,
const unsigned char *signature,
size_t signatureSize,
TPMI_ALG_HASH hashAlgorithm,
TPMT_SIGNATURE *tpmSignature);
TSS2_RC
ifapi_tpm_ecc_sig_to_der(
const TPMT_SIGNATURE *tpmSignature,
uint8_t **signature,
size_t *signatureSize);
TSS2_RC
ifapi_pub_pem_key_from_tpm(
const TPM2B_PUBLIC *tpmPublicKey,
char **pemKey,
int *pemKeySize);
TSS2_RC
ifapi_verify_signature(
const IFAPI_OBJECT *keyObject,
const uint8_t *signature,
size_t signatureSize,
const uint8_t *digest,
size_t digestSize);
TSS2_RC
ifapi_verify_signature_quote(
const IFAPI_OBJECT *keyObject,
const uint8_t *signature,
size_t signatureSize,
const uint8_t *digest,
size_t digestSize,
const TPMT_SIG_SCHEME *signatureScheme);
typedef struct _IFAPI_CRYPTO_CONTEXT IFAPI_CRYPTO_CONTEXT_BLOB;
TSS2_RC
ifapi_crypto_hash_start(
IFAPI_CRYPTO_CONTEXT_BLOB **context,
TPM2_ALG_ID hashAlgorithm);
TSS2_RC
ifapi_crypto_hash_update(
IFAPI_CRYPTO_CONTEXT_BLOB *context,
const uint8_t *buffer,
size_t size);
TSS2_RC
ifapi_crypto_hash_finish(
IFAPI_CRYPTO_CONTEXT_BLOB **context,
uint8_t *digest,
size_t *digestSize);
void
ifapi_crypto_hash_abort(
IFAPI_CRYPTO_CONTEXT_BLOB **context);
TSS2_RC
ifapi_cert_to_pem(
const uint8_t *certBuffer,
size_t certBufferSize,
char **pemCert,
TPM2_ALG_ID *certAlgorithmId,
TPM2B_PUBLIC *tpmPublic);
size_t
ifapi_hash_get_digest_size(
TPM2_ALG_ID hashAlgorithm);
TSS2_RC
ifapi_get_tpm2b_public_from_pem(
const char *pemKey,
TPM2B_PUBLIC *tpmPublic);
TSS2_RC
ifapi_get_hash_alg_for_size(
uint16_t size,
TPMI_ALG_HASH *hashAlgorithm);
TSS2_RC
ifapi_get_public_from_pem_cert(
const char* pem_cert,
TPM2B_PUBLIC *tpm_public);
TSS2_RC
ifapi_initialize_sign_public(
TPM2_ALG_ID signatureAlgorithm,
TPM2B_PUBLIC *template);
TPM2_ALG_ID
ifapi_get_signature_algorithm_from_pem(
const char *pemKey);
TSS2_RC
ifapi_verify_ek_cert(
char* root_cert_pem,
char* intermed_cert_pem,
char* ek_cert_pem);
TSS2_RC
ifapi_get_tpm_key_fingerprint(
const TPM2B_PUBLIC *tpmPublicKey,
TPMI_ALG_HASH hashAlg,
TPM2B_DIGEST *fingerprint);
#endif /* FAPI_CRYPTO_H */