tpm2-tss 4.1.3
TPM Software stack 2.0 TCG spec compliant implementation
fapi_crypto.h
1/* SPDX-License-Identifier: BSD-2-Clause */
2/*******************************************************************************
3 * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
4 * All rights reserved.
5 ******************************************************************************/
6#ifndef FAPI_CRYPTO_H
7#define FAPI_CRYPTO_H
8
9#include "fapi_int.h"
10
11TSS2_RC
12ifapi_get_profile_sig_scheme(
13 const IFAPI_PROFILE *profile,
14 const TPMT_PUBLIC *tpmPublic,
15 TPMT_SIG_SCHEME *signatureScheme);
16
17TSS2_RC
18ifapi_der_sig_to_tpm(
19 const TPMT_PUBLIC *tpmPublic,
20 const unsigned char *signature,
21 size_t signatureSize,
22 TPMI_ALG_HASH hashAlgorithm,
23 TPMT_SIGNATURE *tpmSignature);
24
25TSS2_RC
26ifapi_tpm_ecc_sig_to_der(
27 const TPMT_SIGNATURE *tpmSignature,
28 uint8_t **signature,
29 size_t *signatureSize);
30
31TSS2_RC
32ifapi_pub_pem_key_from_tpm(
33 const TPM2B_PUBLIC *tpmPublicKey,
34 char **pemKey,
35 int *pemKeySize);
36
37TSS2_RC
38ifapi_verify_signature(
39 const IFAPI_OBJECT *keyObject,
40 const uint8_t *signature,
41 size_t signatureSize,
42 const uint8_t *digest,
43 size_t digestSize);
44
45TSS2_RC
46ifapi_verify_signature_quote(
47 const IFAPI_OBJECT *keyObject,
48 const uint8_t *signature,
49 size_t signatureSize,
50 const uint8_t *digest,
51 size_t digestSize,
52 const TPMT_SIG_SCHEME *signatureScheme);
53
54
56
57TSS2_RC
58ifapi_crypto_hash_start(
60 TPM2_ALG_ID hashAlgorithm);
61
62TSS2_RC
63ifapi_crypto_hash_update(
65 const uint8_t *buffer,
66 size_t size);
67
68TSS2_RC
69ifapi_crypto_hash_finish(
71 uint8_t *digest,
72 size_t *digestSize);
73
74void
75ifapi_crypto_hash_abort(
77
78TSS2_RC
79ifapi_cert_to_pem(
80 const uint8_t *certBuffer,
81 size_t certBufferSize,
82 char **pemCert,
83 TPM2_ALG_ID *certAlgorithmId,
84 TPM2B_PUBLIC *tpmPublic);
85
86size_t
87ifapi_hash_get_digest_size(
88 TPM2_ALG_ID hashAlgorithm);
89
90TSS2_RC
91ifapi_get_tpm2b_public_from_pem(
92 const char *pemKey,
93 TPM2B_PUBLIC *tpmPublic);
94
95TSS2_RC
96ifapi_get_hash_alg_for_size(
97 uint16_t size,
98 TPMI_ALG_HASH *hashAlgorithm);
99
100TSS2_RC
101ifapi_get_public_from_pem_cert(
102 const char* pem_cert,
103 TPM2B_PUBLIC *tpm_public);
104
105TSS2_RC
106ifapi_initialize_sign_public(
107 TPM2_ALG_ID signatureAlgorithm,
108 TPM2B_PUBLIC *template);
109
110TPM2_ALG_ID
111ifapi_get_signature_algorithm_from_pem(
112 const char *pemKey);
113
114TSS2_RC
115ifapi_get_tpm_key_fingerprint(
116 const TPM2B_PUBLIC *tpmPublicKey,
117 TPMI_ALG_HASH hashAlg,
118 TPM2B_DIGEST *fingerprint);
119
120TSS2_RC
121ifapi_base64encode(
122 uint8_t *buffer,
123 size_t buffer_size,
124 char** b64_data);
125
126TSS2_RC
127ifapi_rsa_encrypt(
128 const char *pem_key,
129 const TPMT_RSA_DECRYPT *rsa_decrypt_scheme,
130 const uint8_t *plainText,
131 size_t plainTextSize,
132 uint8_t **cipherText,
133 size_t *cipherTextSize);
134
135TSS2_RC
136ifapi_openssl_load_private(
137 const char *pem_key,
138 const char *passin,
139 const char *object_auth,
140 TPM2B_PUBLIC *template,
141 TPM2B_PUBLIC *pub,
142 TPM2B_SENSITIVE *priv);
143
144#endif /* FAPI_CRYPTO_H */
Definition fapi_crypto.c:48
Definition ifapi_keystore.h:150
Definition ifapi_profiles.h:15