windows-nt/Source/XPSP1/NT/ds/security/protocols/schannel/spbase/asn1enc.asn
2020-09-26 16:20:57 +08:00

162 lines
5.3 KiB
Groff

----------------------------------------------------------------------------
-- 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