oid.c File Reference

Object Identifier (OID) database. More...

#include "polarssl/config.h"
#include "polarssl/oid.h"
#include "polarssl/rsa.h"
#include "polarssl/x509.h"
#include <stdio.h>
Include dependency graph for oid.c:

Go to the source code of this file.

Data Structures

struct  oid_x520_attr_t
struct  oid_x509_ext_t
struct  oid_sig_alg_t
struct  oid_pk_alg_t
struct  oid_ecp_grp_t
struct  oid_cipher_alg_t
struct  oid_md_alg_t
struct  oid_pkcs12_pbe_alg_t

Defines

#define ADD_LEN(s)   s, OID_SIZE(s)
#define FN_OID_TYPED_FROM_ASN1(TYPE_T, NAME, LIST)
#define FN_OID_GET_DESCRIPTOR_ATTR1(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1)
#define FN_OID_GET_ATTR1(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1)
#define FN_OID_GET_ATTR2(FN_NAME, TYPE_T, TYPE_NAME, ATTR1_TYPE, ATTR1,ATTR2_TYPE, ATTR2)
#define FN_OID_GET_OID_BY_ATTR1(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1)
#define FN_OID_GET_OID_BY_ATTR2(FN_NAME, TYPE_T, LIST, ATTR1_TYPE, ATTR1,ATTR2_TYPE, ATTR2)
#define POLARSSL_ERR_DEBUG_BUF_TOO_SMALL   -2
#define SAFE_SNPRINTF()

Functions

 FN_OID_TYPED_FROM_ASN1 (oid_x520_attr_t, x520_attr, oid_x520_attr_type)
 FN_OID_GET_ATTR1 (oid_get_attr_short_name, oid_x520_attr_t, x520_attr, const char *, short_name)
 FN_OID_TYPED_FROM_ASN1 (oid_x509_ext_t, x509_ext, oid_x509_ext)
 FN_OID_GET_ATTR1 (oid_get_x509_ext_type, oid_x509_ext_t, x509_ext, int, ext_type)
 FN_OID_TYPED_FROM_ASN1 (oid_descriptor_t, ext_key_usage, oid_ext_key_usage)
 FN_OID_GET_ATTR1 (oid_get_extended_key_usage, oid_descriptor_t, ext_key_usage, const char *, description)
 FN_OID_TYPED_FROM_ASN1 (oid_sig_alg_t, sig_alg, oid_sig_alg)
 FN_OID_GET_DESCRIPTOR_ATTR1 (oid_get_sig_alg_desc, oid_sig_alg_t, sig_alg, const char *, description)
 FN_OID_GET_ATTR2 (oid_get_sig_alg, oid_sig_alg_t, sig_alg, md_type_t, md_alg, pk_type_t, pk_alg)
 FN_OID_GET_OID_BY_ATTR2 (oid_get_oid_by_sig_alg, oid_sig_alg_t, oid_sig_alg, pk_type_t, pk_alg, md_type_t, md_alg)
 FN_OID_TYPED_FROM_ASN1 (oid_pk_alg_t, pk_alg, oid_pk_alg)
 FN_OID_GET_ATTR1 (oid_get_pk_alg, oid_pk_alg_t, pk_alg, pk_type_t, pk_alg)
 FN_OID_GET_OID_BY_ATTR1 (oid_get_oid_by_pk_alg, oid_pk_alg_t, oid_pk_alg, pk_type_t, pk_alg)
 FN_OID_TYPED_FROM_ASN1 (oid_ecp_grp_t, grp_id, oid_ecp_grp)
 FN_OID_GET_ATTR1 (oid_get_ec_grp, oid_ecp_grp_t, grp_id, ecp_group_id, grp_id)
 FN_OID_GET_OID_BY_ATTR1 (oid_get_oid_by_ec_grp, oid_ecp_grp_t, oid_ecp_grp, ecp_group_id, grp_id)
 FN_OID_TYPED_FROM_ASN1 (oid_cipher_alg_t, cipher_alg, oid_cipher_alg)
 FN_OID_GET_ATTR1 (oid_get_cipher_alg, oid_cipher_alg_t, cipher_alg, cipher_type_t, cipher_alg)
 FN_OID_TYPED_FROM_ASN1 (oid_md_alg_t, md_alg, oid_md_alg)
 FN_OID_GET_ATTR1 (oid_get_md_alg, oid_md_alg_t, md_alg, md_type_t, md_alg)
 FN_OID_GET_OID_BY_ATTR1 (oid_get_oid_by_md, oid_md_alg_t, oid_md_alg, md_type_t, md_alg)
 FN_OID_TYPED_FROM_ASN1 (oid_pkcs12_pbe_alg_t, pkcs12_pbe_alg, oid_pkcs12_pbe_alg)
 FN_OID_GET_ATTR2 (oid_get_pkcs12_pbe_alg, oid_pkcs12_pbe_alg_t, pkcs12_pbe_alg, md_type_t, md_alg, cipher_type_t, cipher_alg)
