Class SignedData

  • All Implemented Interfaces:
    io.anyline.nfc.bouncycastle.asn1.ASN1Encodable , io.anyline.nfc.bouncycastle.util.Encodable

    
    public class SignedData
    extends ASN1Object
                        

    RFC 5652:

    A signed data object containing multitude of SignerInfos.

    SignedData ::= SEQUENCE {
        version CMSVersion,
        digestAlgorithms DigestAlgorithmIdentifiers,
        encapContentInfo EncapsulatedContentInfo,
        certificates [0] IMPLICIT CertificateSet OPTIONAL,
        crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
        signerInfos SignerInfos
      }
    
    DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
    
    SignerInfos ::= SET OF SignerInfo
    

    The version calculation uses following ruleset from RFC 5652 section 5.1:

    IF ((certificates is present) AND
       (any certificates with a type of other are present)) OR
       ((crls is present) AND
       (any crls with a type of other are present))
    THEN version MUST be 5
    ELSE
       IF (certificates is present) AND
          (any version 2 attribute certificates are present)
       THEN version MUST be 4
       ELSE
          IF ((certificates is present) AND
             (any version 1 attribute certificates are present)) OR
             (any SignerInfo structures are version 3) OR
             (encapContentInfo eContentType is other than id-data)
          THEN version MUST be 3
          ELSE version MUST be 1