Skip to main content

Appendix A. Pseudo-ASN.1 Structures and OIDs (伪ASN.1结构和OID)

本附录以"类ASN.1"语法描述符合标准的PKI组件使用的数据对象. 此语法是1988和1993 ASN.1语法的混合体. 1988 ASN.1语法用1993 UNIVERSAL类型UniversalString、BMPString和UTF8String进行了增强.

ASN.1语法不允许在ASN.1模块中包含类型语句, 1993 ASN.1标准不允许在使用1988语法的模块中使用新的UNIVERSAL类型. 因此, 此模块不符合ASN.1标准的任一版本.

通过将UNIVERSAL类型的定义替换为1988全捕获类型"ANY", 可以将此附录转换为1988 ASN.1.

A.1. Explicitly Tagged Module, 1988 Syntax (显式标记模块, 1988语法)

以下是完整的PKIX1Explicit88 ASN.1模块定义:

PKIX1Explicit88 { iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit(18) }

DEFINITIONS EXPLICIT TAGS ::=

BEGIN

-- EXPORTS ALL --

-- IMPORTS NONE --

-- 在1993和1998 ASN.1中定义并由本规范所需的UNIVERSAL类型

UniversalString ::= [UNIVERSAL 28] IMPLICIT OCTET STRING
-- UniversalString定义于ASN.1:1993

BMPString ::= [UNIVERSAL 30] IMPLICIT OCTET STRING
-- BMPString是UniversalString的子类型
-- 建模ISO/IEC 10646的基本多语言平面

UTF8String ::= [UNIVERSAL 12] IMPLICIT OCTET STRING
-- 此类型的内容符合RFC 3629

-- PKIX特定OID

id-pkix OBJECT IDENTIFIER ::=
{ iso(1) identified-organization(3) dod(6) internet(1)
security(5) mechanisms(5) pkix(7) }

-- PKIX分支

id-pe OBJECT IDENTIFIER ::= { id-pkix 1 }
-- 私有证书扩展的分支
id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
-- 策略限定符类型的分支
id-kp OBJECT IDENTIFIER ::= { id-pkix 3 }
-- 扩展密钥用途OID的分支
id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
-- 访问描述符的分支

-- 互联网策略限定符的policyQualifierIds

id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
-- CPS限定符的OID
id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
-- 用户通知限定符的OID

-- 访问描述符定义

id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 }
id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 }

-- 属性数据类型

Attribute ::= SEQUENCE {
type AttributeType,
values SET OF AttributeValue }
-- 至少需要一个值

AttributeType ::= OBJECT IDENTIFIER

AttributeValue ::= ANY -- 由AttributeType定义

AttributeTypeAndValue ::= SEQUENCE {
type AttributeType,
value AttributeValue }

-- 建议的命名属性: 可以增强以下信息对象集的定义
-- 以满足本地要求. 请注意, 删除集合的成员可能会
-- 阻止与符合标准的实现的互操作性.
-- 成对呈现: AttributeType后跟相应AttributeValue的类型定义

-- 标准命名属性的分支

id-at OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 4 }

-- X520name类型的命名属性

id-at-name AttributeType ::= { id-at 41 }
id-at-surname AttributeType ::= { id-at 4 }
id-at-givenName AttributeType ::= { id-at 42 }
id-at-initials AttributeType ::= { id-at 43 }
id-at-generationQualifier AttributeType ::= { id-at 44 }

-- X520Name类型的命名属性:
-- X520name ::= DirectoryString (SIZE (1..ub-name))
--
-- 展开以避免参数化类型:
X520name ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-name)),
printableString PrintableString (SIZE (1..ub-name)),
universalString UniversalString (SIZE (1..ub-name)),
utf8String UTF8String (SIZE (1..ub-name)),
bmpString BMPString (SIZE (1..ub-name)) }

-- X520CommonName类型的命名属性

id-at-commonName AttributeType ::= { id-at 3 }

X520CommonName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-common-name)),
printableString PrintableString (SIZE (1..ub-common-name)),
universalString UniversalString (SIZE (1..ub-common-name)),
utf8String UTF8String (SIZE (1..ub-common-name)),
bmpString BMPString (SIZE (1..ub-common-name)) }

-- X520LocalityName类型的命名属性

id-at-localityName AttributeType ::= { id-at 7 }

X520LocalityName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-locality-name)),
printableString PrintableString (SIZE (1..ub-locality-name)),
universalString UniversalString (SIZE (1..ub-locality-name)),
utf8String UTF8String (SIZE (1..ub-locality-name)),
bmpString BMPString (SIZE (1..ub-locality-name)) }

-- X520StateOrProvinceName类型的命名属性

id-at-stateOrProvinceName AttributeType ::= { id-at 8 }

X520StateOrProvinceName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-state-name)),
printableString PrintableString (SIZE (1..ub-state-name)),
universalString UniversalString (SIZE (1..ub-state-name)),
utf8String UTF8String (SIZE (1..ub-state-name)),
bmpString BMPString (SIZE (1..ub-state-name)) }

-- X520OrganizationName类型的命名属性

id-at-organizationName AttributeType ::= { id-at 10 }

X520OrganizationName ::= CHOICE {
teletexString TeletexString
(SIZE (1..ub-organization-name)),
printableString PrintableString
(SIZE (1..ub-organization-name)),
universalString UniversalString
(SIZE (1..ub-organization-name)),
utf8String UTF8String
(SIZE (1..ub-organization-name)),
bmpString BMPString
(SIZE (1..ub-organization-name)) }

-- X520OrganizationalUnitName类型的命名属性

id-at-organizationalUnitName AttributeType ::= { id-at 11 }

X520OrganizationalUnitName ::= CHOICE {
teletexString TeletexString
(SIZE (1..ub-organizational-unit-name)),
printableString PrintableString
(SIZE (1..ub-organizational-unit-name)),
universalString UniversalString
(SIZE (1..ub-organizational-unit-name)),
utf8String UTF8String
(SIZE (1..ub-organizational-unit-name)),
bmpString BMPString
(SIZE (1..ub-organizational-unit-name)) }

-- X520Title类型的命名属性

id-at-title AttributeType ::= { id-at 12 }

X520Title ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-title)),
printableString PrintableString (SIZE (1..ub-title)),
universalString UniversalString (SIZE (1..ub-title)),
utf8String UTF8String (SIZE (1..ub-title)),
bmpString BMPString (SIZE (1..ub-title)) }

-- X520dnQualifier类型的命名属性

id-at-dnQualifier AttributeType ::= { id-at 46 }

X520dnQualifier ::= PrintableString

-- X520countryName类型的命名属性 (基于ISO 3166的)

id-at-countryName AttributeType ::= { id-at 6 }

X520countryName ::= PrintableString (SIZE (2))
-- ISO 3166代码仅限2个字符

-- X520SerialNumber类型的命名属性

id-at-serialNumber AttributeType ::= { id-at 5 }

X520SerialNumber ::= PrintableString (SIZE (1..ub-serial-number))

-- X520Pseudonym类型的命名属性

id-at-pseudonym AttributeType ::= { id-at 65 }

X520Pseudonym ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-pseudonym)),
printableString PrintableString (SIZE (1..ub-pseudonym)),
universalString UniversalString (SIZE (1..ub-pseudonym)),
utf8String UTF8String (SIZE (1..ub-pseudonym)),
bmpString BMPString (SIZE (1..ub-pseudonym)) }

-- domainComponent属性类型用于从互联网域名构建DN

-- domainComponent定义于RFC 4519

id-domainComponent AttributeType ::=
{ itu-t(0) data(9) pss(2342) ucl(19200300)
pilot(100) pilotAttributeType(1) 25 }

DomainComponent ::= IA5String

-- 电子邮件地址的旧定义.
-- pkcs-9 arc (PKCS #9: RFC 2985)
-- 已弃废, 使用rfc822Name代替

pkcs-9 OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 }

id-emailAddress AttributeType ::= { pkcs-9 1 }

EmailAddress ::= IA5String (SIZE (1..ub-emailaddress-length))

-- 命名属性的大小界限
-- 注意: 某些目录实现选择不强制执行这些限制.

