📄 ext_def.c
字号:
{ NULL, 0,
MKDESC( "subjectDirectoryAttributes.attribute.values" )
ENCODING( BER_SET ),
FL_MORE, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_SUBJECTDIR_VALUES,
MKDESC( "subjectDirectoryAttributes.attribute.values.value" )
ENCODING( FIELDTYPE_BLOB ),
FL_MULTIVALUED | FL_SEQEND_2 /*SEQEND*/, RANGE_ATTRIBUTEBLOB },
/* subjectKeyIdentifier:
OID = 2 5 29 14
OCTET STRING */
{ MKOID( "\x06\x03\x55\x1D\x0E" ), CRYPT_CERTINFO_SUBJECTKEYIDENTIFIER,
MKDESC( "subjectKeyIdentifier" )
ENCODING( BER_OCTETSTRING ),
FL_LEVEL_STANDARD | FL_VALID_CERT, RANGE( 1, 64 ) },
/* keyUsage:
OID = 2 5 29 15
critical = TRUE
BITSTRING */
{ MKOID( "\x06\x03\x55\x1D\x0F" ), CRYPT_CERTINFO_KEYUSAGE,
MKDESC( "keyUsage" )
ENCODING( BER_BITSTRING ),
FL_CRITICAL | FL_LEVEL_REDUCED | FL_VALID_CERTREQ | FL_VALID_CERT, 0, CRYPT_KEYUSAGE_LAST, 0, NULL },
/* privateKeyUsagePeriod:
OID = 2 5 29 16
SEQUENCE {
notBefore [ 0 ] GeneralizedTime OPTIONAL,
notAfter [ 1 ] GeneralizedTime OPTIONAL
} */
{ MKOID( "\x06\x03\x55\x1D\x10" ), CRYPT_CERTINFO_PRIVATEKEYUSAGEPERIOD,
MKDESC( "privateKeyUsagePeriod" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_NONEMPTY | FL_LEVEL_PKIX_PARTIAL | FL_VALID_CERT, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_PRIVATEKEY_NOTBEFORE,
MKDESC( "privateKeyUsagePeriod.notBefore" )
ENCODING_TAGGED( BER_TIME_GENERALIZED, 0 ),
FL_MORE | FL_OPTIONAL, RANGE_TIME },
{ NULL, CRYPT_CERTINFO_PRIVATEKEY_NOTAFTER,
MKDESC( "privateKeyUsagePeriod.notAfter" )
ENCODING_TAGGED( BER_TIME_GENERALIZED, 1 ),
FL_OPTIONAL | FL_SEQEND /*NONE*/, RANGE_TIME },
/* subjectAltName:
OID = 2 5 29 17
SEQUENCE OF GeneralName */
{ MKOID( "\x06\x03\x55\x1D\x11" ), FIELDID_FOLLOWS,
MKDESC( "subjectAltName" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_LEVEL_STANDARD | FL_VALID_CERTREQ | FL_VALID_CERT | FL_SETOF, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_SUBJECTALTNAME,
MKDESC( "subjectAltName.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_MULTIVALUED | FL_NONEMPTY | FL_SEQEND /*NONE*/, ENCODED_OBJECT( generalNameInfo ) },
/* issuerAltName:
OID = 2 5 29 18
SEQUENCE OF GeneralName */
{ MKOID( "\x06\x03\x55\x1D\x12" ), FIELDID_FOLLOWS,
MKDESC( "issuerAltName" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_LEVEL_STANDARD | FL_VALID_CERT | FL_VALID_CRL | FL_SETOF, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_ISSUERALTNAME,
MKDESC( "issuerAltName.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_MULTIVALUED | FL_NONEMPTY | FL_SEQEND /*NONE*/, ENCODED_OBJECT( generalNameInfo ) },
/* basicConstraints:
OID = 2 5 29 19
critical = TRUE
SEQUENCE {
cA BOOLEAN DEFAULT FALSE,
pathLenConstraint INTEGER (0..64) OPTIONAL
} */
{ MKOID( "\x06\x03\x55\x1D\x13" ), CRYPT_CERTINFO_BASICCONSTRAINTS,
MKDESC( "basicConstraints" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_CRITICAL | FL_LEVEL_REDUCED | FL_VALID_CERTREQ | FL_VALID_CERT | FL_VALID_ATTRCERT, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_CA,
MKDESC( "basicConstraints.cA" )
ENCODING( BER_BOOLEAN ),
FL_MORE | FL_OPTIONAL | FL_DEFAULT, RANGE_BOOLEAN },
{ NULL, CRYPT_CERTINFO_PATHLENCONSTRAINT,
MKDESC( "basicConstraints.pathLenConstraint" )
ENCODING( BER_INTEGER ),
FL_OPTIONAL | FL_SEQEND /*NONE*/, RANGE( 0, 64 ) },
/* cRLNumber:
OID = 2 5 29 20
INTEGER */
{ MKOID( "\x06\x03\x55\x1D\x14" ), CRYPT_CERTINFO_CRLNUMBER,
MKDESC( "cRLNumber" )
ENCODING( BER_INTEGER ),
FL_LEVEL_PKIX_PARTIAL | FL_VALID_CRL, RANGE( 0, MAX_INTLENGTH ) },
/* cRLReason:
OID = 2 5 29 21
ENUMERATED */
{ MKOID( "\x06\x03\x55\x1D\x15" ), CRYPT_CERTINFO_CRLREASON,
MKDESC( "cRLReason" )
ENCODING( BER_ENUMERATED ),
FL_LEVEL_REDUCED | FL_VALID_CRL | FL_VALID_REVREQ /*Per-entry*/, RANGE( 0, CRYPT_CRLREASON_LAST ) },
/* holdInstructionCode:
OID = 2 5 29 23
OBJECT IDENTIFIER */
{ MKOID( "\x06\x03\x55\x1D\x17" ), CRYPT_CERTINFO_HOLDINSTRUCTIONCODE,
MKDESC( "holdInstructionCode" )
ENCODING( FIELDTYPE_CHOICE ),
FL_LEVEL_PKIX_PARTIAL | FL_VALID_CRL | FL_VALID_REVREQ /*Per-entry*/, CRYPT_HOLDINSTRUCTION_NONE, CRYPT_HOLDINSTRUCTION_LAST, 0, ( void * ) holdInstructionInfo },
/* invalidityDate:
OID = 2 5 29 24
GeneralizedTime */
{ MKOID( "\x06\x03\x55\x1D\x18" ), CRYPT_CERTINFO_INVALIDITYDATE,
MKDESC( "invalidityDate" )
ENCODING( BER_TIME_GENERALIZED ),
FL_LEVEL_STANDARD | FL_VALID_CRL | FL_VALID_REVREQ /*Per-entry*/, RANGE_TIME },
/* deltaCRLIndicator:
OID = 2 5 29 27
critical = TRUE
INTEGER */
{ MKOID( "\x06\x03\x55\x1D\x1B" ), CRYPT_CERTINFO_DELTACRLINDICATOR,
MKDESC( "deltaCRLIndicator" )
ENCODING( BER_INTEGER ),
FL_CRITICAL | FL_LEVEL_PKIX_PARTIAL | FL_VALID_CRL, RANGE( 0, MAX_INTLENGTH ) },
/* issuingDistributionPoint:
OID = 2 5 29 28
critical = TRUE
SEQUENCE {
distributionPoint [ 0 ] {
fullName [ 0 ] { -- CHOICE { ... }
SEQUENCE OF GeneralName -- GeneralNames
}
} OPTIONAL,
onlyContainsUserCerts
[ 1 ] BOOLEAN DEFAULT FALSE,
onlyContainsCACerts
[ 2 ] BOOLEAN DEFAULT FALSE,
onlySomeReasons [ 3 ] BITSTRING OPTIONAL,
indirectCRL [ 4 ] BOOLEAN DEFAULT FALSE
} */
{ MKOID( "\x06\x03\x55\x1D\x1C" ), CRYPT_CERTINFO_ISSUINGDISTRIBUTIONPOINT,
MKDESC( "issuingDistributionPoint" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_CRITICAL | FL_LEVEL_PKIX_PARTIAL | FL_VALID_CRL, RANGE_NONE },
{ NULL, 0,
MKDESC( "issuingDistributionPoint.distributionPoint" )
ENCODING_TAGGED( BER_SEQUENCE, 0 ),
FL_MORE | FL_OPTIONAL, RANGE_NONE },
{ NULL, 0,
MKDESC( "issuingDistributionPoint.distributionPoint.fullName" )
ENCODING_TAGGED( BER_SEQUENCE, 0 ),
FL_MORE | FL_NONEMPTY, RANGE_NONE },
{ NULL, 0,
MKDESC( "issuingDistributionPoint.distributionPoint.fullName.generalNames" )
ENCODING( BER_SEQUENCE ),
FL_MORE, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_ISSUINGDIST_FULLNAME,
MKDESC( "issuingDistributionPoint.distributionPoint.fullName.generalNames.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_MORE | FL_NONEMPTY | FL_OPTIONAL | FL_MULTIVALUED | FL_SEQEND_3, ENCODED_OBJECT( generalNameInfo ) },
{ NULL, CRYPT_CERTINFO_ISSUINGDIST_USERCERTSONLY,
MKDESC( "issuingDistributionPoint.onlyContainsUserCerts" )
ENCODING_TAGGED( BER_BOOLEAN, 1 ),
FL_MORE | FL_OPTIONAL | FL_DEFAULT, RANGE_BOOLEAN },
{ NULL, CRYPT_CERTINFO_ISSUINGDIST_CACERTSONLY,
MKDESC( "issuingDistributionPoint.onlyContainsCACerts" )
ENCODING_TAGGED( BER_BOOLEAN, 2 ),
FL_MORE | FL_OPTIONAL | FL_DEFAULT, RANGE_BOOLEAN },
{ NULL, CRYPT_CERTINFO_ISSUINGDIST_SOMEREASONSONLY,
MKDESC( "issuingDistributionPoint.onlySomeReasons" )
ENCODING_TAGGED( BER_BITSTRING, 3 ),
FL_MORE | FL_OPTIONAL, RANGE( 0, CRYPT_CRLREASONFLAG_LAST ) },
{ NULL, CRYPT_CERTINFO_ISSUINGDIST_INDIRECTCRL,
MKDESC( "issuingDistributionPoint.indirectCRL" )
ENCODING_TAGGED( BER_BOOLEAN, 4 ),
FL_OPTIONAL | FL_DEFAULT | FL_SEQEND /*NONE*/, RANGE_BOOLEAN },
/* certificateIssuer:
OID = 2 5 29 29
critical = TRUE
certificateIssuer SEQUENCE OF GeneralName */
{ MKOID( "\x06\x03\x55\x1D\x1D" ), FIELDID_FOLLOWS,
MKDESC( "certificateIssuer" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_CRITICAL | FL_LEVEL_PKIX_FULL | FL_VALID_CRL, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_CERTIFICATEISSUER,
MKDESC( "certificateIssuer.generalNames" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_MULTIVALUED | FL_NONEMPTY, ENCODED_OBJECT( generalNameInfo ) },
/* nameConstraints
OID = 2 5 29 30
critical = TRUE
SEQUENCE {
permittedSubtrees [ 0 ] SEQUENCE OF {
SEQUENCE { GeneralName }
} OPTIONAL,
excludedSubtrees [ 1 ] SEQUENCE OF {
SEQUENCE { GeneralName }
} OPTIONAL,
}
RFC 3280 extended this by adding two additional fields after the
GeneralName (probably from X.509v4) but mitigated it by requiring
that they never be used, so we leave the definition as is */
{ MKOID( "\x06\x03\x55\x1D\x1E" ), CRYPT_CERTINFO_NAMECONSTRAINTS,
MKDESC( "nameConstraints" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_NONEMPTY | FL_LEVEL_PKIX_FULL | FL_VALID_CERT | FL_VALID_ATTRCERT, RANGE_NONE },
{ NULL, 0,
MKDESC( "nameConstraints.permittedSubtrees" )
ENCODING_TAGGED( BER_SEQUENCE, 0 ),
FL_MORE | FL_SETOF | FL_OPTIONAL, RANGE_NONE },
{ NULL, 0,
MKDESC( "nameConstraints.permittedSubtrees.sequenceOf" )
ENCODING( BER_SEQUENCE ),
FL_MORE, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_PERMITTEDSUBTREES,
MKDESC( "nameConstraints.permittedSubtrees.sequenceOf.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_MORE | FL_NONEMPTY | FL_OPTIONAL | FL_MULTIVALUED | FL_SEQEND_2, ENCODED_OBJECT( generalNameInfo ) },
{ NULL, 0,
MKDESC( "nameConstraints.excludedSubtrees" )
ENCODING_TAGGED( BER_SEQUENCE, 1 ),
FL_MORE | FL_SETOF | FL_OPTIONAL, RANGE_NONE },
{ NULL, 0,
MKDESC( "nameConstraints.excludedSubtrees.sequenceOf" )
ENCODING( BER_SEQUENCE ),
FL_MORE, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_EXCLUDEDSUBTREES,
MKDESC( "nameConstraints.excludedSubtrees.sequenceOf.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_OPTIONAL | FL_NONEMPTY | FL_MULTIVALUED | FL_SEQEND_2 /*or _3*/, ENCODED_OBJECT( generalNameInfo ) },
/* cRLDistributionPoints:
OID = 2 5 29 31
SEQUENCE OF {
SEQUENCE {
distributionPoint
[ 0 ] { -- CHOICE { ... }
fullName [ 0 ] SEQUENCE OF GeneralName
} OPTIONAL,
reasons [ 1 ] BIT STRING OPTIONAL,
cRLIssuer [ 2 ] SEQUENCE OF GeneralName OPTIONAL
}
} */
{ MKOID( "\x06\x03\x55\x1D\x1F" ), CRYPT_CERTINFO_CRLDISTRIBUTIONPOINT,
MKDESC( "cRLDistributionPoints" )
ENCODING( BER_SEQUENCE ),
FL_MORE | FL_LEVEL_STANDARD | FL_VALID_CERT | FL_VALID_ATTRCERT | FL_SETOF, RANGE_NONE },
{ NULL, 0,
MKDESC( "cRLDistributionPoints.distPoint" )
ENCODING( BER_SEQUENCE ),
FL_MORE, RANGE_NONE },
{ NULL, 0,
MKDESC( "cRLDistributionPoints.distPoint.distPoint" )
ENCODING_TAGGED( BER_SEQUENCE, 0 ),
FL_MORE | FL_OPTIONAL, RANGE_NONE },
{ NULL, 0,
MKDESC( "cRLDistributionPoints.distPoint.distPoint.fullName" )
ENCODING_TAGGED( BER_SEQUENCE, 0 ),
FL_MORE | FL_NONEMPTY | FL_SETOF, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_CRLDIST_FULLNAME,
MKDESC( "cRLDistributionPoints.distPoint.distPoint.fullName.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_MORE | FL_NONEMPTY | FL_OPTIONAL | FL_MULTIVALUED | FL_SEQEND_2, ENCODED_OBJECT( generalNameInfo ) },
{ NULL, CRYPT_CERTINFO_CRLDIST_REASONS,
MKDESC( "cRLDistributionPoints.distPoint.reasons" )
ENCODING_TAGGED( BER_BITSTRING, 1 ),
FL_MORE | FL_OPTIONAL | FL_MULTIVALUED, RANGE( 0, CRYPT_CRLREASONFLAG_LAST ) },
{ NULL, 0,
MKDESC( "cRLDistributionPoints.distPoint.cRLIssuer" )
ENCODING_TAGGED( BER_SEQUENCE, 2 ),
FL_MORE | FL_NONEMPTY | FL_SETOF | FL_OPTIONAL, RANGE_NONE },
{ NULL, CRYPT_CERTINFO_CRLDIST_CRLISSUER,
MKDESC( "cRLDistributionPoints.distPoint.cRLIssuer.generalName" )
ENCODING( FIELDTYPE_SUBTYPED ),
FL_OPTIONAL | FL_NONEMPTY | FL_MULTIVALUED | FL_SEQEND_2 /*or _3*/, ENCODED_OBJECT( generalNameInfo ) },
/* certificatePolicies:
OID = 2 5 29 32
SEQUENCE SIZE (1..64) OF {
SEQUENCE {
policyIdentifier OBJECT IDENTIFIER,
policyQualifiers SEQUENCE SIZE (1..64) OF {
SEQUENCE {
policyQualifierId
OBJECT IDENTIFIER,
qualifier ANY DEFINED BY policyQualifierID
} OPTIONAL
}
}
}
CPSuri ::= IA5String -- OID = cps
UserNotice ::= SEQUENCE { -- OID = unotice
noticeRef SEQUENCE {
organization DisplayText,
noticeNumbers SEQUENCE OF INTEGER -- SIZE (1)
} OPTIONAL,
explicitText DisplayText OPTIONAL
}
Note that although this extension is decoded at
CRYPT_COMPLIANCELEVEL_STANDARD, policy constraints are only enforced
at CRYPT_COMPLIANCELEVEL_PKIX_FULL due to the totally bizarre
requirements that some of them have (see comments in chk_*.c for more
on this) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -