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

typedef struct mbedtls_pem_context mbedtls_pem_context

PEM context structure.

## Function Documentation

## mbedtls_pem_free()

void mbedtls_pem_free | ( | mbedtls_pem_context * | ctx | ) |

PEM context memory freeing.

Parameters

  ctx | context to be freed

## mbedtls_pem_init()

void mbedtls_pem_init | ( | mbedtls_pem_context * | ctx | ) |

PEM context setup.

Parameters

  ctx | context 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

  ctx | context to use
  header | header string to seek and expect
  footer | footer string to seek and expect
  data | source data to look in (must be nul-terminated)
  pwd | password for decryption (can be NULL)
  pwdlen | length of password
  use_len | destination 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

  header | header string to write
  footer | footer string to write
  der_data | DER data to write
  der_len | length of the DER data
  buf | buffer to write to
  buf_len | length of output buffer
  olen | total 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.