ub-name INTEGER ::= 32768
ub-common-name INTEGER ::= 64
ub-locality-name INTEGER ::= 128
ub-state-name INTEGER ::= 128
ub-organization-name INTEGER ::= 64
ub-organizational-unit-name INTEGER ::= 64
ub-title INTEGER ::= 64
ub-serial-number INTEGER ::= 64
ub-match INTEGER ::= 128
ub-emailaddress-length INTEGER ::= 255
ub-common-name-length INTEGER ::= 64
ub-country-name-alpha-length INTEGER ::= 2
ub-country-name-numeric-length INTEGER ::= 3
ub-domain-defined-attributes INTEGER ::= 4
ub-domain-defined-attribute-type-length INTEGER ::= 8
ub-domain-defined-attribute-value-length INTEGER ::= 128
ub-domain-name-length INTEGER ::= 16
ub-extension-attributes INTEGER ::= 256
ub-e163-4-number-length INTEGER ::= 15
ub-e163-4-sub-address-length INTEGER ::= 40
ub-generation-qualifier-length INTEGER ::= 3
ub-given-name-length INTEGER ::= 16
ub-initials-length INTEGER ::= 5
ub-integer-options INTEGER ::= 256
ub-numeric-user-id-length INTEGER ::= 32
ub-organization-name-length INTEGER ::= 64
ub-organizational-unit-name-length INTEGER ::= 32
ub-organizational-units INTEGER ::= 4
ub-pds-name-length INTEGER ::= 16
ub-pds-parameter-length INTEGER ::= 30
ub-pds-physical-address-lines INTEGER ::= 6
ub-postal-code-length INTEGER ::= 16
ub-pseudonym INTEGER ::= 128
ub-surname-length INTEGER ::= 40
ub-terminal-id-length INTEGER ::= 24
ub-unformatted-address-length INTEGER ::= 180
ub-x121-address-length INTEGER ::= 16

-- 注意: 以下对象标识符字符串定义采用1988
-- ASN.1语法. 在当前ASN.1版本中, 每个单独的
-- 弧可以命名为独立对象. 这些定义保持为
-- 单字符串以与旧实现保持兼容.

-- 目录字符串类型定义

-- DirectoryString ::= CHOICE {
-- teletexString TeletexString (SIZE (1..MAX)),
-- printableString PrintableString (SIZE (1..MAX)),
-- universalString UniversalString (SIZE (1..MAX)),
-- utf8String UTF8String (SIZE (1..MAX)),
-- bmpString BMPString (SIZE (1..MAX)) }

DirectoryString ::= CHOICE {
teletexString TeletexString (SIZE (1..MAX)),
printableString PrintableString (SIZE (1..MAX)),
universalString UniversalString (SIZE (1..MAX)),
utf8String UTF8String (SIZE (1..MAX)),
bmpString BMPString (SIZE (1..MAX)) }

-- 证书和证书列表结构

Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING }

TBSCertificate ::= SEQUENCE {
version [0] Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- 如果存在, 版本必须是v2或v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- 如果存在, 版本必须是v2或v3
extensions [3] Extensions OPTIONAL
-- 如果存在, 版本必须是v3 -- }

Version ::= INTEGER { v1(0), v2(1), v3(2) }

CertificateSerialNumber ::= INTEGER

Validity ::= SEQUENCE {
notBefore Time,
notAfter Time }

Time ::= CHOICE {
utcTime UTCTime,
generalTime GeneralizedTime }

UniqueIdentifier ::= BIT STRING

SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }

Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension

Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE,
extnValue OCTET STRING
-- 包含Extension类型的DER编码
-- 由extnID标识
}

-- CRL结构

CertificateList ::= SEQUENCE {
tbsCertList TBSCertList,
signatureAlgorithm AlgorithmIdentifier,
signature BIT STRING }

TBSCertList ::= SEQUENCE {
version Version OPTIONAL,
-- 如果存在, 版本必须是v2
signature AlgorithmIdentifier,
issuer Name,
thisUpdate Time,
nextUpdate Time OPTIONAL,
revokedCertificates SEQUENCE OF SEQUENCE {
userCertificate CertificateSerialNumber,
revocationDate Time,
crlEntryExtensions Extensions OPTIONAL
-- 如果存在, 版本必须是v2
} OPTIONAL,
crlExtensions [0] EXPLICIT Extensions OPTIONAL
-- 如果存在, 版本必须是v2 -- }

-- 算法标识符

AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
-- 包含与字段算法中
-- 标识的算法相关的参数值
-- 参数字段的确切格式和内容
-- 由该算法标识符的特定值定义

-- X.500名称

Name ::= CHOICE { -- 实现只需要识别一个选择
rdnSequence RDNSequence }

RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

DistinguishedName ::= RDNSequence

RelativeDistinguishedName ::=
SET SIZE (1..MAX) OF AttributeTypeAndValue

-- 证书扩展OID和语法

-- 证书扩展

id-ce OBJECT IDENTIFIER ::= { joint-iso-ccitt(2) ds(5) 29 }

-- 授权密钥标识符OID和语法

id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }

