【发布时间】:2019-12-23 16:11:28
【问题描述】:
我正在使用 erlang ASN.1 编译器,并且我有以下 ASN.1 定义:
DecryptedCertificate ::= SEQUENCE {
certificateProfileIdentifier INTEGER(0..255),
certificateAuthorityReference CertificateAuthority,
certificateHolderAuthorization CertificateHolderAuthorization,
endOfValidity TimeReal,
certificateHolderReference KeyIdentifier,
rsaPublicKey RsaPublicKey
}
KeyIdentifier ::= CHOICE {
extendedSerialNumber ExtendedSerialNumber,
certificateRequestID CertificateRequestID,
certificationAuthorityKID CertificationAuthorityKID
}
当我解码一个二进制文件时,它总是选择CertificateRequestID 选项,我想为解码器指定一个特定的选项,这可能吗?
PS:我正在使用 PER。
编辑: 我正在提供更多信息以使问题更清楚
CHOICE 类型有:
ExtendedSerialNumber ::= SEQUENCE {
serialNumber INTEGER(0..2^32-1)
monthYear BCDString(SIZE(2))
type OCTET STRING(SIZE(1))
manufacturerCode ManufacturerCode
}
CertificateRequestID ::= SEQUENCE {
requestSerialNumber INTEGER(0..2^32-1)
requestMonthYear BCDString(SIZE(2))
crIdentifier OCTET STRING(SIZE(1))
manufacturerCode ManufacturerCode
}
CertificationAuthorityKID ::= SEQUENCE {
nationNumeric NationNumeric
nationAlpha NationAlpha
keySerialNumber INTEGER(0..255)
additionalInfo OCTET STRING(SIZE(2))
caIdentifier OCTET STRING(SIZE(1))
}
ManufacturerCode ::= INTEGER(0..255)
NationNumeric ::= INTEGER(0..255)
NationAlpha ::= IA5String(SIZE(3))
有一些确定性的东西,例如:
- caIdentifier 始终等于 1;
- crIdentifier 始终等于 0xFF。
我尝试使用caIdentifier INTEGER(1) 和crIdentifier INTEGER(255) 指定数字,但它总是选择第一个选项并引发解析错误。
【问题讨论】: