require "asn1" # CertID ::= SEQUENCE { # hashAlgorithm AlgorithmIdentifier, # issuerNameHash OCTET STRING, # issuerKeyHash OCTET STRING, # serialNumber CertificateSerialNumber } # TBSRequest ::= SEQUENCE { # version [0] EXPLICIT Version DEFAULT v1, # requestorName [1] EXPLICIT GeneralName OPTIONAL, # requestList SEQUENCE OF Request, # requestExtensions [2] EXPLICIT Extensions OPTIONAL } # # Version ::= INTEGER { v1(0) } Version = ASN1Kit::Integer["v1" => 0] GeneralName = ASN1Kit::Import TBSRequest = ASN1Kit::Sequence( ["version", Version, tagging: :explicit, tag_number: 0], ["requestorName", GeneralName, tagging: :explicit, tag_number: 1], ["requestList", ASN1Kit::SequenceOf(Request)], ["requestExtensions", Extensions, ] ) TBSRequest = ASN1Kit::Sequence[ ["version", Version.subtype(tagging: :explicit, tag_number: 0), default: Version.new("v1")], ["requestorName", GeneralName, tagging: :explicit, tag_number: 1), ["requestList", ASN1Kit::SequenceOf(Request)], ["requestExtensions", Extensions, explicit: optional: true] ]