AuthorityKeyIdentifier ::= SEQUENCE {
keyIdentifier [0] KeyIdentifier OPTIONAL,
authorityCertIssuer [1] GeneralNames OPTIONAL,
authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL }
-- authorityCertIssuer和authorityCertSerialNumber必须都
-- 存在或都不存在

KeyIdentifier ::= OCTET STRING

-- 主体密钥标识符OID和语法

id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 }

SubjectKeyIdentifier ::= KeyIdentifier

-- 密钥用途OID和语法

id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }

KeyUsage ::= BIT STRING {
digitalSignature (0),
nonRepudiation (1), -- 最新版本中为contentCommitment
keyEncipherment (2),
dataEncipherment (3),
keyAgreement (4),
keyCertSign (5),
cRLSign (6),
encipherOnly (7),
decipherOnly (8) }

-- 私钥用途期限

-- 此扩展在RFC 5280中已弃废

id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 }

PrivateKeyUsagePeriod ::= SEQUENCE {
notBefore [0] GeneralizedTime OPTIONAL,
notAfter [1] GeneralizedTime OPTIONAL }
-- notBefore或notAfter至少必须存在一个

-- 证书策略OID和语法
-- 用于以下类型的证书扩展:
-- certificatePolicies (自身包含此类型) 和
-- 映射扩展

id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 }

anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 }

CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation

PolicyInformation ::= SEQUENCE {
policyIdentifier CertPolicyId,
policyQualifiers SEQUENCE SIZE (1..MAX) OF
PolicyQualifierInfo OPTIONAL }

CertPolicyId ::= OBJECT IDENTIFIER

PolicyQualifierInfo ::= SEQUENCE {
policyQualifierId PolicyQualifierId,
qualifier ANY DEFINED BY policyQualifierId }

-- CPS指针限定符

PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )

Qualifier ::= CHOICE {
cPSuri CPSuri,
userNotice UserNotice }

CPSuri ::= IA5String

-- 用户通知限定符

UserNotice ::= SEQUENCE {
noticeRef NoticeReference OPTIONAL,
explicitText DisplayText OPTIONAL }

NoticeReference ::= SEQUENCE {
organization DisplayText,
noticeNumbers SEQUENCE OF INTEGER }

DisplayText ::= CHOICE {
ia5String IA5String (SIZE (1..200)),
visibleString VisibleString (SIZE (1..200)),
bmpString BMPString (SIZE (1..200)),
utf8String UTF8String (SIZE (1..200)) }

-- 策略映射OID和语法

id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 }

PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE {
issuerDomainPolicy CertPolicyId,
subjectDomainPolicy CertPolicyId }

-- 主体备用名称OID和语法

id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 }

SubjectAltName ::= GeneralNames

GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName

GeneralName ::= CHOICE {
otherName [0] INSTANCE OF OTHER-NAME,
rfc822Name [1] IA5String,
dNSName [2] IA5String,
x400Address [3] ORAddress,
directoryName [4] Name,
ediPartyName [5] EDIPartyName,
uniformResourceIdentifier [6] IA5String,
iPAddress [7] OCTET STRING,
registeredID [8] OBJECT IDENTIFIER }

-- 如实现不识别OtherName组件中的name-form,
-- 则忽略它. 使用INSTANCE OF来提供更多信息

OTHER-NAME ::= TYPE-IDENTIFIER

EDIPartyName ::= SEQUENCE {
nameAssigner [0] DirectoryString OPTIONAL,
partyName [1] DirectoryString }

-- 颁发者备用名称OID和语法

id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 }

IssuerAltName ::= GeneralNames

id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 }

SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute

-- 基本约束OID和语法

id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 }

BasicConstraints ::= SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..MAX) OPTIONAL }

-- 名称约束OID和语法

id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 }

NameConstraints ::= SEQUENCE {
permittedSubtrees [0] GeneralSubtrees OPTIONAL,
excludedSubtrees [1] GeneralSubtrees OPTIONAL }

GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree

GeneralSubtree ::= SEQUENCE {
base GeneralName,
minimum [0] BaseDistance DEFAULT 0,
maximum [1] BaseDistance OPTIONAL }

BaseDistance ::= INTEGER (0..MAX)

-- 策略约束OID和语法

id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 }

PolicyConstraints ::= SEQUENCE {
requireExplicitPolicy [0] SkipCerts OPTIONAL,
inhibitPolicyMapping [1] SkipCerts OPTIONAL }

