mbedtls ported to mbed-classic

Fork of mbedtls by Christopher Haster

Embed: (wiki syntax)

« Back to documentation index

asn1.h File Reference

asn1.h File Reference

Generic ASN.1 parsing. More...

Go to the source code of this file.

Data Structures

struct  mbedtls_asn1_buf
 Type-length-value structure that allows for ASN1 using DER. More...
struct  mbedtls_asn1_bitstring
 Container for ASN1 bit strings. More...
struct  mbedtls_asn1_sequence
 Container for a sequence of ASN.1 items. More...
struct  mbedtls_asn1_named_data
 Container for a sequence or list of 'named' ASN.1 data items. More...

Functions to parse ASN.1 data structures

typedef struct mbedtls_asn1_buf mbedtls_asn1_buf
 Type-length-value structure that allows for ASN1 using DER.
typedef struct
mbedtls_asn1_bitstring 
mbedtls_asn1_bitstring
 Container for ASN1 bit strings.
typedef struct
mbedtls_asn1_sequence 
mbedtls_asn1_sequence
 Container for a sequence of ASN.1 items.
typedef struct
mbedtls_asn1_named_data 
mbedtls_asn1_named_data
 Container for a sequence or list of 'named' ASN.1 data items.
int mbedtls_asn1_get_len (unsigned char **p, const unsigned char *end, size_t *len)
 Get the length of an ASN.1 element.
int mbedtls_asn1_get_tag (unsigned char **p, const unsigned char *end, size_t *len, int tag)
 Get the tag and length of the tag.
int mbedtls_asn1_get_bool (unsigned char **p, const unsigned char *end, int *val)
 Retrieve a boolean ASN.1 tag and its value.
int mbedtls_asn1_get_int (unsigned char **p, const unsigned char *end, int *val)
 Retrieve an integer ASN.1 tag and its value.
int mbedtls_asn1_get_bitstring (unsigned char **p, const unsigned char *end, mbedtls_asn1_bitstring *bs)
 Retrieve a bitstring ASN.1 tag and its value.
int mbedtls_asn1_get_bitstring_null (unsigned char **p, const unsigned char *end, size_t *len)
 Retrieve a bitstring ASN.1 tag without unused bits and its value.
int mbedtls_asn1_get_sequence_of (unsigned char **p, const unsigned char *end, mbedtls_asn1_sequence *cur, int tag)
 Parses and splits an ASN.1 "SEQUENCE OF <tag>" Updated the pointer to immediately behind the full sequence tag.
int mbedtls_asn1_get_mpi (unsigned char **p, const unsigned char *end, mbedtls_mpi *X)
 Retrieve a MPI value from an integer ASN.1 tag.
int mbedtls_asn1_get_alg (unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params)
 Retrieve an AlgorithmIdentifier ASN.1 sequence.
int mbedtls_asn1_get_alg_null (unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *alg)
 Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params.
mbedtls_asn1_named_datambedtls_asn1_find_named_data (mbedtls_asn1_named_data *list, const char *oid, size_t len)
 Find a specific named_data entry in a sequence or list based on the OID.
void mbedtls_asn1_free_named_data (mbedtls_asn1_named_data *entry)
 Free a mbedtls_asn1_named_data entry.
void mbedtls_asn1_free_named_data_list (mbedtls_asn1_named_data **head)
 Free all entries in a mbedtls_asn1_named_data list Head will be set to NULL.

Detailed Description

Generic ASN.1 parsing.

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 asn1.h.


Typedef Documentation

Container for ASN1 bit strings.

Type-length-value structure that allows for ASN1 using DER.

Container for a sequence or list of 'named' ASN.1 data items.

Container for a sequence of ASN.1 items.


Function Documentation

mbedtls_asn1_named_data* mbedtls_asn1_find_named_data ( mbedtls_asn1_named_data list,
const char *  oid,
size_t  len 
)

Find a specific named_data entry in a sequence or list based on the OID.

Parameters:
listThe list to seek through
oidThe OID to look for
lenSize of the OID
Returns:
NULL if not found, or a pointer to the existing entry.

Definition at line 375 of file asn1parse.c.

void mbedtls_asn1_free_named_data ( mbedtls_asn1_named_data entry )

Free a mbedtls_asn1_named_data entry.

Parameters:
entryThe named data entry to free

Definition at line 352 of file asn1parse.c.

void mbedtls_asn1_free_named_data_list ( mbedtls_asn1_named_data **  head )

Free all entries in a mbedtls_asn1_named_data list Head will be set to NULL.

Parameters:
headPointer to the head of the list of named data entries to free

Definition at line 363 of file asn1parse.c.

int mbedtls_asn1_get_alg ( unsigned char **  p,
const unsigned char *  end,
mbedtls_asn1_buf alg,
mbedtls_asn1_buf params 
)

