asn1write.h File Reference

ASN.1 buffer writing functionality. More...

`#include "asn1.h"`
Include dependency graph for asn1write.h:

Go to the source code of this file.

## Macros

#define | MBEDTLS_ASN1_CHK_ADD(g, f)

## Functions

int | mbedtls_asn1_write_len (unsigned char **p, unsigned char *start, size_t len)
| Write a length field in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_tag (unsigned char **p, unsigned char *start, unsigned char tag)
| Write a ASN.1 tag in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_raw_buffer (unsigned char **p, unsigned char *start, const unsigned char *buf, size_t size)
| Write raw buffer data Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_mpi (unsigned char **p, unsigned char *start, const mbedtls_mpi *X)
| Write a big number (MBEDTLS_ASN1_INTEGER) in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_null (unsigned char **p, unsigned char *start)
| Write a NULL tag (MBEDTLS_ASN1_NULL) with zero data in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_oid (unsigned char **p, unsigned char *start, const char *oid, size_t oid_len)
| Write an OID tag (MBEDTLS_ASN1_OID) and data in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_algorithm_identifier (unsigned char **p, unsigned char *start, const char *oid, size_t oid_len, size_t par_len)
| Write an AlgorithmIdentifier sequence in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_bool (unsigned char **p, unsigned char *start, int boolean)
| Write a boolean tag (MBEDTLS_ASN1_BOOLEAN) and value in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_int (unsigned char **p, unsigned char *start, int val)
| Write an int tag (MBEDTLS_ASN1_INTEGER) and value in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_printable_string (unsigned char **p, unsigned char *start, const char *text, size_t text_len)
| Write a printable string tag (MBEDTLS_ASN1_PRINTABLE_STRING) and value in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_ia5_string (unsigned char **p, unsigned char *start, const char *text, size_t text_len)
| Write an IA5 string tag (MBEDTLS_ASN1_IA5_STRING) and value in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_bitstring (unsigned char **p, unsigned char *start, const unsigned char *buf, size_t bits)
| Write a bitstring tag (MBEDTLS_ASN1_BIT_STRING) and value in ASN.1 format Note: function works backwards in data buffer. More...
int | mbedtls_asn1_write_octet_string (unsigned char **p, unsigned char *start, const unsigned char *buf, size_t size)
| Write an octet string tag (MBEDTLS_ASN1_OCTET_STRING) and value in ASN.1 format Note: function works backwards in data buffer. More...
mbedtls_asn1_named_data * | mbedtls_asn1_store_named_data (mbedtls_asn1_named_data **list, const char *oid, size_t oid_len, const unsigned char *val, size_t val_len)
| Create or find a specific named_data entry for writing in a sequence or list based on the OID. More...

## Detailed Description

ASN.1 buffer writing functionality.

Copyright (C) 2006-2015, ARM Limited, All Rights Reserved SPDX-License-Identifier: Apache-2.0

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

This file is part of mbed TLS (https://tls.mbed.org)

Definition in file asn1write.h.

## Macro Definition Documentation

#define MBEDTLS_ASN1_CHK_ADD | ( |  | g,
|  |  | f
| ) |  |

Value:
do { if( ( ret = f ) < 0 ) return( ret ); else \
g += ret; } while( 0 )

Definition at line 28 of file asn1write.h.

## Function Documentation

mbedtls_asn1_named_data* mbedtls_asn1_store_named_data | ( | mbedtls_asn1_named_data ** | list,
|  | const char * | oid,
|  | size_t | oid_len,
|  | const unsigned char * | val,
|  | size_t | val_len
| ) |  |

Create or find a specific named_data entry for writing in a sequence or list based on the OID.

If not already in there, a new entry is added to the head of the list. Warning: Destructive behaviour for the val data!

Parameters

  list | Pointer to the location of the head of the list to seek through (will be updated in case of a new entry)
  oid | The OID to look for
  oid_len | Size of the OID
  val | Data to store (can be NULL if you want to fill it by hand)
  val_len | Minimum length of the data buffer needed

Returns
  NULL if if there was a memory allocation error, or a pointer to the new / existing entry.

int mbedtls_asn1_write_algorithm_identifier | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const char * | oid,
|  | size_t | oid_len,
|  | size_t | par_len
| ) |  |

Write an AlgorithmIdentifier sequence in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  oid | the OID of the algorithm
  oid_len | length of the OID
  par_len | length of parameters, which must be already written. If 0, NULL parameters are added

Returns
  the length written or a negative error code

int mbedtls_asn1_write_bitstring | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const unsigned char * | buf,
|  | size_t | bits
| ) |  |

Write a bitstring tag (MBEDTLS_ASN1_BIT_STRING) and value in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  buf | the bitstring
  bits | the total number of bits in the bitstring

Returns
  the length written or a negative error code

int mbedtls_asn1_write_bool | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | int | boolean
| ) |  |

Write a boolean tag (MBEDTLS_ASN1_BOOLEAN) and value in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  boolean | 0 or 1

Returns
  the length written or a negative error code

int mbedtls_asn1_write_ia5_string | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const char * | text,
|  | size_t | text_len
| ) |  |

Write an IA5 string tag (MBEDTLS_ASN1_IA5_STRING) and value in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  text | the text to write
  text_len | length of the text

Returns
  the length written or a negative error code

int mbedtls_asn1_write_int | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | int | val
| ) |  |

Write an int tag (MBEDTLS_ASN1_INTEGER) and value in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  val | the integer value

Returns
  the length written or a negative error code

int mbedtls_asn1_write_len | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | size_t | len
| ) |  |

Write a length field in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  len | the length to write

Returns
  the length written or a negative error code

int mbedtls_asn1_write_mpi | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const mbedtls_mpi * | X
| ) |  |

Write a big number (MBEDTLS_ASN1_INTEGER) in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  X | the MPI to write

Returns
  the length written or a negative error code

int mbedtls_asn1_write_null | ( | unsigned char ** | p,
|  | unsigned char * | start
| ) |  |

Write a NULL tag (MBEDTLS_ASN1_NULL) with zero data in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)

Returns
  the length written or a negative error code

int mbedtls_asn1_write_octet_string | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const unsigned char * | buf,
|  | size_t | size
| ) |  |

Write an octet string tag (MBEDTLS_ASN1_OCTET_STRING) and value in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  buf | data buffer to write
  size | length of the data buffer

Returns
  the length written or a negative error code

int mbedtls_asn1_write_oid | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const char * | oid,
|  | size_t | oid_len
| ) |  |

Write an OID tag (MBEDTLS_ASN1_OID) and data in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  oid | the OID to write
  oid_len | length of the OID

Returns
  the length written or a negative error code

int mbedtls_asn1_write_printable_string | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const char * | text,
|  | size_t | text_len
| ) |  |

Write a printable string tag (MBEDTLS_ASN1_PRINTABLE_STRING) and value in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  text | the text to write
  text_len | length of the text

Returns
  the length written or a negative error code

int mbedtls_asn1_write_raw_buffer | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | const unsigned char * | buf,
|  | size_t | size
| ) |  |

Write raw buffer data Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  buf | data buffer to write
  size | length of the data buffer

Returns
  the length written or a negative error code

int mbedtls_asn1_write_tag | ( | unsigned char ** | p,
|  | unsigned char * | start,
|  | unsigned char | tag
| ) |  |

Write a ASN.1 tag in ASN.1 format Note: function works backwards in data buffer.

Parameters

  p | reference to current position pointer
  start | start of the buffer (for bounds-checking)
  tag | the tag to write

Returns
  the length written or a negative error code