int oid_get_numeric_string (char *buf, size_t size, const asn1_buf *oid)
 Translate an ASN.1 OID into its numeric representation (e.g.

Variables

static const oid_x520_attr_t oid_x520_attr_type []
static const oid_x509_ext_t oid_x509_ext []
static const oid_descriptor_t oid_ext_key_usage []
static const oid_sig_alg_t oid_sig_alg []
static const oid_pk_alg_t oid_pk_alg []
static const oid_ecp_grp_t oid_ecp_grp []
static const oid_cipher_alg_t oid_cipher_alg []
static const oid_md_alg_t oid_md_alg []
static const oid_pkcs12_pbe_alg_t oid_pkcs12_pbe_alg []

Detailed Description

Object Identifier (OID) database.

Copyright (C) 2006-2013, Brainspark B.V.

This file is part of PolarSSL (http://www.polarssl.org) Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org>

All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Definition in file oid.c.


Define Documentation

#define ADD_LEN (  )     s, OID_SIZE(s)

Definition at line 44 of file oid.c.

#define FN_OID_GET_ATTR1 ( FN_NAME,
TYPE_T,
TYPE_NAME,
ATTR1_TYPE,
ATTR1   ) 
Value:
int FN_NAME( const asn1_buf *oid, ATTR1_TYPE * ATTR1 )                  \
{                                                                       \
    const TYPE_T *data = oid_ ## TYPE_NAME ## _from_asn1( oid );        \
    if( data == NULL ) return ( POLARSSL_ERR_OID_NOT_FOUND );           \
    *ATTR1 = data->ATTR1;                                               \
    return( 0 );                                                        \
}

Definition at line 84 of file oid.c.

#define FN_OID_GET_ATTR2 ( FN_NAME,
TYPE_T,
TYPE_NAME,
ATTR1_TYPE,
ATTR1,
ATTR2_TYPE,
ATTR2   ) 
Value:
int FN_NAME( const asn1_buf *oid, ATTR1_TYPE * ATTR1, ATTR2_TYPE * ATTR2 )  \
{                                                                           \
    const TYPE_T *data = oid_ ## TYPE_NAME ## _from_asn1( oid );            \
    if( data == NULL ) return ( POLARSSL_ERR_OID_NOT_FOUND );               \
    *ATTR1 = data->ATTR1;                                                   \
    *ATTR2 = data->ATTR2;                                                   \
    return( 0 );                                                            \
}

Definition at line 98 of file oid.c.

#define FN_OID_GET_DESCRIPTOR_ATTR1 ( FN_NAME,
TYPE_T,
TYPE_NAME,
ATTR1_TYPE,
ATTR1   ) 
Value:
int FN_NAME( const asn1_buf *oid, ATTR1_TYPE * ATTR1 )                  \
{                                                                       \
    const TYPE_T *data = oid_ ## TYPE_NAME ## _from_asn1( oid );        \
    if( data == NULL ) return ( POLARSSL_ERR_OID_NOT_FOUND );           \
    *ATTR1 = data->descriptor.ATTR1;                                    \
    return( 0 );                                                        \
}

Definition at line 71 of file oid.c.

#define FN_OID_GET_OID_BY_ATTR1 ( FN_NAME,
TYPE_T,
LIST,
ATTR1_TYPE,
ATTR1   ) 
Value:
int FN_NAME( ATTR1_TYPE ATTR1, const char **oid, size_t *olen )             \
{                                                                           \
    const TYPE_T *cur = LIST;                                               \
    while( cur->descriptor.asn1 != NULL ) {                                 \
        if( cur->ATTR1 == ATTR1 ) {                                         \
            *oid = cur->descriptor.asn1;                                    \
            *olen = cur->descriptor.asn1_len;                               \
            return( 0 );                                                    \
        }                                                                   \
        cur++;                                                              \
    }                                                                       \
    return( POLARSSL_ERR_OID_NOT_FOUND );                                   \
}

