mbed TLS v2.16.3
Data Structures
pem.h File Reference

Privacy Enhanced Mail (PEM) decoding. More...

#include "config.h"
#include <stddef.h>
Include dependency graph for pem.h:

Go to the source code of this file.

Data Structures

struct  mbedtls_pem_context
 PEM context structure. More...
 

PEM Error codes

These error codes are returned in case of errors reading the PEM data.

#define MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT   -0x1080
 
#define MBEDTLS_ERR_PEM_INVALID_DATA   -0x1100
 
#define MBEDTLS_ERR_PEM_ALLOC_FAILED   -0x1180
 
#define MBEDTLS_ERR_PEM_INVALID_ENC_IV   -0x1200
 
#define MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG   -0x1280
 
#define MBEDTLS_ERR_PEM_PASSWORD_REQUIRED   -0x1300
 
#define MBEDTLS_ERR_PEM_PASSWORD_MISMATCH   -0x1380
 
#define MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE   -0x1400
 
#define MBEDTLS_ERR_PEM_BAD_INPUT_DATA   -0x1480
 
typedef struct mbedtls_pem_context mbedtls_pem_context
 PEM context structure. More...
 
void mbedtls_pem_init (mbedtls_pem_context *ctx)
 PEM context setup. More...
 
int mbedtls_pem_read_buffer (mbedtls_pem_context *ctx, const char *header, const char *footer, const unsigned char *data, const unsigned char *pwd, size_t pwdlen, size_t *use_len)
 Read a buffer for PEM information and store the resulting data into the specified context buffers. More...
 
void mbedtls_pem_free (mbedtls_pem_context *ctx)
 PEM context memory freeing. More...
 
int mbedtls_pem_write_buffer (const char *header, const char *footer, const unsigned char *der_data, size_t der_len, unsigned char *buf, size_t buf_len, size_t *olen)
 Write a buffer of PEM information from a DER encoded buffer. More...
 

Detailed Description

Privacy Enhanced Mail (PEM) decoding.

Definition in file pem.h.

Macro Definition Documentation

◆ MBEDTLS_ERR_PEM_ALLOC_FAILED

#define MBEDTLS_ERR_PEM_ALLOC_FAILED   -0x1180

Failed to allocate memory.

Definition at line 43 of file pem.h.

◆ MBEDTLS_ERR_PEM_BAD_INPUT_DATA

#define MBEDTLS_ERR_PEM_BAD_INPUT_DATA   -0x1480

Bad input parameters to function.

Definition at line 49 of file pem.h.

◆ MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE

#define MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE   -0x1400

Unavailable feature, e.g. hashing/encryption combination.

Definition at line 48 of file pem.h.

◆ MBEDTLS_ERR_PEM_INVALID_DATA

#define MBEDTLS_ERR_PEM_INVALID_DATA   -0x1100

PEM string is not as expected.

Definition at line 42 of file pem.h.

◆ MBEDTLS_ERR_PEM_INVALID_ENC_IV

#define MBEDTLS_ERR_PEM_INVALID_ENC_IV   -0x1200

RSA IV is not in hex-format.

Definition at line 44 of file pem.h.

◆ MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT

#define MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT   -0x1080

No PEM header or footer found.

Definition at line 41 of file pem.h.

◆ MBEDTLS_ERR_PEM_PASSWORD_MISMATCH

#define MBEDTLS_ERR_PEM_PASSWORD_MISMATCH   -0x1380

Given private key password does not allow for correct decryption.

Definition at line 47 of file pem.h.

◆ MBEDTLS_ERR_PEM_PASSWORD_REQUIRED

#define MBEDTLS_ERR_PEM_PASSWORD_REQUIRED   -0x1300

Private key password can't be empty.

Definition at line 46 of file pem.h.

◆ MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG

#define MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG   -0x1280

Unsupported key encryption algorithm.

Definition at line 45 of file pem.h.

Typedef Documentation

◆ mbedtls_pem_context

PEM context structure.

Function Documentation

◆ mbedtls_pem_free()

void mbedtls_pem_free ( mbedtls_pem_context ctx)

PEM context memory freeing.

Parameters
ctxcontext to be freed

◆ mbedtls_pem_init()

void mbedtls_pem_init ( mbedtls_pem_context ctx)

PEM context setup.

Parameters
ctxcontext to be initialized

◆ mbedtls_pem_read_buffer()

int mbedtls_pem_read_buffer ( mbedtls_pem_context ctx,
const char *  header,
const char *  footer,
const unsigned char *  data,
const unsigned char *  pwd,
size_t  pwdlen,
size_t *  use_len 
)

Read a buffer for PEM information and store the resulting data into the specified context buffers.

Parameters
ctxcontext to use
headerheader string to seek and expect
footerfooter string to seek and expect
datasource data to look in (must be nul-terminated)
pwdpassword for decryption (can be NULL)
pwdlenlength of password
use_lendestination for total length used (set after header is correctly read, so unless you get MBEDTLS_ERR_PEM_BAD_INPUT_DATA or MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT, use_len is the length to skip)
Note
Attempts to check password correctness by verifying if the decrypted text starts with an ASN.1 sequence of appropriate length
Returns
0 on success, or a specific PEM error code

◆ mbedtls_pem_write_buffer()

int mbedtls_pem_write_buffer ( const char *  header,
const char *  footer,
const unsigned char *  der_data,
size_t  der_len,
unsigned char *  buf,
size_t  buf_len,
size_t *  olen 
)

Write a buffer of PEM information from a DER encoded buffer.

Parameters
headerheader string to write
footerfooter string to write
der_dataDER data to write
der_lenlength of the DER data
bufbuffer to write to
buf_lenlength of output buffer
olentotal length written / required (if buf_len is not enough)
Returns
0 on success, or a specific PEM or BASE64 error code. On MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL olen is the required size.