---------------------------------------------------------------------------- -- X509.ASN -- -- ASN.1 definitions for SCHANNEL DH, FORTEZZA, and Private Key encoding ---------------------------------------------------------------------------- --#comment "Copyright (C) Microsoft Corporation, 1996-1999. All rights reserved."-- --#comment "ASN.1 definitions for SCHANNEL DH, FORTEZZA, and Private Key encoding"-- --#oid array-- -- object identifier is 16-node fixed array --#SS.basic lenptr-- -- set of and sequence of w/o size constraint --#SS.sized lenptr-- -- set of and sequence of w/ size constraint X509 DEFINITIONS EXPLICIT TAGS ::= BEGIN HUGEINTEGER ::= INTEGER --#intx-- -- tag 0x02 BITSTRING ::= BIT STRING --#lenptr-- --#nomemcpy-- -- tag 0x03 OCTETSTRING ::= OCTET STRING --#lenptr-- --#nomemcpy-- -- tag 0x04 NOCOPYANY ::= ANY --#nomemcpy-- NUMERICSTRING ::= NumericString --#lenptr-- -- tag 0x12 (18) PRINTABLESTRING ::= PrintableString --#lenptr-- -- tag 0x13 (19) TELETEXSTRING ::= TeletexString --#lenptr-- -- tag 0x14 (20) T61STRING ::= T61String --#lenptr-- -- tag 0x14 (20) VIDEOTEXSTRING ::= VideotexString --#lenptr-- -- tag 0x15 (21) IA5STRING ::= IA5String --#lenptr-- -- tag 0x16 (22) GRAPHICSTRING ::= GraphicString --#lenptr-- -- tag 0x19 (25) VISIBLESTRING ::= VisibleString --#lenptr-- -- tag 0x1A (26) ISO646STRING ::= ISO646String --#lenptr-- -- tag 0x1A (26) GENERALSTRING ::= GeneralString --#lenptr-- -- tag 0x1B (27) UNIVERSALSTRING ::= UniversalString --#lenptr-- -- tag 0x1C (28) BMPSTRING ::= BMPString --#lenptr-- -- tag 0x1E (30) ObjectID ::= OBJECT IDENTIFIER --#oid array-- -------------------------------------------- -- SCHANNEL Definitions -------------------------------------------- -------------------------------------------- -- Diffie Hellman Public -- -- DHPublicKey defines the value Y for a -- DH Public Key. -------------------------------------------- DHPublicKey ::= HUGEINTEGER --#public-- -- Y -------------------------------------------- -- Diffie Hellman Parameters -- -- DHParameters defines the diffie helman -- parameters structure, which contains -- a prime modulus p, and a generator g. -- The optional private value length describes -- the length of the private value, if not -- the length of the prime modulus. -------------------------------------------- DHParameters ::= SEQUENCE { prime HUGEINTEGER, -- p base HUGEINTEGER, -- g privateValueLength INTEGER OPTIONAL } --#public-- -------------------------------------------- -- DSA Parameters -- -- DHParameters defines the diffie helman -- parameters structure, which contains -- a prime modulus p, and a generator g. -- The optional private value length describes -- the length of the private value, if not -- the length of the prime modulus. -------------------------------------------- DSAParameters ::= SEQUENCE { p HUGEINTEGER, -- p q HUGEINTEGER, -- q g HUGEINTEGER -- g } --#public-- -------------------------------------------- -- DSA Public -- -- DSAPublicKey defines the value Y for a -- DSA Public Key. -------------------------------------------- DSAPublicKey ::= HUGEINTEGER --#public-- -- Y -------------------------------------------- -- Fortezza Public -- -- Fortezza parameters are not ASN.1 encoded, -- but are stored in a bitstring. -------------------------------------------- FORTPublicKey ::= BITSTRING --#public-- -- Fort AlgorithmIdentifier ::= SEQUENCE { algorithm ObjectID, parameters ANY OPTIONAL } RSAPrivateKey ::= SEQUENCE { version INTEGER, modulus HUGEINTEGER, -- n publicExponent INTEGER, -- e privateExponent HUGEINTEGER, -- d prime1 HUGEINTEGER, -- p prime2 HUGEINTEGER, -- q exponent1 HUGEINTEGER, -- d mod (p-1) exponent2 HUGEINTEGER, -- d mod (q-1) coefficient HUGEINTEGER -- (inverse of q) mod p } --#public-- DSAPrivateKey ::= SEQUENCE { version INTEGER, private HUGEINTEGER -- x } --#public-- DHPrivateKey ::= SEQUENCE { version INTEGER, private HUGEINTEGER -- x } --#public-- EncryptedData ::= OCTET STRING PrivateKeyInfo ::= SEQUENCE { version INTEGER, privateKeyAlgorithm AlgorithmIdentifier, privateKey OCTET STRING, attributes [0] IMPLICIT SET OF ANY OPTIONAL } --#public-- PrivateKeyData ::= SEQUENCE { privateKeyAlgorithm AlgorithmIdentifier, privateKey EncryptedData } PrivateKeyFile ::= SEQUENCE { name OCTET STRING, privateKey PrivateKeyData } --#public-- -------------------------------------------- -- Enhanced Key Usage Extension (2.5.29.37) -------------------------------------------- EnhancedKeyUsage ::= SEQUENCE --#public-- OF UsageIdentifier UsageIdentifier ::= ObjectID END