00001
00027 #ifndef POLARSSL_OID_H
00028 #define POLARSSL_OID_H
00029
00030 #include <string.h>
00031 #include "config.h"
00032 #include "asn1.h"
00033 #include "pk.h"
00034 #if defined(POLARSSL_CIPHER_C)
00035 #include "cipher.h"
00036 #endif
00037
00038 #if defined(POLARSSL_MD_C)
00039 #include "md.h"
00040 #endif
00041
00042 #if defined(POLARSSL_X509_USE_C) || defined(POLARSSL_X509_CREATE_C)
00043 #include "x509.h"
00044 #endif
00045
00046 #define POLARSSL_ERR_OID_NOT_FOUND -0x002E
00048
00049
00050
00051 #define OID_ISO_MEMBER_BODIES "\x2a"
00052 #define OID_ISO_IDENTIFIED_ORG "\x2b"
00053 #define OID_ISO_CCITT_DS "\x55"
00054 #define OID_ISO_ITU_COUNTRY "\x60"
00055
00056
00057
00058
00059 #define OID_COUNTRY_US "\x86\x48"
00060 #define OID_ORG_RSA_DATA_SECURITY "\x86\xf7\x0d"
00061 #define OID_RSA_COMPANY OID_ISO_MEMBER_BODIES OID_COUNTRY_US \
00062 OID_ORG_RSA_DATA_SECURITY
00063 #define OID_ORG_ANSI_X9_62 "\xce\x3d"
00064 #define OID_ANSI_X9_62 OID_ISO_MEMBER_BODIES OID_COUNTRY_US \
00065 OID_ORG_ANSI_X9_62
00066
00067
00068
00069
00070 #define OID_ORG_DOD "\x06"
00071 #define OID_ORG_OIW "\x0e"
00072 #define OID_OIW_SECSIG OID_ORG_OIW "\x03"
00073 #define OID_OIW_SECSIG_ALG OID_OIW_SECSIG "\x02"
00074 #define OID_OIW_SECSIG_SHA1 OID_OIW_SECSIG_ALG "\x1a"
00075 #define OID_ORG_CERTICOM "\x81\x04"
00076 #define OID_CERTICOM OID_ISO_IDENTIFIED_ORG OID_ORG_CERTICOM
00077 #define OID_ORG_TELETRUST "\x24"
00078 #define OID_TELETRUST OID_ISO_IDENTIFIED_ORG OID_ORG_TELETRUST
00079
00080
00081
00082
00083 #define OID_ORGANIZATION "\x01"
00084 #define OID_ISO_ITU_US_ORG OID_ISO_ITU_COUNTRY OID_COUNTRY_US OID_ORGANIZATION
00085
00086 #define OID_ORG_GOV "\x65"
00087 #define OID_GOV OID_ISO_ITU_US_ORG OID_ORG_GOV
00088
00089 #define OID_ORG_NETSCAPE "\x86\xF8\x42"
00090 #define OID_NETSCAPE OID_ISO_ITU_US_ORG OID_ORG_NETSCAPE
00091
00092
00093 #define OID_ID_CE OID_ISO_CCITT_DS "\x1D"
00100 #define OID_PKIX OID_ISO_IDENTIFIED_ORG OID_ORG_DOD "\x01\x05\x05\x07"
00101
00102
00103
00104
00105 #define OID_AT OID_ISO_CCITT_DS "\x04"
00106 #define OID_AT_CN OID_AT "\x03"
00107 #define OID_AT_SERIAL_NUMBER OID_AT "\x05"
00108 #define OID_AT_COUNTRY OID_AT "\x06"
00109 #define OID_AT_LOCALITY OID_AT "\x07"
00110 #define OID_AT_STATE OID_AT "\x08"
00111 #define OID_AT_ORGANIZATION OID_AT "\x0A"
00112 #define OID_AT_ORG_UNIT OID_AT "\x0B"
00113 #define OID_AT_POSTAL_ADDRESS OID_AT "\x10"
00114 #define OID_AT_POSTAL_CODE OID_AT "\x11"
00116
00117
00118
00119 #define OID_AUTHORITY_KEY_IDENTIFIER OID_ID_CE "\x23"
00120 #define OID_SUBJECT_KEY_IDENTIFIER OID_ID_CE "\x0E"
00121 #define OID_KEY_USAGE OID_ID_CE "\x0F"
00122 #define OID_CERTIFICATE_POLICIES OID_ID_CE "\x20"
00123 #define OID_POLICY_MAPPINGS OID_ID_CE "\x21"
00124 #define OID_SUBJECT_ALT_NAME OID_ID_CE "\x11"
00125 #define OID_ISSUER_ALT_NAME OID_ID_CE "\x12"
00126 #define OID_SUBJECT_DIRECTORY_ATTRS OID_ID_CE "\x09"
00127 #define OID_BASIC_CONSTRAINTS OID_ID_CE "\x13"
00128 #define OID_NAME_CONSTRAINTS OID_ID_CE "\x1E"
00129 #define OID_POLICY_CONSTRAINTS OID_ID_CE "\x24"
00130 #define OID_EXTENDED_KEY_USAGE OID_ID_CE "\x25"
00131 #define OID_CRL_DISTRIBUTION_POINTS OID_ID_CE "\x1F"
00132 #define OID_INIHIBIT_ANYPOLICY OID_ID_CE "\x36"
00133 #define OID_FRESHEST_CRL OID_ID_CE "\x2E"
00135
00136
00137
00138 #define OID_NS_CERT OID_NETSCAPE "\x01"
00139 #define OID_NS_CERT_TYPE OID_NS_CERT "\x01"
00140 #define OID_NS_BASE_URL OID_NS_CERT "\x02"
00141 #define OID_NS_REVOCATION_URL OID_NS_CERT "\x03"
00142 #define OID_NS_CA_REVOCATION_URL OID_NS_CERT "\x04"
00143 #define OID_NS_RENEWAL_URL OID_NS_CERT "\x07"
00144 #define OID_NS_CA_POLICY_URL OID_NS_CERT "\x08"
00145 #define OID_NS_SSL_SERVER_NAME OID_NS_CERT "\x0C"
00146 #define OID_NS_COMMENT OID_NS_CERT "\x0D"
00147 #define OID_NS_DATA_TYPE OID_NETSCAPE "\x02"
00148 #define OID_NS_CERT_SEQUENCE OID_NS_DATA_TYPE "\x05"
00149
00150
00151
00152
00153 #define OID_PRIVATE_KEY_USAGE_PERIOD OID_ID_CE "\x10"
00154 #define OID_CRL_NUMBER OID_ID_CE "\x14"
00156
00157
00158
00159 #define OID_ANY_EXTENDED_KEY_USAGE OID_EXTENDED_KEY_USAGE "\x00"
00161 #define OID_KP OID_PKIX "\x03"
00162 #define OID_SERVER_AUTH OID_KP "\x01"
00163 #define OID_CLIENT_AUTH OID_KP "\x02"
00164 #define OID_CODE_SIGNING OID_KP "\x03"
00165 #define OID_EMAIL_PROTECTION OID_KP "\x04"
00166 #define OID_TIME_STAMPING OID_KP "\x08"
00167 #define OID_OCSP_SIGNING OID_KP "\x09"
00169
00170
00171
00172
00173 #define OID_PKCS OID_RSA_COMPANY "\x01"
00174 #define OID_PKCS1 OID_PKCS "\x01"
00175 #define OID_PKCS5 OID_PKCS "\x05"
00176 #define OID_PKCS9 OID_PKCS "\x09"
00177 #define OID_PKCS12 OID_PKCS "\x0c"
00179
00180
00181
00182 #define OID_PKCS1_RSA OID_PKCS1 "\x01"
00183 #define OID_PKCS1_MD2 OID_PKCS1 "\x02"
00184 #define OID_PKCS1_MD4 OID_PKCS1 "\x03"
00185 #define OID_PKCS1_MD5 OID_PKCS1 "\x04"
00186 #define OID_PKCS1_SHA1 OID_PKCS1 "\x05"
00187 #define OID_PKCS1_SHA224 OID_PKCS1 "\x0e"
00188 #define OID_PKCS1_SHA256 OID_PKCS1 "\x0b"
00189 #define OID_PKCS1_SHA384 OID_PKCS1 "\x0c"
00190 #define OID_PKCS1_SHA512 OID_PKCS1 "\x0d"
00192 #define OID_RSA_SHA_OBS "\x2B\x0E\x03\x02\x1D"
00193
00194 #define OID_PKCS9_EMAIL OID_PKCS9 "\x01"
00196
00197
00198
00199 #define OID_DIGEST_ALG_MD2 OID_RSA_COMPANY "\x02\x02"
00200 #define OID_DIGEST_ALG_MD4 OID_RSA_COMPANY "\x02\x04"
00201 #define OID_DIGEST_ALG_MD5 OID_RSA_COMPANY "\x02\x05"
00202 #define OID_DIGEST_ALG_SHA1 OID_ISO_IDENTIFIED_ORG OID_OIW_SECSIG_SHA1
00203 #define OID_DIGEST_ALG_SHA224 OID_GOV "\x03\x04\x02\x04"
00204 #define OID_DIGEST_ALG_SHA256 OID_GOV "\x03\x04\x02\x01"
00206 #define OID_DIGEST_ALG_SHA384 OID_GOV "\x03\x04\x02\x02"
00208 #define OID_DIGEST_ALG_SHA512 OID_GOV "\x03\x04\x02\x03"
00210 #define OID_HMAC_SHA1 OID_RSA_COMPANY "\x02\x07"
00212
00213
00214
00215 #define OID_DES_CBC OID_ISO_IDENTIFIED_ORG OID_OIW_SECSIG_ALG "\x07"
00216 #define OID_DES_EDE3_CBC OID_RSA_COMPANY "\x03\x07"
00218
00219
00220
00221 #define OID_PKCS5_PBKDF2 OID_PKCS5 "\x0c"
00222 #define OID_PKCS5_PBES2 OID_PKCS5 "\x0d"
00223 #define OID_PKCS5_PBMAC1 OID_PKCS5 "\x0e"
00225
00226
00227
00228 #define OID_PKCS5_PBE_MD2_DES_CBC OID_PKCS5 "\x01"
00229 #define OID_PKCS5_PBE_MD2_RC2_CBC OID_PKCS5 "\x04"
00230 #define OID_PKCS5_PBE_MD5_DES_CBC OID_PKCS5 "\x03"
00231 #define OID_PKCS5_PBE_MD5_RC2_CBC OID_PKCS5 "\x06"
00232 #define OID_PKCS5_PBE_SHA1_DES_CBC OID_PKCS5 "\x0a"
00233 #define OID_PKCS5_PBE_SHA1_RC2_CBC OID_PKCS5 "\x0b"
00235
00236
00237
00238 #define OID_PKCS9_CSR_EXT_REQ OID_PKCS9 "\x0e"
00240
00241
00242
00243 #define OID_PKCS12_PBE OID_PKCS12 "\x01"
00245 #define OID_PKCS12_PBE_SHA1_RC4_128 OID_PKCS12_PBE "\x01"
00246 #define OID_PKCS12_PBE_SHA1_RC4_40 OID_PKCS12_PBE "\x02"
00247 #define OID_PKCS12_PBE_SHA1_DES3_EDE_CBC OID_PKCS12_PBE "\x03"
00248 #define OID_PKCS12_PBE_SHA1_DES2_EDE_CBC OID_PKCS12_PBE "\x04"
00249 #define OID_PKCS12_PBE_SHA1_RC2_128_CBC OID_PKCS12_PBE "\x05"
00250 #define OID_PKCS12_PBE_SHA1_RC2_40_CBC OID_PKCS12_PBE "\x06"
00252
00253
00254
00255
00256
00257
00258 #define OID_EC_ALG_UNRESTRICTED OID_ANSI_X9_62 "\x02\01"
00259
00260
00261
00262
00263 #define OID_EC_ALG_ECDH OID_CERTICOM "\x01\x0c"
00264
00265
00266
00267
00268
00269
00270
00271 #define OID_EC_GRP_SECP192R1 OID_ANSI_X9_62 "\x03\x01\x01"
00272
00273
00274
00275 #define OID_EC_GRP_SECP224R1 OID_CERTICOM "\x00\x21"
00276
00277
00278
00279 #define OID_EC_GRP_SECP256R1 OID_ANSI_X9_62 "\x03\x01\x07"
00280
00281
00282
00283 #define OID_EC_GRP_SECP384R1 OID_CERTICOM "\x00\x22"
00284
00285
00286
00287 #define OID_EC_GRP_SECP521R1 OID_CERTICOM "\x00\x23"
00288
00289
00290
00291
00292
00293
00294
00295 #define OID_EC_BRAINPOOL_V1 OID_TELETRUST "\x03\x03\x02\x08\x01\x01"
00296
00297
00298 #define OID_EC_GRP_BP256R1 OID_EC_BRAINPOOL_V1 "\x07"
00299
00300
00301 #define OID_EC_GRP_BP384R1 OID_EC_BRAINPOOL_V1 "\x0B"
00302
00303
00304 #define OID_EC_GRP_BP512R1 OID_EC_BRAINPOOL_V1 "\x0D"
00305
00306
00307
00308
00309 #define OID_ANSI_X9_62_SIG OID_ANSI_X9_62 "\x04"
00310 #define OID_ANSI_X9_62_SIG_SHA2 OID_ANSI_X9_62_SIG "\x03"
00311
00312
00313
00314 #define OID_ECDSA_SHA1 OID_ANSI_X9_62_SIG "\x01"
00315
00316
00317
00318
00319 #define OID_ECDSA_SHA224 OID_ANSI_X9_62_SIG_SHA2 "\x01"
00320
00321
00322
00323
00324 #define OID_ECDSA_SHA256 OID_ANSI_X9_62_SIG_SHA2 "\x02"
00325
00326
00327
00328
00329 #define OID_ECDSA_SHA384 OID_ANSI_X9_62_SIG_SHA2 "\x03"
00330
00331
00332
00333
00334 #define OID_ECDSA_SHA512 OID_ANSI_X9_62_SIG_SHA2 "\x04"
00335
00336 #ifdef __cplusplus
00337 extern "C" {
00338 #endif
00339
00343 typedef struct {
00344 const char *asn1;
00345 size_t asn1_len;
00346 const char *name;
00347 const char *description;
00348 } oid_descriptor_t;
00349
00360 int oid_get_numeric_string( char *buf, size_t size, const asn1_buf *oid );
00361
00362 #if defined(POLARSSL_X509_USE_C) || defined(POLARSSL_X509_CREATE_C)
00363
00371 int oid_get_x509_ext_type( const asn1_buf *oid, int *ext_type );
00372 #endif
00373
00383 int oid_get_attr_short_name( const asn1_buf *oid, const char **short_name );
00384
00393 int oid_get_pk_alg( const asn1_buf *oid, pk_type_t *pk_alg );
00394
00404 int oid_get_oid_by_pk_alg( pk_type_t pk_alg,
00405 const char **oid, size_t *olen );
00406
00407 #if defined(POLARSSL_ECP_C)
00408
00416 int oid_get_ec_grp( const asn1_buf *oid, ecp_group_id *grp_id );
00417
00427 int oid_get_oid_by_ec_grp( ecp_group_id grp_id,
00428 const char **oid, size_t *olen );
00429 #endif
00430
00431 #if defined(POLARSSL_MD_C)
00432
00441 int oid_get_sig_alg( const asn1_buf *oid,
00442 md_type_t *md_alg, pk_type_t *pk_alg );
00443
00452 int oid_get_sig_alg_desc( const asn1_buf *oid, const char **desc );
00453
00464 int oid_get_oid_by_sig_alg( pk_type_t pk_alg, md_type_t md_alg,
00465 const char **oid, size_t *olen );
00466
00475 int oid_get_md_alg( const asn1_buf *oid, md_type_t *md_alg );
00476 #endif
00477
00486 int oid_get_extended_key_usage( const asn1_buf *oid, const char **desc );
00487
00497 int oid_get_oid_by_md( md_type_t md_alg, const char **oid, size_t *olen );
00498
00499 #if defined(POLARSSL_CIPHER_C)
00500
00508 int oid_get_cipher_alg( const asn1_buf *oid, cipher_type_t *cipher_alg );
00509 #endif
00510
00511 #if defined(POLARSSL_PKCS12_C)
00512
00522 int oid_get_pkcs12_pbe_alg( const asn1_buf *oid, md_type_t *md_alg,
00523 cipher_type_t *cipher_alg );
00524 #endif
00525
00526 #ifdef __cplusplus
00527 }
00528 #endif
00529
00530 #endif