Definition at line 112 of file oid.c.

#define FN_OID_GET_OID_BY_ATTR2 ( FN_NAME,
TYPE_T,
LIST,
ATTR1_TYPE,
ATTR1,
ATTR2_TYPE,
ATTR2   ) 
Value:
int FN_NAME( ATTR1_TYPE ATTR1, ATTR2_TYPE ATTR2, const char **oid ,         \
             size_t *olen )                                                 \
{                                                                           \
    const TYPE_T *cur = LIST;                                               \
    while( cur->descriptor.asn1 != NULL ) {                                 \
        if( cur->ATTR1 == ATTR1 && cur->ATTR2 == ATTR2 ) {                  \
            *oid = cur->descriptor.asn1;                                    \
            *olen = cur->descriptor.asn1_len;                               \
            return( 0 );                                                    \
        }                                                                   \
        cur++;                                                              \
    }                                                                       \
    return( POLARSSL_ERR_OID_NOT_FOUND );                                   \
}

Definition at line 132 of file oid.c.

#define FN_OID_TYPED_FROM_ASN1 ( TYPE_T,
NAME,
LIST   ) 
Value:
static const TYPE_T * oid_ ## NAME ## _from_asn1( const asn1_buf *oid )     \
{                                                                           \
    const TYPE_T *p = LIST;                                                 \
    const oid_descriptor_t *cur = (const oid_descriptor_t *) p;             \
    if( p == NULL || oid == NULL ) return( NULL );                          \
    while( cur->asn1 != NULL ) {                                            \
        if( cur->asn1_len == oid->len &&                                    \
            memcmp( cur->asn1, oid->p, oid->len ) == 0 ) {                  \
            return( p );                                                    \
        }                                                                   \
        p++;                                                                \
        cur = (const oid_descriptor_t *) p;                                 \
    }                                                                       \
    return( NULL );                                                         \
}

Definition at line 50 of file oid.c.

#define POLARSSL_ERR_DEBUG_BUF_TOO_SMALL   -2

Definition at line 581 of file oid.c.

Referenced by oid_get_numeric_string(), and x509_key_size_helper().

 
#define SAFE_SNPRINTF (  ) 
Value:
{                                               \
    if( ret == -1 )                             \
        return( -1 );                           \
                                                \
    if ( (unsigned int) ret > n ) {             \
        p[n - 1] = '\0';                        \
        return POLARSSL_ERR_DEBUG_BUF_TOO_SMALL;\
    }                                           \
                                                \
    n -= (unsigned int) ret;                    \
    p += (unsigned int) ret;                    \
}

Definition at line 583 of file oid.c.

Referenced by oid_get_numeric_string(), x509_crl_info(), x509_crt_info(), x509_csr_info(), x509_dn_gets(), x509_key_size_helper(), and x509_serial_gets().


Function Documentation

