Milán Major

netscape-revival

1 branch
Code

security/lib/util/secoidt.h

#ifndef _SECOIDT_H_
#define _SECOIDT_H_
/*
 * secoidt.h - public data structures for ASN.1 OID functions
 *
 * $Id: secoidt.h,v 1.12.2.7 1997/05/24 00:24:53 jwz Exp $
 */

typedef struct SECOidDataStr SECOidData;
typedef struct SECAlgorithmIDStr SECAlgorithmID;

/*
** An X.500 algorithm identifier
*/
struct SECAlgorithmIDStr {
    SECItem algorithm;
    SECItem parameters;
};

/*
 * Misc object IDs - these numbers are for convenient handling.
 * They are mapped into real object IDs
 */
typedef enum {
    SEC_OID_UNKNOWN,
    SEC_OID_MD2,
    SEC_OID_MD4,
    SEC_OID_MD5,
    SEC_OID_SHA1,
    SEC_OID_RC2_CBC,
    SEC_OID_RC4,
    SEC_OID_DES_EDE3_CBC,
    SEC_OID_RC5_CBC_PAD,
    SEC_OID_DES_ECB,
    SEC_OID_DES_CBC,
    SEC_OID_DES_OFB,
    SEC_OID_DES_CFB,
    SEC_OID_DES_MAC,
    SEC_OID_DES_EDE,
    SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE,
    SEC_OID_PKCS1_RSA_ENCRYPTION,
    SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION,
    SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION,
    SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION,
    SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION,
    SEC_OID_PKCS5_PBE_WITH_MD2_AND_DES_CBC,
    SEC_OID_PKCS5_PBE_WITH_MD5_AND_DES_CBC,
    SEC_OID_PKCS5_PBE_WITH_SHA1_AND_DES_CBC,
    SEC_OID_PKCS7,
    SEC_OID_PKCS7_DATA,
    SEC_OID_PKCS7_SIGNED_DATA,
    SEC_OID_PKCS7_ENVELOPED_DATA,
    SEC_OID_PKCS7_SIGNED_ENVELOPED_DATA,
    SEC_OID_PKCS7_DIGESTED_DATA,
    SEC_OID_PKCS7_ENCRYPTED_DATA,
    SEC_OID_PKCS9_EMAIL_ADDRESS,
    SEC_OID_PKCS9_UNSTRUCTURED_NAME,
    SEC_OID_PKCS9_CONTENT_TYPE,
    SEC_OID_PKCS9_MESSAGE_DIGEST,
    SEC_OID_PKCS9_SIGNING_TIME,
    SEC_OID_PKCS9_COUNTER_SIGNATURE,
    SEC_OID_PKCS9_CHALLENGE_PASSWORD,
    SEC_OID_PKCS9_UNSTRUCTURED_ADDRESS,
    SEC_OID_PKCS9_EXTENDED_CERTIFICATE_ATTRIBUTES,
    SEC_OID_PKCS9_SMIME_CAPABILITIES,
    SEC_OID_AVA_COMMON_NAME,
    SEC_OID_AVA_COUNTRY_NAME,
    SEC_OID_AVA_LOCALITY,
    SEC_OID_AVA_STATE_OR_PROVINCE,
    SEC_OID_AVA_ORGANIZATION_NAME,
    SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME,
    SEC_OID_NS_TYPE_GIF,
    SEC_OID_NS_TYPE_JPEG,
    SEC_OID_NS_TYPE_URL,
    SEC_OID_NS_TYPE_HTML,
    SEC_OID_NS_TYPE_CERT_SEQUENCE,
    SEC_OID_MISSI_KEA_DSS_OLD,
    SEC_OID_MISSI_DSS_OLD,
    SEC_OID_MISSI_KEA_DSS,
    SEC_OID_MISSI_DSS,

    /* Netscape private certificate extensions */
    SEC_OID_NS_CERT_EXT_NETSCAPE_OK,
    SEC_OID_NS_CERT_EXT_ISSUER_LOGO,
    SEC_OID_NS_CERT_EXT_SUBJECT_LOGO,
    SEC_OID_NS_CERT_EXT_CERT_TYPE,
    SEC_OID_NS_CERT_EXT_BASE_URL,
    SEC_OID_NS_CERT_EXT_REVOCATION_URL,
    SEC_OID_NS_CERT_EXT_CA_REVOCATION_URL,
    SEC_OID_NS_CERT_EXT_CA_CRL_URL,
    SEC_OID_NS_CERT_EXT_CA_CERT_URL,
    SEC_OID_NS_CERT_EXT_CERT_RENEWAL_URL,
    SEC_OID_NS_CERT_EXT_CA_POLICY_URL,
    SEC_OID_NS_CERT_EXT_HOMEPAGE_URL,
    SEC_OID_NS_CERT_EXT_ENTITY_LOGO,
    SEC_OID_NS_CERT_EXT_USER_PICTURE,
    SEC_OID_NS_CERT_EXT_SSL_SERVER_NAME,
    SEC_OID_NS_CERT_EXT_COMMENT,
    SEC_OID_NS_KEY_USAGE_GOVT_APPROVED,

    /* x.509 v3 Extensions */
    SEC_OID_X509_SUBJECT_DIRECTORY_ATTR,
    SEC_OID_X509_SUBJECT_KEY_ID,
    SEC_OID_X509_KEY_USAGE,
    SEC_OID_X509_PRIVATE_KEY_USAGE_PERIOD,
    SEC_OID_X509_SUBJECT_ALT_NAME,
    SEC_OID_X509_ISSUER_ALT_NAME,
    SEC_OID_X509_BASIC_CONSTRAINTS,
    SEC_OID_X509_NAME_CONSTRAINTS,
    SEC_OID_X509_CRL_DIST_POINTS,
    SEC_OID_X509_CERTIFICATE_POLICIES,
    SEC_OID_X509_POLICY_MAPPINGS,
    SEC_OID_X509_POLICY_CONSTRAINTS,
    SEC_OID_X509_AUTH_KEY_ID,
    SEC_OID_X509_EXT_KEY_USAGE,
    SEC_OID_X509_CRL_NUMBER,
    SEC_OID_X509_REASON_CODE,
    SEC_OID_X509_INVALID_DATE,
    /* End of x.509 v3 Extensions */    

    SEC_OID_X500_RSA_ENCRYPTION,

    /* alg 1485 additions */
    SEC_OID_RFC1274_UID,
    SEC_OID_RFC1274_MAIL,

    /* PKCS 12 additions */
    SEC_OID_PKCS12,
    SEC_OID_PKCS12_MODE_IDS,
    SEC_OID_PKCS12_ESPVK_IDS,
    SEC_OID_PKCS12_BAG_IDS,
    SEC_OID_PKCS12_CERT_BAG_IDS,
    SEC_OID_PKCS12_OIDS,
    SEC_OID_PKCS12_PBE_IDS,
    SEC_OID_PKCS12_SIGNATURE_IDS,
    SEC_OID_PKCS12_ENVELOPING_IDS,
    SEC_OID_PKCS12_OFFLINE_TRANSPORT_MODE,
    SEC_OID_PKCS12_ONLINE_TRANSPORT_MODE,
    SEC_OID_PKCS12_PKCS8_KEY_SHROUDING,
    SEC_OID_PKCS12_KEY_BAG_ID,
    SEC_OID_PKCS12_CERT_AND_CRL_BAG_ID,
    SEC_OID_PKCS12_SECRET_BAG_ID,
    SEC_OID_PKCS12_X509_CERT_CRL_BAG,
    SEC_OID_PKCS12_SDSI_CERT_BAG,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_128_BIT_RC4,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_40_BIT_RC4,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_TRIPLE_DES_CBC,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_128_BIT_RC2_CBC,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_40_BIT_RC2_CBC,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_RC2_CBC,
    SEC_OID_PKCS12_PBE_WITH_SHA1_AND_RC4,
    SEC_OID_PKCS12_RSA_ENCRYPTION_WITH_128_BIT_RC4,
    SEC_OID_PKCS12_RSA_ENCRYPTION_WITH_40_BIT_RC4,
    SEC_OID_PKCS12_RSA_ENCRYPTION_WITH_TRIPLE_DES,
    SEC_OID_PKCS12_RSA_SIGNATURE_WITH_SHA1_DIGEST,
    /* end of PKCS 12 additions */

    /* DSA signatures */
    SEC_OID_ANSIX9_DSA_SIGNATURE,
    SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST,

    /* Verisign OIDs */
    SEC_OID_VERISIGN_USER_NOTICES,

    /* PKIX OIDs */
    SEC_OID_PKIX_CPS_POINTER_QUALIFIER,
    SEC_OID_PKIX_USER_NOTICE_QUALIFIER,

    SEC_OID_TOTAL
} SECOidTag;

/* fake OID for DSS sign/verify */
#define SEC_OID_SHA SEC_OID_MISS_DSS

typedef enum {
    INVALID_CERT_EXTENSION,
    UNSUPPORTED_CERT_EXTENSION,
    SUPPORTED_CERT_EXTENSION
} SECSupportExtenTag;

struct SECOidDataStr {
    SECItem oid;
    SECOidTag offset;
    char *desc;
    unsigned long mechanism;
    SECSupportExtenTag supportedExtension;	/* only used for x.509 v3 extensions, so
						   that we can print the names of those
						   extensions that we don't even support */
};

#endif /* _SECOIDT_H_ */