Example #1
0
        internal static EssCertIdV2 Read(DerSequenceReader reader)
        {
            var sequenceReader = reader.ReadSequence();

            AlgorithmIdentifier algorithm;

            if (sequenceReader.HasTag(DerSequenceReader.ConstructedSequence))
            {
                algorithm = AlgorithmIdentifier.Read(sequenceReader);
            }
            else
            {
                algorithm = new AlgorithmIdentifier(new Oid(Oids.Sha256));
            }

            var          hash         = sequenceReader.ReadOctetString();
            IssuerSerial issuerSerial = null;

            if (sequenceReader.HasData)
            {
                issuerSerial = IssuerSerial.Read(sequenceReader);

                if (sequenceReader.HasData)
                {
                    throw new SignatureException(Strings.SigningCertificateV2Invalid);
                }
            }

            return(new EssCertIdV2(algorithm, hash, issuerSerial));
        }
Example #2
0
        public void Read_WithExplicitNullParameters_ReturnsAlgorithmIdentifier()
        {
            var bytes = new BcAlgorithmIdentifier(new DerObjectIdentifier(Oids.Sha256), DerNull.Instance).GetDerEncoded();

            var algorithmId = AlgorithmIdentifier.Read(bytes);

            Assert.Equal(Oids.Sha256, algorithmId.Algorithm.Value);
        }
Example #3
0
        public void Read_WithValidInput_ReturnsAlgorithmIdentifier(string oid)
        {
            var bytes = new BcAlgorithmIdentifier(new DerObjectIdentifier(oid)).GetDerEncoded();

            var algorithmId = AlgorithmIdentifier.Read(bytes);

            Assert.Equal(oid, algorithmId.Algorithm.Value);
        }
Example #4
0
        internal static MessageImprint Read(DerSequenceReader reader)
        {
            var imprintReader = reader.ReadSequence();
            var hashAlgorithm = AlgorithmIdentifier.Read(imprintReader);
            var hashedMessage = imprintReader.ReadOctetString();

            if (hashedMessage == null || hashedMessage.Length == 0)
            {
                throw new CryptographicException(Strings.InvalidAsn1);
            }

            if (imprintReader.HasData)
            {
                throw new CryptographicException(Strings.InvalidAsn1);
            }

            return(new MessageImprint(hashAlgorithm, hashedMessage));
        }
Example #5
0
 public void Read_WithInvalidAsn1_Throws()
 {
     Assert.Throws <CryptographicException>(
         () => AlgorithmIdentifier.Read(new byte[] { 0x30, 0x0b }));
 }