FN_OID_GET_ATTR1 ( oid_get_md_alg  ,
oid_md_alg_t  ,
md_alg  ,
md_type_t  ,
md_alg   
)
FN_OID_GET_ATTR1 ( oid_get_cipher_alg  ,
oid_cipher_alg_t  ,
cipher_alg  ,
cipher_type_t  ,
cipher_alg   
)
FN_OID_GET_ATTR1 ( oid_get_ec_grp  ,
oid_ecp_grp_t  ,
grp_id  ,
ecp_group_id  ,
grp_id   
)
FN_OID_GET_ATTR1 ( oid_get_pk_alg  ,
oid_pk_alg_t  ,
pk_alg  ,
pk_type_t  ,
pk_alg   
)
FN_OID_GET_ATTR1 ( oid_get_extended_key_usage  ,
oid_descriptor_t  ,
ext_key_usage  ,
const char *  ,
description   
)
FN_OID_GET_ATTR1 ( oid_get_x509_ext_type  ,
oid_x509_ext_t  ,
x509_ext  ,
int  ,
ext_type   
)
FN_OID_GET_ATTR1 ( oid_get_attr_short_name  ,
oid_x520_attr_t  ,
x520_attr  ,
const char *  ,
short_name   
)
FN_OID_GET_ATTR2 ( oid_get_pkcs12_pbe_alg  ,
oid_pkcs12_pbe_alg_t  ,
pkcs12_pbe_alg  ,
md_type_t  ,
md_alg  ,
cipher_type_t  ,
cipher_alg   
)
FN_OID_GET_ATTR2 ( oid_get_sig_alg  ,
oid_sig_alg_t  ,
sig_alg  ,
md_type_t  ,
md_alg  ,
pk_type_t  ,
pk_alg   
)
FN_OID_GET_DESCRIPTOR_ATTR1 ( oid_get_sig_alg_desc  ,
oid_sig_alg_t  ,
sig_alg  ,
const char *  ,
description   
)
FN_OID_GET_OID_BY_ATTR1 ( oid_get_oid_by_md  ,
oid_md_alg_t  ,
oid_md_alg  ,
md_type_t  ,
md_alg   
)
FN_OID_GET_OID_BY_ATTR1 ( oid_get_oid_by_ec_grp  ,
oid_ecp_grp_t  ,
oid_ecp_grp  ,
ecp_group_id  ,
grp_id   
)
FN_OID_GET_OID_BY_ATTR1 ( oid_get_oid_by_pk_alg  ,
oid_pk_alg_t  ,
oid_pk_alg  ,
pk_type_t  ,
pk_alg   
)
FN_OID_GET_OID_BY_ATTR2 ( oid_get_oid_by_sig_alg  ,
oid_sig_alg_t  ,
oid_sig_alg  ,
pk_type_t  ,
pk_alg  ,
md_type_t  ,
md_alg   
)
FN_OID_TYPED_FROM_ASN1 ( oid_pkcs12_pbe_alg_t  ,
pkcs12_pbe_alg  ,
oid_pkcs12_pbe_alg   
)
FN_OID_TYPED_FROM_ASN1 ( oid_md_alg_t  ,
md_alg  ,
oid_md_alg   
)
FN_OID_TYPED_FROM_ASN1 ( oid_cipher_alg_t  ,
cipher_alg  ,
oid_cipher_alg   
)
FN_OID_TYPED_FROM_ASN1 ( oid_ecp_grp_t  ,
grp_id  ,
oid_ecp_grp   
)
FN_OID_TYPED_FROM_ASN1 ( oid_pk_alg_t  ,
pk_alg  ,
oid_pk_alg   
)
FN_OID_TYPED_FROM_ASN1 ( oid_sig_alg_t  ,
sig_alg  ,
oid_sig_alg   
)
FN_OID_TYPED_FROM_ASN1 ( oid_descriptor_t  ,
ext_key_usage  ,
oid_ext_key_usage   
)
FN_OID_TYPED_FROM_ASN1 ( oid_x509_ext_t  ,
x509_ext  ,
oid_x509_ext   
)
FN_OID_TYPED_FROM_ASN1 ( oid_x520_attr_t  ,
x520_attr  ,
oid_x520_attr_type   
)
int oid_get_numeric_string ( char *  buf,
size_t  size,
const asn1_buf oid 
)

Translate an ASN.1 OID into its numeric representation (e.g.

"\x2A\x86\x48\x86\xF7\x0D" into "1.2.840.113549")

Parameters:
buf buffer to put representation in
size size of the buffer
oid OID to translate
Returns:
POLARSSL_ERR_DEBUG_BUF_TOO_SMALL or actual length used

Definition at line 598 of file oid.c.

References _asn1_buf::len, _asn1_buf::p, POLARSSL_ERR_DEBUG_BUF_TOO_SMALL, and SAFE_SNPRINTF.

Referenced by x509_oid_get_numeric_string().


Variable Documentation

const oid_cipher_alg_t oid_cipher_alg[] [static]
Initial value:
{
    {
        { ADD_LEN( OID_DES_CBC ),              "desCBC",       "DES-CBC" },
        POLARSSL_CIPHER_DES_CBC,
    },
    {
        { ADD_LEN( OID_DES_EDE3_CBC ),         "des-ede3-cbc", "DES-EDE3-CBC" },
        POLARSSL_CIPHER_DES_EDE3_CBC,
    },
    {
        { NULL, 0, NULL, NULL },
        0,
    },
}

