Exemple #1
0
        internal SignerInfo(ref SignerInfoAsn parsedData, SignedCms ownerDocument)
        {
            Version                       = parsedData.Version;
            SignerIdentifier              = new SubjectIdentifier(parsedData.Sid);
            _digestAlgorithm              = parsedData.DigestAlgorithm.Algorithm;
            _signedAttributesMemory       = parsedData.SignedAttributes;
            _signatureAlgorithm           = parsedData.SignatureAlgorithm.Algorithm;
            _signatureAlgorithmParameters = parsedData.SignatureAlgorithm.Parameters;
            _signature                    = parsedData.SignatureValue;
            _unsignedAttributes           = parsedData.UnsignedAttributes;

            if (_signedAttributesMemory.HasValue)
            {
                SignedAttributesSet signedSet = SignedAttributesSet.Decode(
                    _signedAttributesMemory.Value,
                    AsnEncodingRules.BER);

                _signedAttributes = signedSet.SignedAttributes;
                Debug.Assert(_signedAttributes != null);
            }

            _document = ownerDocument;
        }