Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Embed: (wiki syntax)

« Back to documentation index

pk.h File Reference

pk.h File Reference

Public Key abstraction layer. More...

Go to the source code of this file.

Data Structures

struct  mbedtls_pk_rsassa_pss_options
 Options for RSASSA-PSS signature verification. More...
struct  mbedtls_pk_debug_item
 Item to send to the debug module. More...
struct  mbedtls_pk_context
 Public key container. More...
struct  mbedtls_pk_restart_ctx
 Context for resuming operations. More...

Typedefs

typedef struct
mbedtls_pk_rsassa_pss_options 
mbedtls_pk_rsassa_pss_options
 Options for RSASSA-PSS signature verification.
typedef struct
mbedtls_pk_debug_item 
mbedtls_pk_debug_item
 Item to send to the debug module.
typedef struct mbedtls_pk_info_t mbedtls_pk_info_t
 Public key information and operations.
typedef struct mbedtls_pk_context mbedtls_pk_context
 Public key container.
typedef int(* mbedtls_pk_rsa_alt_decrypt_func )(void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)
 Types for RSA-alt abstraction.

Enumerations

enum  mbedtls_pk_type_t
 

Public key types.

More...
enum  mbedtls_pk_debug_type
 

Types for interfacing with the debug module.

More...

Functions

static mbedtls_rsa_contextmbedtls_pk_rsa (const mbedtls_pk_context pk)
 Quick access to an RSA context inside a PK context.
static mbedtls_ecp_keypairmbedtls_pk_ec (const mbedtls_pk_context pk)
 Quick access to an EC context inside a PK context.
const mbedtls_pk_info_tmbedtls_pk_info_from_type (mbedtls_pk_type_t pk_type)
 Return information associated with the given PK type.
void mbedtls_pk_init (mbedtls_pk_context *ctx)
 Initialize a mbedtls_pk_context (as NONE).
void mbedtls_pk_free (mbedtls_pk_context *ctx)
 Free the components of a mbedtls_pk_context.
void mbedtls_pk_restart_init (mbedtls_pk_restart_ctx *ctx)
 Initialize a restart context.
void mbedtls_pk_restart_free (mbedtls_pk_restart_ctx *ctx)
 Free the components of a restart context.
int mbedtls_pk_setup (mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info)
 Initialize a PK context with the information given and allocates the type-specific PK subcontext.
int mbedtls_pk_setup_opaque (mbedtls_pk_context *ctx, const psa_key_handle_t key)
 Initialize a PK context to wrap a PSA key.
int mbedtls_pk_setup_rsa_alt (mbedtls_pk_context *ctx, void *key, mbedtls_pk_rsa_alt_decrypt_func decrypt_func, mbedtls_pk_rsa_alt_sign_func sign_func, mbedtls_pk_rsa_alt_key_len_func key_len_func)
 Initialize an RSA-alt context.
size_t mbedtls_pk_get_bitlen (const mbedtls_pk_context *ctx)
 Get the size in bits of the underlying key.
static size_t mbedtls_pk_get_len (const mbedtls_pk_context *ctx)
 Get the length in bytes of the underlying key.
int mbedtls_pk_can_do (const mbedtls_pk_context *ctx, mbedtls_pk_type_t type)
 Tell if a context can do the operation given by type.
int mbedtls_pk_verify (mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len)
 Verify signature (including padding if relevant).
int mbedtls_pk_verify_restartable (mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len, mbedtls_pk_restart_ctx *rs_ctx)
 Restartable version of mbedtls_pk_verify()
int mbedtls_pk_verify_ext (mbedtls_pk_type_t type, const void *options, mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len)
 Verify signature, with options.
