#include "polarssl/config.h"
#include "polarssl/asn1.h"
#include "polarssl/bignum.h"
#include <string.h>
#include <stdlib.h>
Go to the source code of this file.
Defines | |
#define | polarssl_malloc malloc |
#define | polarssl_free free |
Functions | |
int | asn1_get_len (unsigned char **p, const unsigned char *end, size_t *len) |
Get the length of an ASN.1 element. | |
int | asn1_get_tag (unsigned char **p, const unsigned char *end, size_t *len, int tag) |
Get the tag and length of the tag. | |
int | asn1_get_bool (unsigned char **p, const unsigned char *end, int *val) |
Retrieve a boolean ASN.1 tag and its value. | |
int | asn1_get_int (unsigned char **p, const unsigned char *end, int *val) |
Retrieve an integer ASN.1 tag and its value. | |
int | asn1_get_mpi (unsigned char **p, const unsigned char *end, mpi *X) |
int | asn1_get_bitstring (unsigned char **p, const unsigned char *end, asn1_bitstring *bs) |
Retrieve a bitstring ASN.1 tag and its value. | |
int | 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 | asn1_get_sequence_of (unsigned char **p, const unsigned char *end, 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 | asn1_get_alg (unsigned char **p, const unsigned char *end, asn1_buf *alg, asn1_buf *params) |
Retrieve an AlgorithmIdentifier ASN.1 sequence. | |
int | asn1_get_alg_null (unsigned char **p, const unsigned char *end, asn1_buf *alg) |
Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params. | |
void | asn1_free_named_data (asn1_named_data *cur) |
Free a asn1_named_data entry. | |
void | asn1_free_named_data_list (asn1_named_data **head) |
Free all entries in a asn1_named_data list Head will be set to NULL. | |
asn1_named_data * | asn1_find_named_data (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. |
#define polarssl_free free |
Definition at line 40 of file asn1parse.c.
Referenced by aes_ctx_free(), arc4_ctx_free(), asn1_free_named_data(), asn1_free_named_data_list(), asn1_store_named_data(), blowfish_ctx_free(), camellia_ctx_free(), des_ctx_free(), dhm_parse_dhmfile(), ecdsa_free_wrap(), eckey_free_wrap(), ecp_group_free(), ecp_mul(), ecp_normalize_many(), gcm_ctx_free(), load_file(), md5_ctx_free(), mpi_free(), mpi_grow(), pem_free(), pem_read_buffer(), pem_write_buffer(), pk_parse_keyfile(), pk_parse_public_keyfile(), rsa_alt_free_wrap(), rsa_free_wrap(), sha1_ctx_free(), sha224_ctx_free(), sha256_ctx_free(), sha384_ctx_free(), sha512_ctx_free(), ssl_cache_free(), ssl_cache_get(), ssl_cache_set(), ssl_free(), ssl_handshake_free(), ssl_handshake_wrapup(), ssl_init(), ssl_key_cert_free(), ssl_load_session(), ssl_parse_certificate(), ssl_parse_new_session_ticket(), ssl_session_copy(), ssl_session_free(), ssl_session_reset(), ssl_set_psk(), x509_crl_free(), x509_crl_parse_file(), x509_crt_free(), x509_crt_parse_der(), x509_crt_parse_file(), x509_csr_free(), x509_csr_parse_file(), and x509_load_file().
#define polarssl_malloc malloc |
Definition at line 39 of file asn1parse.c.
Referenced by aes_ctx_alloc(), arc4_ctx_alloc(), asn1_get_sequence_of(), asn1_store_named_data(), blowfish_ctx_alloc(), camellia_ctx_alloc(), des3_ctx_alloc(), des_ctx_alloc(), ecdsa_alloc_wrap(), eckey_alloc_wrap(), ecp_mul(), ecp_normalize_many(), gcm_ctx_alloc(), load_file(), md5_ctx_alloc(), mpi_grow(), pem_read_buffer(), pem_write_buffer(), rsa_alloc_wrap(), rsa_alt_alloc_wrap(), sha1_ctx_alloc(), sha224_ctx_alloc(), sha256_ctx_alloc(), sha384_ctx_alloc(), sha512_ctx_alloc(), ssl_add_key_cert(), ssl_cache_get(), ssl_cache_set(), ssl_derive_keys(), ssl_handshake_init(), ssl_init(), ssl_load_session(), ssl_parse_certificate(), ssl_parse_new_session_ticket(), ssl_parse_supported_elliptic_curves(), ssl_session_copy(), ssl_set_hostname(), ssl_set_own_cert_alt(), ssl_set_own_cert_rsa(), ssl_set_psk(), ssl_ticket_keys_init(), x509_crl_parse(), x509_crt_parse_der(), x509_crt_parse_der_core(), x509_csr_parse(), x509_get_entries(), x509_get_name(), x509_get_subject_alt_name(), and x509_load_file().
asn1_named_data* asn1_find_named_data | ( | 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.
list | The list to seek through | |
oid | The OID to look for | |
len | Size of the OID |
Definition at line 369 of file asn1parse.c.
References _asn1_buf::len, _asn1_named_data::next, _asn1_named_data::oid, and _asn1_buf::p.
Referenced by asn1_store_named_data().
void asn1_free_named_data | ( | asn1_named_data * | entry | ) |
Free a asn1_named_data entry.
entry | The named data entry to free |
Definition at line 346 of file asn1parse.c.
References _asn1_named_data::oid, _asn1_buf::p, polarssl_free, and _asn1_named_data::val.
Referenced by asn1_free_named_data_list().
void asn1_free_named_data_list | ( | asn1_named_data ** | head | ) |
Free all entries in a asn1_named_data list Head will be set to NULL.
head | Pointer to the head of the list of named data entries to free |
Definition at line 357 of file asn1parse.c.
References asn1_free_named_data(), _asn1_named_data::next, and polarssl_free.
Referenced by x509_string_to_names(), x509write_crt_free(), and x509write_csr_free().
int asn1_get_alg | ( | unsigned char ** | p, | |
const unsigned char * | end, | |||
asn1_buf * | alg, | |||
asn1_buf * | params | |||
) |
Retrieve an AlgorithmIdentifier ASN.1 sequence.
Updates the pointer to immediately behind the full AlgorithmIdentifier.
p | The position in the ASN.1 data | |
end | End of data | |
alg | The buffer to receive the OID | |
params | The buffer to receive the params (if any) |
Definition at line 284 of file asn1parse.c.
References ASN1_CONSTRUCTED, asn1_get_len(), asn1_get_tag(), ASN1_OID, ASN1_SEQUENCE, _asn1_buf::len, _asn1_buf::p, POLARSSL_ERR_ASN1_LENGTH_MISMATCH, POLARSSL_ERR_ASN1_OUT_OF_DATA, and _asn1_buf::tag.
Referenced by asn1_get_alg_null(), pk_get_pk_alg(), pk_parse_key_pkcs8_encrypted_der(), and pkcs5_pbes2().
int asn1_get_alg_null | ( | unsigned char ** | p, | |
const unsigned char * | end, | |||
asn1_buf * | alg | |||
) |
Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no params.
Updates the pointer to immediately behind the full AlgorithmIdentifier.
p | The position in the ASN.1 data | |
end | End of data | |
alg | The buffer to receive the OID |
Definition at line 328 of file asn1parse.c.
References asn1_get_alg(), ASN1_NULL, _asn1_buf::len, POLARSSL_ERR_ASN1_INVALID_DATA, and _asn1_buf::tag.
Referenced by pkcs5_parse_pbkdf2_params(), and x509_get_alg_null().
int asn1_get_bitstring | ( | unsigned char ** | p, | |
const unsigned char * | end, | |||
asn1_bitstring * | bs | |||
) |
Retrieve a bitstring ASN.1 tag and its value.
Updates the pointer to immediately behind the full tag.
p | The position in the ASN.1 data | |
end | End of data | |
bs | The variable that will receive the value |
Definition at line 182 of file asn1parse.c.
References ASN1_BIT_STRING, asn1_get_tag(), _asn1_bitstring::len, _asn1_bitstring::p, POLARSSL_ERR_ASN1_INVALID_LENGTH, POLARSSL_ERR_ASN1_LENGTH_MISMATCH, POLARSSL_ERR_ASN1_OUT_OF_DATA, and _asn1_bitstring::unused_bits.
Referenced by x509_get_key_usage(), and x509_get_ns_cert_type().
int 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.
p | The position in the ASN.1 data | |
end | End of data | |
len | Length of the actual bit/octect string in bytes |
Definition at line 215 of file asn1parse.c.
References ASN1_BIT_STRING, asn1_get_tag(), and POLARSSL_ERR_ASN1_INVALID_DATA.
Referenced by pk_parse_key_sec1_der(), pk_parse_subpubkey(), and x509_get_sig().
int 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.
p | The position in the ASN.1 data | |
end | End of data | |
val | The variable that will receive the value |
Definition at line 120 of file asn1parse.c.
References ASN1_BOOLEAN, asn1_get_tag(), and POLARSSL_ERR_ASN1_INVALID_LENGTH.
Referenced by x509_get_basic_constraints(), and x509_get_crt_ext().
int 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.
p | The position in the ASN.1 data | |
end | End of data | |
val | The variable that will receive the value |
Definition at line 139 of file asn1parse.c.
References asn1_get_tag(), ASN1_INTEGER, and POLARSSL_ERR_ASN1_INVALID_LENGTH.
Referenced by pk_parse_key_pkcs1_der(), pk_parse_key_pkcs8_unencrypted_der(), pk_parse_key_sec1_der(), pkcs12_parse_pbe_params(), pkcs5_parse_pbkdf2_params(), x509_crl_get_version(), x509_csr_get_version(), x509_get_basic_constraints(), and x509_get_version().
int 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.
p | The position in the ASN.1 data | |
end | End of data | |
len | The variable that will receive the value |
Definition at line 49 of file asn1parse.c.
References POLARSSL_ERR_ASN1_INVALID_LENGTH, and POLARSSL_ERR_ASN1_OUT_OF_DATA.
Referenced by asn1_get_alg(), asn1_get_tag(), x509_get_attr_type_value(), x509_get_serial(), x509_get_subject_alt_name(), and x509_get_time().
int asn1_get_mpi | ( | unsigned char ** | p, | |
const unsigned char * | end, | |||
mpi * | X | |||
) |
Definition at line 164 of file asn1parse.c.
References asn1_get_tag(), ASN1_INTEGER, and mpi_read_binary().
Referenced by dhm_parse_dhm(), ecdsa_read_signature(), pk_get_rsapubkey(), and pk_parse_key_pkcs1_der().
int asn1_get_sequence_of | ( | unsigned char ** | p, | |
const unsigned char * | end, | |||
asn1_sequence * | cur, | |||
int | tag | |||
) |
Parses and splits an ASN.1 "SEQUENCE OF <tag>" Updated the pointer to immediately behind the full sequence tag.
p | The position in the ASN.1 data | |
end | End of data | |
cur | First variable in the chain to fill | |
tag | Type of sequence |
Definition at line 234 of file asn1parse.c.
References ASN1_CONSTRUCTED, asn1_get_tag(), ASN1_SEQUENCE, _asn1_sequence::buf, _asn1_buf::len, _asn1_sequence::next, _asn1_buf::p, POLARSSL_ERR_ASN1_LENGTH_MISMATCH, POLARSSL_ERR_ASN1_MALLOC_FAILED, polarssl_malloc, and _asn1_buf::tag.
Referenced by x509_get_ext_key_usage().
int 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.
p | The position in the ASN.1 data | |
end | End of data | |
len | The variable that will receive the length | |
tag | The expected tag |
Definition at line 105 of file asn1parse.c.
References asn1_get_len(), POLARSSL_ERR_ASN1_OUT_OF_DATA, and POLARSSL_ERR_ASN1_UNEXPECTED_TAG.
Referenced by asn1_get_alg(), asn1_get_bitstring(), asn1_get_bitstring_null(), asn1_get_bool(), asn1_get_int(), asn1_get_mpi(), asn1_get_sequence_of(), dhm_parse_dhm(), ecdsa_read_signature(), pk_get_ecparams(), pk_get_rsapubkey(), pk_parse_key_pkcs1_der(), pk_parse_key_pkcs8_encrypted_der(), pk_parse_key_pkcs8_unencrypted_der(), pk_parse_key_sec1_der(), pk_parse_subpubkey(), pkcs12_parse_pbe_params(), pkcs5_parse_pbkdf2_params(), rsa_rsassa_pkcs1_v15_verify(), x509_crl_parse(), x509_crt_parse_der_core(), x509_csr_parse(), x509_get_attr_type_value(), x509_get_basic_constraints(), x509_get_crl_entry_ext(), x509_get_crl_ext(), x509_get_crt_ext(), x509_get_dates(), x509_get_entries(), x509_get_ext(), x509_get_name(), x509_get_subject_alt_name(), x509_get_uid(), and x509_get_version().