Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pk.h File Reference
Public Key abstraction layer. More...
Go to the source code of this file.
Data Structures | |
| struct | pk_debug_item |
| Item to send to the debug module. More... | |
| struct | pk_info_t |
| Public key information and operations. More... | |
| struct | pk_context |
| Public key container. More... | |
Typedefs | |
| typedef int(* | 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 | pk_type_t |
Public key types. More... | |
| enum | pk_debug_type |
Types for interfacing with the debug module. More... | |
Functions | |
| const pk_info_t * | pk_info_from_type (pk_type_t pk_type) |
| Return information associated with the given PK type. | |
| void | pk_init (pk_context *ctx) |
| Initialize a pk_context (as NONE) | |
| void | pk_free (pk_context *ctx) |
| Free a pk_context. | |
| int | pk_init_ctx (pk_context *ctx, const pk_info_t *info) |
| Initialize a PK context with the information given and allocates the type-specific PK subcontext. | |
| int | pk_init_ctx_rsa_alt (pk_context *ctx, void *key, pk_rsa_alt_decrypt_func decrypt_func, pk_rsa_alt_sign_func sign_func, pk_rsa_alt_key_len_func key_len_func) |
| Initialize an RSA-alt context. | |
| size_t | pk_get_size (const pk_context *ctx) |
| Get the size in bits of the underlying key. | |
| static size_t | pk_get_len (const pk_context *ctx) |
| Get the length in bytes of the underlying key. | |
| int | pk_can_do (pk_context *ctx, pk_type_t type) |
| Tell if a context can do the operation given by type. | |
| int | pk_verify (pk_context *ctx, md_type_t md_alg, const unsigned char *hash, size_t hash_len, const unsigned char *sig, size_t sig_len) |
| Verify signature. | |
| int | pk_sign (pk_context *ctx, 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. | |
| int | pk_decrypt (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. | |
| int | pk_encrypt (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. | |
| int | pk_debug (const pk_context *ctx, pk_debug_item *items) |
| Export debug information. | |
| const char * | pk_get_name (const pk_context *ctx) |
| Access the type name. | |
| pk_type_t | pk_get_type (const pk_context *ctx) |
| Get the key type. | |
| int | pk_parse_key (pk_context *ctx, const unsigned char *key, size_t keylen, const unsigned char *pwd, size_t pwdlen) |
| Parse a private key. | |
| int | pk_parse_public_key (pk_context *ctx, const unsigned char *key, size_t keylen) |
| Parse a public key. | |
| int | pk_parse_keyfile (pk_context *ctx, const char *path, const char *password) |
| Load and parse a private key. | |
| int | pk_parse_public_keyfile (pk_context *ctx, const char *path) |
| Load and parse a public key. | |
| int | pk_write_key_der (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 | pk_write_pubkey_der (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 | pk_write_pubkey_pem (pk_context *ctx, unsigned char *buf, size_t size) |
| Write a public key to a PEM string. | |
| int | pk_write_key_pem (pk_context *ctx, unsigned char *buf, size_t size) |
| Write a private key to a PKCS#1 or SEC1 PEM string. | |
| int | pk_parse_subpubkey (unsigned char **p, const unsigned char *end, pk_context *pk) |
| Parse a SubjectPublicKeyInfo DER structure. | |
| int | pk_write_pubkey (unsigned char **p, unsigned char *start, const pk_context *key) |
| Write a subjectPublicKey to ASN.1 data Note: function works backwards in data buffer. | |
Detailed Description
Public Key abstraction layer.
Public Key abstraction layer: wrapper functions.
Copyright (C) 2006-2013, Brainspark B.V.
This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>
All rights reserved.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Definition in file pk.h.
Typedef Documentation
| typedef int(* pk_rsa_alt_decrypt_func)(void *ctx, int mode, size_t *olen, const unsigned char *input, unsigned char *output, size_t output_max_len) |
Enumeration Type Documentation
| enum pk_debug_type |
Function Documentation
| int pk_can_do | ( | pk_context * | ctx, |
| pk_type_t | type | ||
| ) |
| int pk_debug | ( | const pk_context * | ctx, |
| pk_debug_item * | items | ||
| ) |
| int pk_decrypt | ( | 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 | ||
| ) |
| int pk_encrypt | ( | 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 | ||
| ) |
| void pk_free | ( | pk_context * | ctx ) |
Free a pk_context.
| static size_t pk_get_len | ( | const pk_context * | ctx ) | [static] |
| const char* pk_get_name | ( | const pk_context * | ctx ) |
| size_t pk_get_size | ( | const pk_context * | ctx ) |
| pk_type_t pk_get_type | ( | const pk_context * | ctx ) |
| void pk_init | ( | pk_context * | ctx ) |
Initialize a pk_context (as NONE)
| int pk_init_ctx | ( | pk_context * | ctx, |
| const pk_info_t * | info | ||
| ) |
Initialize a PK context with the information given and allocates the type-specific PK subcontext.
- Parameters:
-
ctx Context to initialize. Must be empty (type NONE). info Information to use
- Returns:
- 0 on success, POLARSSL_ERR_PK_BAD_INPUT_DATA on invalid input, POLARSSL_ERR_PK_MALLOC_FAILED on allocation failure.
- Note:
- For contexts holding an RSA-alt key, use
pk_init_ctx_rsa_alt()instead.
| int pk_init_ctx_rsa_alt | ( | pk_context * | ctx, |
| void * | key, | ||
| pk_rsa_alt_decrypt_func | decrypt_func, | ||
| pk_rsa_alt_sign_func | sign_func, | ||
| pk_rsa_alt_key_len_func | key_len_func | ||
| ) |
Initialize an RSA-alt context.
- Parameters:
-
ctx Context to initialize. Must be empty (type NONE). key RSA key pointer decrypt_func Decryption function sign_func Signing function key_len_func Function returning key length in bytes
- Returns:
- 0 on success, or POLARSSL_ERR_PK_BAD_INPUT_DATA if the context wasn't already initialized as RSA_ALT.
- Note:
- This function replaces
pk_init_ctx()for RSA-alt.
| int pk_parse_key | ( | pk_context * | ctx, |
| const unsigned char * | key, | ||
| size_t | keylen, | ||
| const unsigned char * | pwd, | ||
| size_t | pwdlen | ||
| ) |
Parse a private key.
- Parameters:
-
ctx key to be initialized key input buffer keylen size of the buffer pwd password for decryption (optional) pwdlen size of the password
- Note:
- On entry, ctx must be empty, either freshly initialised with pk_init() or reset with pk_free(). If you need a specific key type, check the result with pk_can_do().
- The key is also checked for correctness.
- Returns:
- 0 if successful, or a specific PK or PEM error code
| int pk_parse_keyfile | ( | pk_context * | ctx, |
| const char * | path, | ||
| const char * | password | ||
| ) |
Load and parse a private key.
- Parameters:
-
ctx key to be initialized path filename to read the private key from password password to decrypt the file (can be NULL)
- Note:
- On entry, ctx must be empty, either freshly initialised with pk_init() or reset with pk_free(). If you need a specific key type, check the result with pk_can_do().
- The key is also checked for correctness.
- Returns:
- 0 if successful, or a specific PK or PEM error code
| int pk_parse_public_key | ( | pk_context * | ctx, |
| const unsigned char * | key, | ||
| size_t | keylen | ||
| ) |
Parse a public key.
- Parameters:
-
ctx key to be initialized key input buffer keylen size of the buffer
- Note:
- On entry, ctx must be empty, either freshly initialised with pk_init() or reset with pk_free(). If you need a specific key type, check the result with pk_can_do().
- The key is also checked for correctness.
- Returns:
- 0 if successful, or a specific PK or PEM error code
| int pk_parse_public_keyfile | ( | pk_context * | ctx, |
| const char * | path | ||
| ) |
Load and parse a public key.
- Parameters:
-
ctx key to be initialized path filename to read the private key from
- Note:
- On entry, ctx must be empty, either freshly initialised with pk_init() or reset with pk_free(). If you need a specific key type, check the result with pk_can_do().
- The key is also checked for correctness.
- Returns:
- 0 if successful, or a specific PK or PEM error code
| int pk_parse_subpubkey | ( | unsigned char ** | p, |
| const unsigned char * | end, | ||
| pk_context * | pk | ||
| ) |
| int pk_sign | ( | pk_context * | ctx, |
| 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.
- Parameters:
-
ctx PK context to use md_alg Hash algorithm used (see notes) hash Hash of the message to sign hash_len Hash length or 0 (see notes) sig Place to write the signature sig_len Number of bytes written f_rng RNG function p_rng RNG parameter
- Returns:
- 0 on success, 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 POLARSSL_MD_NONE, only if hash_len != 0
| int pk_verify | ( | pk_context * | ctx, |
| md_type_t | md_alg, | ||
| const unsigned char * | hash, | ||
| size_t | hash_len, | ||
| const unsigned char * | sig, | ||
| size_t | sig_len | ||
| ) |
Verify signature.
- Parameters:
-
ctx PK context to use md_alg Hash algorithm used (see notes) hash Hash of the message to sign hash_len Hash length or 0 (see notes) sig Signature to verify sig_len Signature length
- Returns:
- 0 on success (signature is valid), POLARSSL_ERR_PK_SIG_LEN_MISMATCH if the signature is valid but its actual length is less than sig_len, 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 POLARSSL_MD_NONE, only if hash_len != 0
| int pk_write_key_der | ( | 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:
-
ctx private to write away buf buffer to write to size size of the buffer
- Returns:
- length of data written if successful, or a specific error code
| int pk_write_key_pem | ( | pk_context * | ctx, |
| unsigned char * | buf, | ||
| size_t | size | ||
| ) |
| int pk_write_pubkey | ( | unsigned char ** | p, |
| unsigned char * | start, | ||
| const pk_context * | key | ||
| ) |
Write a subjectPublicKey to ASN.1 data Note: function works backwards in data buffer.
- Parameters:
-
p reference to current position pointer start start of the buffer (for bounds-checking) key public key to write away
- Returns:
- the length written or a negative error code
| int pk_write_pubkey_der | ( | 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:
-
ctx public key to write away buf buffer to write to size size of the buffer
- Returns:
- length of data written if successful, or a specific error code
| int pk_write_pubkey_pem | ( | pk_context * | ctx, |
| unsigned char * | buf, | ||
| size_t | size | ||
| ) |
Generated on Tue Jul 12 2022 19:40:22 by
1.7.2