int mbedtls_pk_sign (mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Make signature, including padding if relevant.
int mbedtls_pk_sign_restartable (mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, const unsigned char *hash, size_t hash_len, unsigned char *sig, size_t *sig_len, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng, mbedtls_pk_restart_ctx *rs_ctx)
 Restartable version of mbedtls_pk_sign()
int mbedtls_pk_decrypt (mbedtls_pk_context *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Decrypt message (including padding if relevant).
int mbedtls_pk_encrypt (mbedtls_pk_context *ctx, const unsigned char *input, size_t ilen, unsigned char *output, size_t *olen, size_t osize, int(*f_rng)(void *, unsigned char *, size_t), void *p_rng)
 Encrypt message (including padding if relevant).
int mbedtls_pk_check_pair (const mbedtls_pk_context *pub, const mbedtls_pk_context *prv)
 Check if a public-private pair of keys matches.
int mbedtls_pk_debug (const mbedtls_pk_context *ctx, mbedtls_pk_debug_item *items)
 Export debug information.
const char * mbedtls_pk_get_name (const mbedtls_pk_context *ctx)
 Access the type name.
mbedtls_pk_type_t mbedtls_pk_get_type (const mbedtls_pk_context *ctx)
 Get the key type.
int mbedtls_pk_parse_key (mbedtls_pk_context *ctx, const unsigned char *key, size_t keylen, const unsigned char *pwd, size_t pwdlen)
 Parse a private key in PEM or DER format.
int mbedtls_pk_parse_public_key (mbedtls_pk_context *ctx, const unsigned char *key, size_t keylen)
 Parse a public key in PEM or DER format.
int mbedtls_pk_parse_keyfile (mbedtls_pk_context *ctx, const char *path, const char *password)
 Load and parse a private key.
int mbedtls_pk_parse_public_keyfile (mbedtls_pk_context *ctx, const char *path)
 Load and parse a public key.
int mbedtls_pk_write_key_der (mbedtls_pk_context *ctx, unsigned char *buf, size_t size)
 Write a private key to a PKCS#1 or SEC1 DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.
int mbedtls_pk_write_pubkey_der (mbedtls_pk_context *ctx, unsigned char *buf, size_t size)
 Write a public key to a SubjectPublicKeyInfo DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.
int mbedtls_pk_write_pubkey_pem (mbedtls_pk_context *ctx, unsigned char *buf, size_t size)
 Write a public key to a PEM string.
int mbedtls_pk_write_key_pem (mbedtls_pk_context *ctx, unsigned char *buf, size_t size)
 Write a private key to a PKCS#1 or SEC1 PEM string.
int mbedtls_pk_parse_subpubkey (unsigned char **p, const unsigned char *end, mbedtls_pk_context *pk)
 Parse a SubjectPublicKeyInfo DER structure.
int mbedtls_pk_write_pubkey (unsigned char **p, unsigned char *start, const mbedtls_pk_context *key)
 Write a subjectPublicKey to ASN.1 data Note: function works backwards in data buffer.
int mbedtls_pk_wrap_as_opaque (mbedtls_pk_context *pk, psa_key_handle_t *handle, psa_algorithm_t hash_alg)
 Turn an EC key into an opaque one.

Detailed Description

Public Key abstraction layer.

Definition in file pk.h.


Typedef Documentation

Public key container.

Item to send to the debug module.

Public key information and operations.

Definition at line 130 of file pk.h.

typedef int(* mbedtls_pk_rsa_alt_decrypt_func)(void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len)

Types for RSA-alt abstraction.

Definition at line 185 of file pk.h.

Options for RSASSA-PSS signature verification.

See mbedtls_rsa_rsassa_pss_verify_ext()


Enumeration Type Documentation

Types for interfacing with the debug module.

Definition at line 107 of file pk.h.

Public key types.

Definition at line 82 of file pk.h.


Function Documentation

int mbedtls_pk_can_do ( const mbedtls_pk_context ctx,
mbedtls_pk_type_t  type 
)

Tell if a context can do the operation given by type.

Parameters:
ctxThe context to query. It must have been initialized.
typeThe desired type.
Returns:
1 if the context can do operations on the given type.
0 if the context cannot do the operations on the given type. This is always the case for a context that has been initialized but not set up, or that has been cleared with mbedtls_pk_free().

Definition at line 224 of file pk.c.

int mbedtls_pk_check_pair ( const mbedtls_pk_context pub,
const mbedtls_pk_context prv 
)

Check if a public-private pair of keys matches.

Parameters:
pubContext holding a public key.
prvContext holding a private (and public) key.
Returns:
0 on success (keys were checked and match each other).
MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the keys could not be checked - in that case they may or may not match.
MBEDTLS_ERR_PK_BAD_INPUT_DATA if a context is invalid.
Another non-zero value if the keys do not match.

Definition at line 508 of file pk.c.

int mbedtls_pk_debug ( const mbedtls_pk_context ctx,
mbedtls_pk_debug_item items 
)

Export debug information.

Parameters:
ctxThe PK context to use. It must have been initialized.
itemsPlace to write debug items
Returns:
0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA

Definition at line 552 of file pk.c.

int mbedtls_pk_decrypt ( mbedtls_pk_context ctx,
const unsigned char *  input,
size_t  ilen,
unsigned char *  output,
size_t *  olen,
size_t  osize,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Decrypt message (including padding if relevant).

Parameters:
ctxThe PK context to use. It must have been set up with a private key.
inputInput to decrypt
ilenInput size
outputDecrypted output
olenDecrypted message length
osizeSize of the output buffer
f_rngRNG function
p_rngRNG parameter
Note:
For RSA keys, the default padding type is PKCS#1 v1.5.
Returns:
0 on success, or a specific error code.

Definition at line 462 of file pk.c.

static mbedtls_ecp_keypair* mbedtls_pk_ec ( const mbedtls_pk_context  pk ) [static]

Quick access to an EC context inside a PK context.

Warning:
You must make sure the PK context actually holds an EC context before using this function!

Definition at line 175 of file pk.h.

int mbedtls_pk_encrypt ( mbedtls_pk_context ctx,
const unsigned char *  input,
size_t  ilen,
unsigned char *  output,
size_t *  olen,
size_t  osize,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Encrypt message (including padding if relevant).

Parameters:
ctxThe PK context to use. It must have been set up.
inputMessage to encrypt
ilenMessage size
outputEncrypted output
olenEncrypted output length
osizeSize of the output buffer
f_rngRNG function
p_rngRNG parameter
Note:
For RSA keys, the default padding type is PKCS#1 v1.5.
Returns:
0 on success, or a specific error code.

Definition at line 485 of file pk.c.

void mbedtls_pk_free ( mbedtls_pk_context ctx )

Free the components of a mbedtls_pk_context.

Parameters:
ctxThe context to clear. It must have been initialized. If this is NULL, this function does nothing.
Note:
For contexts that have been set up with mbedtls_pk_setup_opaque(), this does not free the underlying PSA key and you still need to call psa_destroy_key() independently if you want to destroy that key.

Definition at line 71 of file pk.c.

size_t mbedtls_pk_get_bitlen ( const mbedtls_pk_context ctx )

Get the size in bits of the underlying key.

Parameters:
ctxThe context to query. It must have been initialized.
Returns:
Key size in bits, or 0 on error

Definition at line 539 of file pk.c.

static size_t mbedtls_pk_get_len ( const mbedtls_pk_context ctx ) [static]

Get the length in bytes of the underlying key.

Parameters:
ctxThe context to query. It must have been initialized.
Returns:
Key length in bytes, or 0 on error

Definition at line 330 of file pk.h.

const char* mbedtls_pk_get_name ( const mbedtls_pk_context ctx )

Access the type name.

Parameters:
ctxThe PK context to use. It must have been initialized.
Returns:
Type name on success, or "invalid PK"

Definition at line 568 of file pk.c.

mbedtls_pk_type_t mbedtls_pk_get_type ( const mbedtls_pk_context ctx )

Get the key type.

Parameters:
ctxThe PK context to use. It must have been initialized.
Returns:
Type on success.
MBEDTLS_PK_NONE for a context that has not been set up.

Definition at line 579 of file pk.c.

const mbedtls_pk_info_t* mbedtls_pk_info_from_type ( mbedtls_pk_type_t  pk_type )

Return information associated with the given PK type.

Parameters:
pk_typePK type to search for.
Returns:
The PK info associated with the type or NULL if not found.

Definition at line 114 of file pk.c.

void mbedtls_pk_init ( mbedtls_pk_context ctx )

Initialize a mbedtls_pk_context (as NONE).

Parameters:
ctxThe context to initialize. This must not be NULL.

Definition at line 60 of file pk.c.

int mbedtls_pk_parse_key ( mbedtls_pk_context ctx,
const unsigned char *  key,
size_t  keylen,
const unsigned char *  pwd,
size_t  pwdlen 
)

Parse a private key in PEM or DER format.

Parameters:
ctxThe PK context to fill. It must have been initialized but not set up.
keyInput buffer to parse. The buffer must contain the input exactly, with no extra trailing material. For PEM, the buffer must contain a null-terminated string.
keylenSize of key in bytes. For PEM data, this includes the terminating null byte, so keylen must be equal to `strlen(key) + 1`.
pwdOptional password for decryption. Pass NULL if expecting a non-encrypted key. Pass a string of pwdlen bytes if expecting an encrypted key; a non-encrypted key will also be accepted. The empty password is not supported.
pwdlenSize of the password in bytes. Ignored if pwd is NULL.
Note:
On entry, ctx must be empty, either freshly initialised with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a specific key type, check the result with mbedtls_pk_can_do().
The key is also checked for correctness.
Returns:
0 if successful, or a specific PK or PEM error code

Definition at line 1163 of file pkparse.c.

int mbedtls_pk_parse_keyfile ( mbedtls_pk_context ctx,
const char *  path,
const char *  password 
)

Load and parse a private key.

Parameters:
ctxThe PK context to fill. It must have been initialized but not set up.
pathfilename to read the private key from
passwordOptional password to decrypt the file. Pass NULL if expecting a non-encrypted key. Pass a null-terminated string if expecting an encrypted key; a non-encrypted key will also be accepted. The empty password is not supported.
Note:
On entry, ctx must be empty, either freshly initialised with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a specific key type, check the result with mbedtls_pk_can_do().
The key is also checked for correctness.
Returns:
0 if successful, or a specific PK or PEM error code

Definition at line 130 of file pkparse.c.

int mbedtls_pk_parse_public_key ( mbedtls_pk_context ctx,
const unsigned char *  key,
size_t  keylen 
)

Parse a public key in PEM or DER format.

Parameters:
ctxThe PK context to fill. It must have been initialized but not set up.
keyInput buffer to parse. The buffer must contain the input exactly, with no extra trailing material. For PEM, the buffer must contain a null-terminated string.
keylenSize of key in bytes. For PEM data, this includes the terminating null byte, so keylen must be equal to `strlen(key) + 1`.
Note:
On entry, ctx must be empty, either freshly initialised with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a specific key type, check the result with mbedtls_pk_can_do().
The key is also checked for correctness.
Returns:
0 if successful, or a specific PK or PEM error code

Definition at line 1376 of file pkparse.c.

int mbedtls_pk_parse_public_keyfile ( mbedtls_pk_context ctx,
const char *  path 
)

Load and parse a public key.

Parameters:
ctxThe PK context to fill. It must have been initialized but not set up.
pathfilename to read the public key from
Note:
On entry, ctx must be empty, either freshly initialised with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a specific key type, check the result with mbedtls_pk_can_do().
The key is also checked for correctness.
Returns:
0 if successful, or a specific PK or PEM error code

Definition at line 158 of file pkparse.c.

int mbedtls_pk_parse_subpubkey ( unsigned char **  p,
const unsigned char *  end,
mbedtls_pk_context pk 
)

Parse a SubjectPublicKeyInfo DER structure.

Parameters:
pthe position in the ASN.1 data
endend of the buffer
pkThe PK context to fill. It must have been initialized but not set up.
Returns:
0 if successful, or a specific PK error code

Definition at line 615 of file pkparse.c.

void mbedtls_pk_restart_free ( mbedtls_pk_restart_ctx ctx )

Free the components of a restart context.

Parameters:
ctxThe context to clear. It must have been initialized. If this is NULL, this function does nothing.

Definition at line 96 of file pk.c.

void mbedtls_pk_restart_init ( mbedtls_pk_restart_ctx ctx )

Initialize a restart context.

Parameters:
ctxThe context to initialize. This must not be NULL.

Definition at line 86 of file pk.c.

static mbedtls_rsa_context* mbedtls_pk_rsa ( const mbedtls_pk_context  pk ) [static]

Quick access to an RSA context inside a PK context.

Warning:
You must make sure the PK context actually holds an RSA context before using this function!

Definition at line 162 of file pk.h.

int mbedtls_pk_setup ( mbedtls_pk_context ctx,
const mbedtls_pk_info_t info 
)

Initialize a PK context with the information given and allocates the type-specific PK subcontext.

Parameters:
ctxContext to initialize. It must not have been set up yet (type MBEDTLS_PK_NONE).
infoInformation to use
Returns:
0 on success, MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input, MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure.
Note:
For contexts holding an RSA-alt key, use mbedtls_pk_setup_rsa_alt() instead.

Definition at line 140 of file pk.c.

int mbedtls_pk_setup_opaque ( mbedtls_pk_context ctx,
const psa_key_handle_t  key 
)

Initialize a PK context to wrap a PSA key.

Note:
This function replaces mbedtls_pk_setup() for contexts that wrap a (possibly opaque) PSA key instead of storing and manipulating the key material directly.
Parameters:
ctxThe context to initialize. It must be empty (type NONE).
keyThe PSA key to wrap, which must hold an ECC key pair (see notes below).
Note:
The wrapped key must remain valid as long as the wrapping PK context is in use, that is at least between the point this function is called and the point mbedtls_pk_free() is called on this context. The wrapped key might then be independently used or destroyed.
This function is currently only available for ECC key pairs (that is, ECC keys containing private key material). Support for other key types may be added later.
Returns:
0 on success.
MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input (context already used, invalid key handle).
MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the key is not an ECC key pair.
MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure.

Definition at line 158 of file pk.c.

int mbedtls_pk_setup_rsa_alt ( mbedtls_pk_context ctx,
void *  key,
mbedtls_pk_rsa_alt_decrypt_func  decrypt_func,
mbedtls_pk_rsa_alt_sign_func  sign_func,
mbedtls_pk_rsa_alt_key_len_func  key_len_func 
)

Initialize an RSA-alt context.

Parameters:
ctxContext to initialize. It must not have been set up yet (type MBEDTLS_PK_NONE).
keyRSA key pointer
decrypt_funcDecryption function
sign_funcSigning function
key_len_funcFunction returning key length in bytes
Returns:
0 on success, or MBEDTLS_ERR_PK_BAD_INPUT_DATA if the context wasn't already initialized as RSA_ALT.
Note:
This function replaces mbedtls_pk_setup() for RSA-alt.

Definition at line 193 of file pk.c.

int mbedtls_pk_sign ( mbedtls_pk_context ctx,
mbedtls_md_type_t  md_alg,
const unsigned char *  hash,
size_t  hash_len,
unsigned char *  sig,
size_t *  sig_len,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng 
)

Make signature, including padding if relevant.

Parameters:
ctxThe PK context to use. It must have been set up with a private key.
md_algHash algorithm used (see notes)
hashHash of the message to sign
hash_lenHash length or 0 (see notes)
sigPlace to write the signature
sig_lenNumber of bytes written
f_rngRNG function
p_rngRNG parameter
Returns:
0 on success, or a specific error code.
Note:
For RSA keys, the default padding type is PKCS#1 v1.5. There is no interface in the PK module to make RSASSA-PSS signatures yet.
If hash_len is 0, then the length associated with md_alg is used instead, or an error returned if it is invalid.
For RSA, md_alg may be MBEDTLS_MD_NONE if hash_len != 0. For ECDSA, md_alg may never be MBEDTLS_MD_NONE.

Definition at line 450 of file pk.c.

int mbedtls_pk_sign_restartable ( mbedtls_pk_context ctx,
mbedtls_md_type_t  md_alg,
const unsigned char *  hash,
size_t  hash_len,
unsigned char *  sig,
size_t *  sig_len,
int(*)(void *, unsigned char *, size_t)  f_rng,
void *  p_rng,
mbedtls_pk_restart_ctx rs_ctx 
)

Restartable version of mbedtls_pk_sign()

Note:
Performs the same job as mbedtls_pk_sign(), but can return early and restart according to the limit set with mbedtls_ecp_set_max_ops() to reduce blocking for ECC operations. For RSA, same as mbedtls_pk_sign().
Parameters:
ctxThe PK context to use. It must have been set up with a private key.
md_algHash algorithm used (see notes)
hashHash of the message to sign
hash_lenHash length or 0 (see notes)
sigPlace to write the signature
sig_lenNumber of bytes written
f_rngRNG function
p_rngRNG parameter
rs_ctxRestart context (NULL to disable restart)
Returns:
See mbedtls_pk_sign(), or
MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of operations was reached: see mbedtls_ecp_set_max_ops().

Definition at line 401 of file pk.c.

int mbedtls_pk_verify ( mbedtls_pk_context ctx,
mbedtls_md_type_t  md_alg,
const unsigned char *  hash,
size_t  hash_len,
const unsigned char *  sig,
size_t  sig_len 
)

Verify signature (including padding if relevant).

Parameters:
ctxThe PK context to use. It must have been set up.
md_algHash algorithm used (see notes)
hashHash of the message to sign
hash_lenHash length or 0 (see notes)
sigSignature to verify
sig_lenSignature length
Returns:
0 on success (signature is valid), MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if there is a valid signature in sig but its length is less than siglen, or a specific error code.
Note:
For RSA keys, the default padding type is PKCS#1 v1.5. Use mbedtls_pk_verify_ext( MBEDTLS_PK_RSASSA_PSS, ... ) to verify RSASSA_PSS signatures.
If hash_len is 0, then the length associated with md_alg is used instead, or an error returned if it is invalid.
md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0

Definition at line 327 of file pk.c.

int mbedtls_pk_verify_ext ( mbedtls_pk_type_t  type,
const void *  options,
mbedtls_pk_context ctx,
mbedtls_md_type_t  md_alg,
const unsigned char *  hash,
size_t  hash_len,
const unsigned char *  sig,
size_t  sig_len 
)

Verify signature, with options.

(Includes verification of the padding depending on type.)

Parameters:
typeSignature type (inc. possible padding type) to verify
optionsPointer to type-specific options, or NULL
ctxThe PK context to use. It must have been set up.
md_algHash algorithm used (see notes)
hashHash of the message to sign
hash_lenHash length or 0 (see notes)
sigSignature to verify
sig_lenSignature length
Returns:
0 on success (signature is valid), MBEDTLS_ERR_PK_TYPE_MISMATCH if the PK context can't be used for this type of signatures, MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if there is a valid signature in sig but its length is less than siglen, or a specific error code.
Note:
If hash_len is 0, then the length associated with md_alg is used instead, or an error returned if it is invalid.
md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0
If type is MBEDTLS_PK_RSASSA_PSS, then options must point to a mbedtls_pk_rsassa_pss_options structure, otherwise it must be NULL.

Definition at line 338 of file pk.c.

int mbedtls_pk_verify_restartable ( mbedtls_pk_context ctx,
mbedtls_md_type_t  md_alg,
const unsigned char *  hash,
size_t  hash_len,
const unsigned char *  sig,
size_t  sig_len,
mbedtls_pk_restart_ctx rs_ctx 
)

Restartable version of mbedtls_pk_verify()

Note:
Performs the same job as mbedtls_pk_verify(), but can return early and restart according to the limit set with mbedtls_ecp_set_max_ops() to reduce blocking for ECC operations. For RSA, same as mbedtls_pk_verify().
Parameters:
ctxThe PK context to use. It must have been set up.
md_algHash algorithm used (see notes)
hashHash of the message to sign
hash_lenHash length or 0 (see notes)
sigSignature to verify
sig_lenSignature length
rs_ctxRestart context (NULL to disable restart)
Returns:
See mbedtls_pk_verify(), or
MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of operations was reached: see mbedtls_ecp_set_max_ops().

Definition at line 279 of file pk.c.

int mbedtls_pk_wrap_as_opaque ( mbedtls_pk_context pk,
psa_key_handle_t handle,
psa_algorithm_t  hash_alg 
)

Turn an EC key into an opaque one.

Warning:
This is a temporary utility function for tests. It might change or be removed at any time without notice.
Note:
Only ECDSA keys are supported so far. Signing with the specified hash is the only allowed use of that key.
Parameters:
pkInput: the EC key to import to a PSA key. Output: a PK context wrapping that PSA key.
handleOutput: a PSA key handle. It's the caller's responsibility to call psa_destroy_key() on that handle after calling mbedtls_pk_free() on the PK context.
hash_algThe hash algorithm to allow for use with that key.
Returns:
0 if successful.
An Mbed TLS error code otherwise.

Definition at line 594 of file pk.c.

int mbedtls_pk_write_key_der ( mbedtls_pk_context ctx,
unsigned char *  buf,
size_t  size 
)

Write a private key to a PKCS#1 or SEC1 DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.

Parameters:
ctxPK context which must contain a valid private key.
bufbuffer to write to
sizesize of the buffer
Returns:
length of data written if successful, or a specific error code

Definition at line 294 of file pkwrite.c.

int mbedtls_pk_write_key_pem ( mbedtls_pk_context ctx,
unsigned char *  buf,
size_t  size 
)

Write a private key to a PKCS#1 or SEC1 PEM string.

Parameters:
ctxPK context which must contain a valid private key.
bufBuffer to write to. The output includes a terminating null byte.
sizeSize of the buffer in bytes.
Returns:
0 if successful, or a specific error code

Definition at line 563 of file pkwrite.c.

int mbedtls_pk_write_pubkey ( unsigned char **  p,
unsigned char *  start,
const mbedtls_pk_context key 
)

Write a subjectPublicKey to ASN.1 data Note: function works backwards in data buffer.

Parameters:
preference to current position pointer
startstart of the buffer (for bounds-checking)
keyPK context which must contain a valid public or private key.
Returns:
the length written or a negative error code

Definition at line 159 of file pkwrite.c.

int mbedtls_pk_write_pubkey_der ( mbedtls_pk_context ctx,
unsigned char *  buf,
size_t  size 
)

Write a public key to a SubjectPublicKeyInfo DER structure Note: data is written at the end of the buffer! Use the return value to determine where you should start using the buffer.

Parameters:
ctxPK context which must contain a valid public or private key.
bufbuffer to write to
sizesize of the buffer
Returns:
length of data written if successful, or a specific error code

Definition at line 208 of file pkwrite.c.

int mbedtls_pk_write_pubkey_pem ( mbedtls_pk_context ctx,
unsigned char *  buf,
size_t  size 
)

Write a public key to a PEM string.

Parameters:
ctxPK context which must contain a valid public or private key.
bufBuffer to write to. The output includes a terminating null byte.
sizeSize of the buffer in bytes.
Returns:
0 if successful, or a specific error code

Definition at line 538 of file pkwrite.c.