/****************************************************************************** * * Copyright (c) 2002-2004 PalmSource, Inc. All rights reserved. * * File: SslLibAsn1.h * * Release: eclipse 5 SDK (68K) R4. * *****************************************************************************/ #ifndef __SslLibAsn1_h__ #define __SslLibAsn1_h__ /* More ASN.1 Information can be found at * http://www.itu.int/ITU-T/asn1/ */ #define asn1Eoc 0 #define asn1Boolean 1 #define asn1Integer 2 #define asn1BitString 3 #define asn1OctetString 4 #define asn1Null 5 #define asn1Object 6 #define asn1ObjectDescriptor 7 #define asn1External 8 #define asn1Real 9 #define asn1Enumerated 10 #define asn1EmbeddedPdv 11 #define asn1Utf8String 12 #define asn1Sequence 16 #define asn1Set 17 #define asn1NumericString 18 #define asn1PrintableString 19 #define asn1T61String 20 #define asn1TeletexString 20 #define asn1VideotexString 21 #define asn1Ia5String 22 #define asn1UtcTime 23 #define asn1GeneralizedTime 24 #define asn1GraphicString 25 #define asn1Iso64String 26 #define asn1VisibleString 26 #define asn1GeneralString 27 #define asn1UniversalString 28 #define asn1BmpString 30 #define asn1ExItemTypeX509 32 #define asn1FldX509Version 2 /* X509 version number */ #define asn1FldX509SerialNumber 3 /* Serial number */ #define asn1FldX509IssuerRdn 4 /* The issuer name blob */ #define asn1FldX509SubjectRdn 5 /* The subject name blob */ #define asn1FldX509NotBefore 6 /* NotBefore data blob */ #define asn1FldX509NotAfter 7 /* NotAfter data blob */ #define asn1FldX509PubKeyBody 8 /* The pub key stuff */ #define asn1FldX509PubKeyOid 9 /* The OID for the public key type */ #define asn1FldX509PubKeyParams 10 /* The OID for the public key type */ #define asn1FldX509PubKey 11 /* The public key blob */ #define asn1FldX509SignatureOid 12 /* The OID for the signature algorithm*/ #define asn1FldX509SignatureParams 13 #define asn1FldX509Signature 14 /* The signature blob */ #define asn1FldX509CertIssuerId 15 #define asn1FldX509CertSubjectId 16 #define asn1FldX509IssuerUniqueIdentifier 21 #define asn1FldX509SubjectUniqueIdentifier 22 #define asn1FldX509Extensions 23 /* X509v3 extension blob */ #define asn1ExItemTypeRSA 33 #define asn1FldRsaNumPrimes 0x0001 /* Num in len, not data bytes */ #define asn1FldRsaN 0x0010 #define asn1FldRsaE 0x0011 #define asn1FldRsaD 0x0012 #define asn1FldRsaPrime(n) (0x0013+((n)*3)) #define asn1FldRsaExp(n) (0x0014+((n)*3)) #define asn1FldRsaInv(n) (0x0015+((n)*3)) /* Note that P and Q are swapped */ #define asn1FldRsaQ asn1FldRsaPrime(0) #define asn1FldRsaDmq1 asn1FldRsaExp(0) #define asn1FldRsaP asn1FldRsaPrime(1) #define asn1FldRsaDmp1 asn1FldRsaExp(1) #define asn1FldRsaIqmp asn1FldRsaInv(1) #define asn1ExItemTypeRdn 34 /* 4n+0 values are OID's, rn+1 values are the relevent data item * The values will be decoded into sequention locations */ #define asn1FldRdnOid 4 #define asn1FldRdnValue 5 #define asn1FldRdnOidN(n) (R_RDN_OID+(n)*4) #define asn1FldRdnValueN(n) (R_RDN_OID+(n)*4+1) #define asn1ExItemTypeX509Ex 35 #define asn1FldX509ExOid 1 /* First extension OID */ #define asn1FldX509ExCritical 2 /* First extension critical flag */ #define asn1FldX509ExBytes 3 /* First extension bytes */ #define asn1FldX509ExOidN(n) (1+(n*3)) /* N'th OID */ #define asn1FldX509ExCriticalN(n) (2+(n*3)) /* N'th critical flag */ #define asn1FldX509ExBytesN(n) (3+(n*3)) /* N'th data bytes */ #define asn1ExItemTypeX509ExData 36 #define asn1FldX509ExBasicConstraintsCa 1 /* Value is in the length, not the data bytes */ #define asn1FldX509ExBasicConstraintsPathLenConstraint 2 typedef struct Asn1OidBer_st { UInt16 length; UInt8 *data; } Asn1OidBer; /**********************************************/ /* ASN.1 Object identifiers for RDN */ /**********************************************/ #define asn1Len_commonName 5 #define asn1Str_commonName \ (unsigned char *)"\006\003\125\004\003" #define asn1Ary_commonName \ {0x06,0x03,0x55,0x04,0x03} #define asn1OidBer_commonName \ {asn1Len_commonName,asn1Str_commonName} #define asn1Len_surnameName 5 #define asn1Str_surnameName \ (unsigned char *)"\006\003\125\004\004" #define asn1Ary_surnameName \ {0x06,0x03,0x55,0x04,0x04} #define asn1OidBer_surnameName \ {asn1Len_surnameName,asn1Str_surnameName} #define asn1Len_serialNumber 5 #define asn1Str_serialNumber \ (unsigned char *)"\006\003\125\004\005" #define asn1Ary_serialNumber \ {0x06,0x03,0x55,0x04,0x05} #define asn1OidBer_serialNumber \ {asn1Len_serialNumber,asn1Str_serialNumber} #define asn1Len_countryName 5 #define asn1Str_countryName \ (unsigned char *)"\006\003\125\004\006" #define asn1Ary_countryName \ {0x06,0x03,0x55,0x04,0x06} #define asn1OidBer_countryName \ {asn1Len_countryName,asn1Str_countryName} #define asn1Len_localityName 5 #define asn1Str_localityName \ (unsigned char *)"\006\003\125\004\007" #define asn1Ary_localityName \ {0x06,0x03,0x55,0x04,0x07} #define asn1OidBer_localityName \ {asn1Len_localityName,asn1Str_localityName} #define asn1Len_stateOrProvinceName 5 #define asn1Str_stateOrProvinceName \ (unsigned char *)"\006\003\125\004\010" #define asn1Ary_stateOrProvinceName \ {0x06,0x03,0x55,0x04,0x08} #define asn1OidBer_stateOrProvinceName \ {asn1Len_stateOrProvinceName,asn1Str_stateOrProvinceName} #define asn1Len_organizationName 5 #define asn1Str_organizationName \ (unsigned char *)"\006\003\125\004\012" #define asn1Ary_organizationName \ {0x06,0x03,0x55,0x04,0x0a} #define asn1OidBer_organizationName \ {asn1Len_organizationName,asn1Str_organizationName} #define asn1Len_organizationUnitName 5 #define asn1Str_organizationUnitName \ (unsigned char *)"\006\003\125\004\013" #define asn1Ary_organizationUnitName \ {0x06,0x03,0x55,0x04,0x0b} #define asn1OidBer_organizationUnitName \ {asn1Len_organizationUnitName,asn1Str_organizationUnitName} #define asn1Len_title 5 #define asn1Str_title \ (unsigned char *)"\006\003\125\004\014" #define asn1Ary_title \ {0x06,0x03,0x55,0x04,0x0c} #define asn1OidBer_title \ {asn1Len_title,asn1Str_title} #define asn1Len_description 5 #define asn1Str_description \ (unsigned char *)"\006\003\125\004\015" #define asn1Ary_description \ {0x06,0x03,0x55,0x04,0x0d} #define asn1OidBer_description \ {asn1Len_description,asn1Str_description} #define asn1Len_emailAddress 11 #define asn1Str_emailAddress \ (unsigned char *)"\006\011\052\206\110\206\367\015\001\011\001" #define asn1Ary_emailAddress \ {0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x09,0x01} #define asn1OidBer_emailAddress \ {asn1Len_emailAddress,asn1Str_emailAddress} #define asn1Len_name 5 #define asn1Str_name \ (unsigned char *)"\006\003\125\004\051" #define asn1Ary_name \ {0x06,0x03,0x55,0x04,0x29} #define asn1OidBer_name \ {asn1Len_name,asn1Str_name} #define asn1Len_givenName 5 #define asn1Str_givenName \ (unsigned char *)"\006\003\125\004\052" #define asn1Ary_givenName \ {0x06,0x03,0x55,0x04,0x2a} #define asn1OidBer_givenName \ {asn1Len_givenName,asn1Str_givenName} #define asn1Len_initials 5 #define asn1Str_initials \ (unsigned char *)"\006\003\125\004\053" #define asn1Ary_initials \ {0x06,0x03,0x55,0x04,0x2b} #define asn1OidBer_initials \ {asn1Len_initials,asn1Str_initials} #define asn1Len_uniqueIdentifier 5 #define asn1Str_uniqueIdentifier \ (unsigned char *)"\006\003\125\004\055" #define asn1Ary_uniqueIdentifier \ {0x06,0x03,0x55,0x04,0x2d} #define asn1OidBer_uniqueIdentifier \ {asn1Len_uniqueIdentifier,asn1Str_uniqueIdentifier} #define asn1Len_dnQualifier 5 #define asn1Str_dnQualifier \ (unsigned char *)"\006\003\125\004\056" #define asn1Ary_dnQualifier \ {0x06,0x03,0x55,0x04,0x2e} #define asn1OidBer_dnQualifier \ {asn1Len_dnQualifier,asn1Str_dnQualifier} /**********************************************/ /* ASN.1 Oids assoicated with PKCS1/RSA */ /**********************************************/ #define asn1Len_rsaEncryption 11 #define asn1Str_rsaEncryption \ (unsigned char *)"\006\011\052\206\110\206\367\015\001\001\001" #define asn1Ary_rsaEncryption \ {0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x01} #define asn1OidBer_rsaEncryption \ {asn1Len_rsaEncryption,asn1Str_rsaEncryption} #define asn1Len_md2WithRSAEncryption 11 #define asn1Str_md2WithRSAEncryption \ (unsigned char *)"\006\011\052\206\110\206\367\015\001\001\002" #define asn1Ary_md2WithRSAEncryption \ {0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x02} #define asn1OidBer_md2WithRSAEncryption \ {asn1Len_md2WithRSAEncryption,asn1Str_md2WithRSAEncryption} #define asn1Len_md5WithRSAEncryption 11 #define asn1Str_md5WithRSAEncryption \ (unsigned char *)"\006\011\052\206\110\206\367\015\001\001\004" #define asn1Ary_md5WithRSAEncryption \ {0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x04} #define asn1OidBer_md5WithRSAEncryption \ {asn1Len_md5WithRSAEncryption,asn1Str_md5WithRSAEncryption} #define asn1Len_sha1WithRSAEncryption 11 #define asn1Str_sha1WithRSAEncryption \ (unsigned char *)"\006\011\052\206\110\206\367\015\001\001\005" #define asn1Ary_sha1WithRSAEncryption \ {0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01,0x01,0x05} #define asn1OidBer_sha1WithRSAEncryption \ {asn1Len_sha1WithRSAEncryption,asn1Str_sha1WithRSAEncryption} #define asn1Len_md5WithRSA 7 #define asn1Str_md5WithRSA \ (unsigned char *)"\006\005\053\016\003\002\003" #define asn1Ary_md5WithRSA \ {0x06,0x05,0x2b,0x0e,0x03,0x02,0x03} #define asn1OidBer_md5WithRSA \ {asn1Len_md5WithRSA,asn1Str_md5WithRSA} #define asn1Len_sha1WithRSA 7 #define asn1Str_sha1WithRSA \ (unsigned char *)"\006\005\053\016\003\002\035" #define asn1Ary_sha1WithRSA \ {0x06,0x05,0x2b,0x0e,0x03,0x02,0x1d} #define asn1OidBer_sha1WithRSA \ {asn1Len_sha1WithRSA,asn1Str_sha1WithRSA} /**********************************************/ /* ASN.1 Oids associated with X509 extensions */ /**********************************************/ #define asn1Len_subjectDirectoryAttributes 5 #define asn1Str_subjectDirectoryAttributes \ (unsigned char *)"\006\003\125\035\011" #define asn1Ary_subjectDirectoryAttributes \ {0x06,0x03,0x55,0x1d,0x09} #define asn1OidBer_subjectDirectoryAttributes \ {asn1Len_subjectDirectoryAttributes,asn1Str_subjectDirectoryAttributes} #define asn1Len_subjectKeyIdentifier 5 #define asn1Str_subjectKeyIdentifier \ (unsigned char *)"\006\003\125\035\016" #define asn1Ary_subjectKeyIdentifier \ {0x06,0x03,0x55,0x1d,0x0e} #define asn1OidBer_subjectKeyIdentifier \ {asn1Len_subjectKeyIdentifier,asn1Str_subjectKeyIdentifier} #define asn1Len_keyUsage 5 #define asn1Str_keyUsage \ (unsigned char *)"\006\003\125\035\017" #define asn1Ary_keyUsage \ {0x06,0x03,0x55,0x1d,0x0f} #define asn1OidBer_keyUsage \ {asn1Len_keyUsage,asn1Str_keyUsage} #define asn1Len_privateKeyUsagePeriod 5 #define asn1Str_privateKeyUsagePeriod \ (unsigned char *)"\006\003\125\035\020" #define asn1Ary_privateKeyUsagePeriod \ {0x06,0x03,0x55,0x1d,0x10} #define asn1OidBer_privateKeyUsagePeriod \ {asn1Len_privateKeyUsagePeriod,asn1Str_privateKeyUsagePeriod} #define asn1Len_subjectAltName 5 #define asn1Str_subjectAltName \ (unsigned char *)"\006\003\125\035\021" #define asn1Ary_subjectAltName \ {0x06,0x03,0x55,0x1d,0x11} #define asn1OidBer_subjectAltName \ {asn1Len_subjectAltName,asn1Str_subjectAltName} #define asn1Len_issuerAltName 5 #define asn1Str_issuerAltName \ (unsigned char *)"\006\003\125\035\022" #define asn1Ary_issuerAltName \ {0x06,0x03,0x55,0x1d,0x12} #define asn1OidBer_issuerAltName \ {asn1Len_issuerAltName,asn1Str_issuerAltName} #define asn1Len_basicConstraints 5 #define asn1Str_basicConstraints \ (unsigned char *)"\006\003\125\035\023" #define asn1Ary_basicConstraints \ {0x06,0x03,0x55,0x1d,0x13} #define asn1OidBer_basicConstraints \ {asn1Len_basicConstraints,asn1Str_basicConstraints} #define asn1Len_cRLNumber 5 #define asn1Str_cRLNumber \ (unsigned char *)"\006\003\125\035\024" #define asn1Ary_cRLNumber \ {0x06,0x03,0x55,0x1d,0x14} #define asn1OidBer_cRLNumber \ {asn1Len_cRLNumber,asn1Str_cRLNumber} #define asn1Len_reasonCode 5 #define asn1Str_reasonCode \ (unsigned char *)"\006\003\125\035\025" #define asn1Ary_reasonCode \ {0x06,0x03,0x55,0x1d,0x15} #define asn1OidBer_reasonCode \ {asn1Len_reasonCode,asn1Str_reasonCode} #define asn1Len_instructionCode 5 #define asn1Str_instructionCode \ (unsigned char *)"\006\003\125\035\027" #define asn1Ary_instructionCode \ {0x06,0x03,0x55,0x1d,0x17} #define asn1OidBer_instructionCode \ {asn1Len_instructionCode,asn1Str_instructionCode} #define asn1Len_invalidityDate 5 #define asn1Str_invalidityDate \ (unsigned char *)"\006\003\125\035\030" #define asn1Ary_invalidityDate \ {0x06,0x03,0x55,0x1d,0x18} #define asn1OidBer_invalidityDate \ {asn1Len_invalidityDate,asn1Str_invalidityDate} #define asn1Len_deltaCRLIndicator 5 #define asn1Str_deltaCRLIndicator \ (unsigned char *)"\006\003\125\035\033" #define asn1Ary_deltaCRLIndicator \ {0x06,0x03,0x55,0x1d,0x1b} #define asn1OidBer_deltaCRLIndicator \ {asn1Len_deltaCRLIndicator,asn1Str_deltaCRLIndicator} #define asn1Len_issuingDistributionPoint 5 #define asn1Str_issuingDistributionPoint \ (unsigned char *)"\006\003\125\035\034" #define asn1Ary_issuingDistributionPoint \ {0x06,0x03,0x55,0x1d,0x1c} #define asn1OidBer_issuingDistributionPoint \ {asn1Len_issuingDistributionPoint,asn1Str_issuingDistributionPoint} #define asn1Len_certificateIssuer 5 #define asn1Str_certificateIssuer \ (unsigned char *)"\006\003\125\035\035" #define asn1Ary_certificateIssuer \ {0x06,0x03,0x55,0x1d,0x1d} #define asn1OidBer_certificateIssuer \ {asn1Len_certificateIssuer,asn1Str_certificateIssuer} #define asn1Len_nameConstraints 5 #define asn1Str_nameConstraints \ (unsigned char *)"\006\003\125\035\036" #define asn1Ary_nameConstraints \ {0x06,0x03,0x55,0x1d,0x1e} #define asn1OidBer_nameConstraints \ {asn1Len_nameConstraints,asn1Str_nameConstraints} #define asn1Len_cRLDistributionPoints 5 #define asn1Str_cRLDistributionPoints \ (unsigned char *)"\006\003\125\035\037" #define asn1Ary_cRLDistributionPoints \ {0x06,0x03,0x55,0x1d,0x1f} #define asn1OidBer_cRLDistributionPoints \ {asn1Len_cRLDistributionPoints,asn1Str_cRLDistributionPoints} #define asn1Len_certificatePolicies 5 #define asn1Str_certificatePolicies \ (unsigned char *)"\006\003\125\035\040" #define asn1Ary_certificatePolicies \ {0x06,0x03,0x55,0x1d,0x20} #define asn1OidBer_certificatePolicies \ {asn1Len_certificatePolicies,asn1Str_certificatePolicies} #define asn1Len_policyMappings 5 #define asn1Str_policyMappings \ (unsigned char *)"\006\003\125\035\041" #define asn1Ary_policyMappings \ {0x06,0x03,0x55,0x1d,0x21} #define asn1OidBer_policyMappings \ {asn1Len_policyMappings,asn1Str_policyMappings} #define asn1Len_authorityKeyIdentifier 5 #define asn1Str_authorityKeyIdentifier \ (unsigned char *)"\006\003\125\035\043" #define asn1Ary_authorityKeyIdentifier \ {0x06,0x03,0x55,0x1d,0x23} #define asn1OidBer_authorityKeyIdentifier \ {asn1Len_authorityKeyIdentifier,asn1Str_authorityKeyIdentifier} #define asn1Len_policyConstraints 5 #define asn1Str_policyConstraints \ (unsigned char *)"\006\003\125\035\044" #define asn1Ary_policyConstraints \ {0x06,0x03,0x55,0x1d,0x24} #define asn1OidBer_policyConstraints \ {asn1Len_policyConstraints,asn1Str_policyConstraints} #define asn1Len_extKeyUsage 5 #define asn1Str_extKeyUsage \ (unsigned char *)"\006\003\125\035\045" #define asn1Ary_extKeyUsage \ {0x06,0x03,0x55,0x1d,0x25} #define asn1OidBer_extKeyUsage \ {asn1Len_extKeyUsage,asn1Str_extKeyUsage} #define asn1Len_microsoftIndividualCodeSigning 12 #define asn1Str_microsoftIndividualCodeSigning \ (unsigned char *)"\006\012\053\006\001\004\001\202\067\002\001\025" #define asn1Ary_microsoftIndividualCodeSigning \ {0x06,0x0A,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x15} #define asn1OidBer_microsoftIndividualCodeSigning \ {asn1Len_microsoftIndividualCodeSigning,asn1Str_microsoftIndividualCodeSigning} #define asn1Len_microsoftCommercialCodeSigning 12 #define asn1Str_microsoftCommercialCodeSigning \ (unsigned char *)"\006\012\053\006\001\004\001\202\067\002\001\026" #define asn1Ary_microsoftCommercialCodeSigning \ {0x06,0x0A,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x02,0x01,0x16} #define asn1OidBer_microsoftCommercialCodeSigning \ {asn1Len_microsoftCommercialCodeSigning,asn1Str_microsoftCommercialCodeSigning} #define asn1Len_microsoftTrustListSigning 12 #define asn1Str_microsoftTrustListSigning \ (unsigned char *)"\006\012\053\006\001\004\001\202\067\012\003\001" #define asn1Ary_microsoftTrustListSigning \ {0x06,0x0A,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x0a,0x03,0x01} #define asn1OidBer_microsoftTrustListSigning \ {asn1Len_microsoftTrustListSigning,asn1Str_microsoftTrustListSigning} #define asn1Len_microsoftServerGatedCrypto 12 #define asn1Str_microsoftServerGatedCrypto \ (unsigned char *)"\006\012\053\006\001\004\001\202\067\012\003\003" #define asn1Ary_microsoftServerGatedCrypto \ {0x06,0x0A,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x0a,0x03,0x03} #define asn1OidBer_microsoftServerGatedCrypto \ {asn1Len_microsoftServerGatedCrypto,asn1Str_microsoftServerGatedCrypto} #define asn1Len_microsoftEncryptedFileSystem 12 #define asn1Str_microsoftEncryptedFileSystem \ (unsigned char *)"\006\012\053\006\001\004\001\202\067\012\003\004" #define asn1Ary_microsoftEncryptedFileSystem \ {0x06,0x0A,0x2b,0x06,0x01,0x04,0x01,0x82,0x37,0x0a,0x03,0x04} #define asn1OidBer_microsoftEncryptedFileSystem \ {asn1Len_microsoftEncryptedFileSystem,asn1Str_microsoftEncryptedFileSystem} #define asn1Len_netscapeServerGatedCrypto 11 #define asn1Str_netscapeServerGatedCrypto \ (unsigned char *)"\006\011\140\206\110\001\206\370\102\004\001" #define asn1Ary_netscapeServerGatedCrypto \ {0x06,0x09,0x60,0x86,0x48,0x01,0x86,0xf8,0x42,0x04,0x01} #define asn1OidBer_netscapeServerGatedCrypto \ {asn1Len_netscapeServerGatedCrypto,asn1Str_netscapeServerGatedCrypto} /**********************************************/ /* ASN.1 Oids associated with digests */ /**********************************************/ #define asn1Len_MD2 10 #define asn1Str_MD2 \ (unsigned char *)"\006\010\052\206\110\206\367\015\002\002" #define asn1Ary_MD2 \ {0x06,0x08,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x02,0x02} #define asn1OidBer_MD2 \ {asn1Len_MD2,asn1Str_MD2} #define asn1Len_MD5 10 #define asn1Str_MD5 \ (unsigned char *)"\006\010\052\206\110\206\367\015\002\005" #define asn1Ary_MD5 \ {0x06,0x08,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x02,0x05} #define asn1OidBer_MD5 \ {asn1Len_MD5,asn1Str_MD5} #define asn1Len_SHA1 7 #define asn1Str_SHA1 \ (unsigned char *)"\006\005\053\016\003\002\032" #define asn1Ary_SHA1 \ {0x06,0x05,0x2b,0x0e,0x03,0x02,0x1a} #define asn1OidBer_SHA1 \ {asn1Len_SHA1,asn1Str_SHA1} #endif