11#ifndef MBEDTLS_PK_INTERNAL_H
12#define MBEDTLS_PK_INTERNAL_H
16#if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
20#if defined(MBEDTLS_PSA_CRYPTO_CLIENT)
24#define PSA_PK_TO_MBEDTLS_ERR(status) psa_pk_status_to_mbedtls(status)
25#define PSA_PK_RSA_TO_MBEDTLS_ERR(status) PSA_TO_MBEDTLS_ERR_LIST(status, \
26 psa_to_pk_rsa_errors, \
27 psa_pk_status_to_mbedtls)
28#define PSA_PK_ECDSA_TO_MBEDTLS_ERR(status) PSA_TO_MBEDTLS_ERR_LIST(status, \
29 psa_to_pk_ecdsa_errors, \
30 psa_pk_status_to_mbedtls)
34#define PEM_BEGIN_PUBLIC_KEY "-----BEGIN PUBLIC KEY-----"
35#define PEM_END_PUBLIC_KEY "-----END PUBLIC KEY-----"
36#define PEM_BEGIN_PRIVATE_KEY_RSA "-----BEGIN RSA PRIVATE KEY-----"
37#define PEM_END_PRIVATE_KEY_RSA "-----END RSA PRIVATE KEY-----"
38#define PEM_BEGIN_PUBLIC_KEY_RSA "-----BEGIN RSA PUBLIC KEY-----"
39#define PEM_END_PUBLIC_KEY_RSA "-----END RSA PUBLIC KEY-----"
40#define PEM_BEGIN_PRIVATE_KEY_EC "-----BEGIN EC PRIVATE KEY-----"
41#define PEM_END_PRIVATE_KEY_EC "-----END EC PRIVATE KEY-----"
42#define PEM_BEGIN_PRIVATE_KEY_PKCS8 "-----BEGIN PRIVATE KEY-----"
43#define PEM_END_PRIVATE_KEY_PKCS8 "-----END PRIVATE KEY-----"
44#define PEM_BEGIN_ENCRYPTED_PRIVATE_KEY_PKCS8 "-----BEGIN ENCRYPTED PRIVATE KEY-----"
45#define PEM_END_ENCRYPTED_PRIVATE_KEY_PKCS8 "-----END ENCRYPTED PRIVATE KEY-----"
47#if defined(MBEDTLS_PK_HAVE_ECC_KEYS) && !defined(MBEDTLS_PK_USE_PSA_EC_DATA)
85#if defined(MBEDTLS_PK_HAVE_ECC_KEYS)
90#if defined(MBEDTLS_USE_PSA_CRYPTO)
99 opaque_key_type = psa_get_key_type(&opaque_attrs);
101 id = mbedtls_ecc_group_from_psa(curve, psa_get_key_bits(&opaque_attrs));
106#if defined(MBEDTLS_PK_USE_PSA_EC_DATA)
107 id = mbedtls_ecc_group_from_psa(pk->ec_family, pk->ec_bits);
109 id = mbedtls_pk_ec_ro(*pk)->grp.id;
117#if defined(MBEDTLS_ECP_HAVE_CURVE25519) || defined(MBEDTLS_ECP_HAVE_CURVE448)
118#define MBEDTLS_PK_HAVE_RFC8410_CURVES
121#define MBEDTLS_PK_IS_RFC8410_GROUP_ID(id) \
122 ((id == MBEDTLS_ECP_DP_CURVE25519) || (id == MBEDTLS_ECP_DP_CURVE448))
128 return MBEDTLS_PK_IS_RFC8410_GROUP_ID(
id);
147int mbedtls_pk_ecc_set_key(
mbedtls_pk_context *pk,
unsigned char *key,
size_t key_len);
162int mbedtls_pk_ecc_set_pubkey(
mbedtls_pk_context *pk,
const unsigned char *pub,
size_t pub_len);
184 const unsigned char *prv,
size_t prv_len,
185 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng);
189#if defined(MBEDTLS_ECDSA_DETERMINISTIC)
190#define MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET PSA_ALG_DETERMINISTIC_ECDSA
192#define MBEDTLS_PK_PSA_ALG_ECDSA_MAYBE_DET PSA_ALG_ECDSA
195#if defined(MBEDTLS_TEST_HOOKS)
198 unsigned char *key,
size_t keylen,
199 const unsigned char *pwd,
size_t pwdlen,
200 int (*f_rng)(
void *,
unsigned char *,
size_t),
void *p_rng);
203#if defined(MBEDTLS_FS_IO)
204int mbedtls_pk_load_file(
const char *
path,
unsigned char **buf,
size_t *n);
Platform Security Architecture cryptography module.
#define NULL
Definition actypes.h:561
#define MBEDTLS_STATIC_TESTABLE
Definition common.h:48
This file provides an API for Elliptic Curves over GF(P) (ECP).
mbedtls_ecp_group_id
Definition ecp.h:102
@ MBEDTLS_ECP_DP_NONE
Definition ecp.h:103
void psa_reset_key_attributes(psa_key_attributes_t *attributes)
#define PSA_KEY_ATTRIBUTES_INIT
Definition crypto_struct.h:323
psa_status_t psa_get_key_attributes(mbedtls_svc_key_id_t key, psa_key_attributes_t *attributes)
#define PSA_KEY_TYPE_ECC_GET_FAMILY(type)
Definition crypto_values.h:587
uint16_t psa_key_type_t
Encoding of a key type.
Definition crypto_types.h:78
uint8_t psa_ecc_family_t
Definition crypto_types.h:97
#define PSA_SUCCESS
Definition crypto_values.h:57
Public Key abstraction layer.
@ MBEDTLS_PK_OPAQUE
Definition pk.h:81
@ MBEDTLS_PK_ECDSA
Definition pk.h:78
@ MBEDTLS_PK_ECKEY_DH
Definition pk.h:77
@ MBEDTLS_PK_ECKEY
Definition pk.h:76
mbedtls_pk_type_t mbedtls_pk_get_type(const mbedtls_pk_context *ctx)
Get the key type.
#define MBEDTLS_PRIVATE(member)
Definition private_access.h:15
Internal utility functions for use of PSA Crypto.
The ECP key-pair structure.
Definition ecp.h:428
Public key container.
Definition pk.h:220
Definition crypto_struct.h:295