SkipCerts ::= INTEGER (0..MAX)

-- CRL分发点OID和语法

id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= {id-ce 31}

CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint

DistributionPoint ::= SEQUENCE {
distributionPoint [0] DistributionPointName OPTIONAL,
reasons [1] ReasonFlags OPTIONAL,
cRLIssuer [2] GeneralNames OPTIONAL }

DistributionPointName ::= CHOICE {
fullName [0] GeneralNames,
nameRelativeToCRLIssuer [1] RelativeDistinguishedName }

ReasonFlags ::= BIT STRING {
unused (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
privilegeWithdrawn (7),
aACompromise (8) }

-- 扩展密钥用途OID和语法

id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 }

ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId

KeyPurposeId ::= OBJECT IDENTIFIER

-- 扩展密钥用途OID值

anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 }

id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 }
-- TLS WWW服务器认证
-- 密钥用途位: digitalSignature, keyEncipherment或keyAgreement

id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 }
-- TLS WWW客户端认证
-- 密钥用途位: digitalSignature和/或keyAgreement

id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 }
-- 可下载可执行代码签名
-- 密钥用途位: digitalSignature

id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 }
-- 电子邮件保护
-- 密钥用途位: digitalSignature, nonRepudiation,
-- 和/或(keyEncipherment或keyAgreement)

id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 }
-- 将哈希绑定到时间
-- 密钥用途位: digitalSignature和/或nonRepudiation

id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 }
-- 签署OCSP响应
-- 密钥用途位: digitalSignature和/或nonRepudiation

-- 禁止anyPolicy OID和语法

id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 }

InhibitAnyPolicy ::= SkipCerts

-- 最新CRL OID和语法

id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 }

FreshestCRL ::= CRLDistributionPoints

-- 授权信息访问

id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }

AuthorityInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription

AccessDescription ::= SEQUENCE {
accessMethod OBJECT IDENTIFIER,
accessLocation GeneralName }

-- 主体信息访问

id-pe-subjectInfoAccess OBJECT IDENTIFIER ::= { id-pe 11 }

SubjectInfoAccessSyntax ::=
SEQUENCE SIZE (1..MAX) OF AccessDescription

-- CRL编号扩展OID和语法

id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 }

CRLNumber ::= INTEGER (0..MAX)

-- 颁发分发点CRL扩展OID和语法

id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 }

IssuingDistributionPoint ::= SEQUENCE {
distributionPoint [0] DistributionPointName OPTIONAL,
onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
onlySomeReasons [3] ReasonFlags OPTIONAL,
indirectCRL [4] BOOLEAN DEFAULT FALSE,
onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
-- 最多一个onlyContainsUserCerts, onlyContainsCACerts
-- 和onlyContainsAttributeCerts可以设置为TRUE.

id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 }

BaseCRLNumber ::= CRLNumber

-- CRL原因扩展OID和语法

id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 }

CRLReason ::= ENUMERATED {
unspecified (0),
keyCompromise (1),
cACompromise (2),
affiliationChanged (3),
superseded (4),
cessationOfOperation (5),
certificateHold (6),
-- 值7未使用
removeFromCRL (8),
privilegeWithdrawn (9),
aACompromise (10) }

-- 证书颁发者CRL条目扩展OID和语法

id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 }

CertificateIssuer ::= GeneralNames

-- 暂挂指令代码CRL条目扩展OID和语法

id-ce-holdInstructionCode OBJECT IDENTIFIER ::= { id-ce 23 }

HoldInstructionCode ::= OBJECT IDENTIFIER

-- 暂挂指令OID

holdInstruction OBJECT IDENTIFIER ::=
{ iso(1) member-body(2) us(840) x9-57(10040) 2 }

id-holdinstruction-none OBJECT IDENTIFIER ::=
{holdInstruction 1}
id-holdinstruction-callissuer OBJECT IDENTIFIER ::=
{holdInstruction 2}
id-holdinstruction-reject OBJECT IDENTIFIER ::=
{holdInstruction 3}

-- 无效日期CRL条目扩展OID和语法

id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 }

InvalidityDate ::= GeneralizedTime

END

注意: 本附录提供了RFC 5280中使用的完整ASN.1模块定义. 这些定义用于编码X.509证书和CRL. 实现应使用这些定义来确保正确的互操作性.

由于ASN.1模块非常长且主要为结构化语法定义, 本文档保留了原始ASN.1语法并添加了简体中文注释以帮助理解.