Definition at line 437 of file oid.c.

const oid_ecp_grp_t oid_ecp_grp[] [static]

Definition at line 383 of file oid.c.

Initial value:
{
    { ADD_LEN( OID_SERVER_AUTH ),      "id-kp-serverAuth",      "TLS Web Server Authentication" },
    { ADD_LEN( OID_CLIENT_AUTH ),      "id-kp-clientAuth",      "TLS Web Client Authentication" },
    { ADD_LEN( OID_CODE_SIGNING ),     "id-kp-codeSigning",     "Code Signing" },
    { ADD_LEN( OID_EMAIL_PROTECTION ), "id-kp-emailProtection", "E-mail Protection" },
    { ADD_LEN( OID_TIME_STAMPING ),    "id-kp-timeStamping",    "Time Stamping" },
    { ADD_LEN( OID_OCSP_SIGNING ),     "id-kp-OCSPSigning",     "OCSP Signing" },
    { NULL, 0, NULL, NULL },
}

Definition at line 247 of file oid.c.

const oid_md_alg_t oid_md_alg[] [static]

Definition at line 466 of file oid.c.

const oid_pk_alg_t oid_pk_alg[] [static]
Initial value:
{
    {
        { ADD_LEN( OID_PKCS1_RSA ),      "rsaEncryption",   "RSA" },
        POLARSSL_PK_RSA,
    },
    {
        { ADD_LEN( OID_EC_ALG_UNRESTRICTED ),  "id-ecPublicKey",   "Generic EC key" },
        POLARSSL_PK_ECKEY,
    },
    {
        { ADD_LEN( OID_EC_ALG_ECDH ),          "id-ecDH",          "EC key for ECDH" },
        POLARSSL_PK_ECKEY_DH,
    },
    {
        { NULL, 0, NULL, NULL },
        0,
    },
}

Definition at line 350 of file oid.c.

Initial value:
{
    {
        { ADD_LEN( OID_PKCS12_PBE_SHA1_DES3_EDE_CBC ), "pbeWithSHAAnd3-KeyTripleDES-CBC", "PBE with SHA1 and 3-Key 3DES" },
        POLARSSL_MD_SHA1,      POLARSSL_CIPHER_DES_EDE3_CBC,
    },
    {
        { ADD_LEN( OID_PKCS12_PBE_SHA1_DES2_EDE_CBC ), "pbeWithSHAAnd2-KeyTripleDES-CBC", "PBE with SHA1 and 2-Key 3DES" },
        POLARSSL_MD_SHA1,      POLARSSL_CIPHER_DES_EDE_CBC,
    },
    {
        { NULL, 0, NULL, NULL },
        0, 0,
    },
}

Definition at line 525 of file oid.c.

const oid_sig_alg_t oid_sig_alg[] [static]

Definition at line 272 of file oid.c.

const oid_x509_ext_t oid_x509_ext[] [static]
Initial value:
{
    {
        { ADD_LEN( OID_BASIC_CONSTRAINTS ),    "id-ce-basicConstraints",   "Basic Constraints" },
        EXT_BASIC_CONSTRAINTS,
    },
    {
        { ADD_LEN( OID_KEY_USAGE ),            "id-ce-keyUsage",           "Key Usage" },
        EXT_KEY_USAGE,
    },
    {
        { ADD_LEN( OID_EXTENDED_KEY_USAGE ),   "id-ce-keyUsage",           "Extended Key Usage" },
        EXT_EXTENDED_KEY_USAGE,
    },
    {
        { ADD_LEN( OID_SUBJECT_ALT_NAME ),     "id-ce-subjectAltName",     "Subject Alt Name" },
        EXT_SUBJECT_ALT_NAME,
    },
    {
        { ADD_LEN( OID_NS_CERT_TYPE ),         "id-netscape-certtype",     "Netscape Certificate Type" },
        EXT_NS_CERT_TYPE,
    },
    {
        { NULL, 0, NULL, NULL },
        0,
    },
}

Definition at line 216 of file oid.c.

Definition at line 156 of file oid.c.


Generated on 9 Apr 2014 for PolarSSL v1.3.2 by  doxygen 1.6.1