Retrieve an AlgorithmIdentifier ASN.1 sequence.

Updates the pointer to immediately behind the full AlgorithmIdentifier.

Parameters:
pThe position in the ASN.1 data
endEnd of data
algThe buffer to receive the OID
paramsThe buffer to receive the params (if any)
Returns:
0 if successful or a specific ASN.1 or MPI error code.

Definition at line 290 of file asn1parse.c.

int mbedtls_asn1_get_alg_null ( unsigned char **  p,
const unsigned char *  end,
mbedtls_asn1_buf alg 
)

Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params.

Updates the pointer to immediately behind the full AlgorithmIdentifier.

Parameters:
pThe position in the ASN.1 data
endEnd of data
algThe buffer to receive the OID
Returns:
0 if successful or a specific ASN.1 or MPI error code.

Definition at line 334 of file asn1parse.c.

int mbedtls_asn1_get_bitstring ( unsigned char **  p,
const unsigned char *  end,
mbedtls_asn1_bitstring bs 
)

Retrieve a bitstring ASN.1 tag and its value.

Updates the pointer to immediately behind the full tag.

Parameters:
pThe position in the ASN.1 data
endEnd of data
bsThe variable that will receive the value
Returns:
0 if successful or a specific ASN.1 error code.

Definition at line 189 of file asn1parse.c.

int mbedtls_asn1_get_bitstring_null ( unsigned char **  p,
const unsigned char *  end,
size_t *  len 
)

Retrieve a bitstring ASN.1 tag without unused bits and its value.

Updates the pointer to the beginning of the bit/octet string.

Parameters:
pThe position in the ASN.1 data
endEnd of data
lenLength of the actual bit/octect string in bytes
Returns:
0 if successful or a specific ASN.1 error code.

Definition at line 222 of file asn1parse.c.

int mbedtls_asn1_get_bool ( unsigned char **  p,
const unsigned char *  end,
int *  val 
)

Retrieve a boolean ASN.1 tag and its value.

Updates the pointer to immediately behind the full tag.

Parameters:
pThe position in the ASN.1 data
endEnd of data
valThe variable that will receive the value
Returns:
0 if successful or a specific ASN.1 error code.

Definition at line 127 of file asn1parse.c.

int mbedtls_asn1_get_int ( unsigned char **  p,
const unsigned char *  end,
int *  val 
)

Retrieve an integer ASN.1 tag and its value.

Updates the pointer to immediately behind the full tag.

Parameters:
pThe position in the ASN.1 data
endEnd of data
valThe variable that will receive the value
Returns:
0 if successful or a specific ASN.1 error code.

Definition at line 146 of file asn1parse.c.

int mbedtls_asn1_get_len ( unsigned char **  p,
const unsigned char *  end,
size_t *  len 
)

Get the length of an ASN.1 element.

Updates the pointer to immediately behind the length.

Parameters:
pThe position in the ASN.1 data
endEnd of data
lenThe variable that will receive the value
Returns:
0 if successful, MBEDTLS_ERR_ASN1_OUT_OF_DATA on reaching end of data, MBEDTLS_ERR_ASN1_INVALID_LENGTH if length is unparseable.

Definition at line 54 of file asn1parse.c.

int mbedtls_asn1_get_mpi ( unsigned char **  p,
const unsigned char *  end,
mbedtls_mpi X 
)

Retrieve a MPI value from an integer ASN.1 tag.

Updates the pointer to immediately behind the full tag.

Parameters:
pThe position in the ASN.1 data
endEnd of data
XThe MPI that will receive the value
Returns:
0 if successful or a specific ASN.1 or MPI error code.

Definition at line 171 of file asn1parse.c.

int mbedtls_asn1_get_sequence_of ( unsigned char **  p,
const unsigned char *  end,
mbedtls_asn1_sequence cur,
int  tag 
)

Parses and splits an ASN.1 "SEQUENCE OF <tag>" Updated the pointer to immediately behind the full sequence tag.

Parameters:
pThe position in the ASN.1 data
endEnd of data
curFirst variable in the chain to fill
tagType of sequence
Returns:
0 if successful or a specific ASN.1 error code.

Definition at line 241 of file asn1parse.c.

int mbedtls_asn1_get_tag ( unsigned char **  p,
const unsigned char *  end,
size_t *  len,
int  tag 
)

Get the tag and length of the tag.

Check for the requested tag. Updates the pointer to immediately behind the tag and length.

Parameters:
pThe position in the ASN.1 data
endEnd of data
lenThe variable that will receive the length
tagThe expected tag
Returns:
0 if successful, MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if tag did not match requested tag, or another specific ASN.1 error code.

Definition at line 112 of file asn1parse.c.