summary refs log tree commit diff
path: root/crypto/test/src/asn1/test/X509AltTest.cs
blob: 047d2e23b0a2c930836b3c94bc6ef54a314083a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
using NUnit.Framework;

using Org.BouncyCastle.Asn1.Pkcs;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Utilities.Encoders;

namespace Org.BouncyCastle.Asn1.Tests
{
    [TestFixture]
    public class X509AltTest
    {
        [Test]
        public void TestX509AltTypes()
        {
            SubjectAltPublicKeyInfo subAlt = new SubjectAltPublicKeyInfo(
                new AlgorithmIdentifier(PkcsObjectIdentifiers.RsaEncryption, DerNull.Instance),
                new DerBitString(Hex.DecodeStrict("0102030405060708090807060504030201")));
            AltSignatureValue sigValAlt = new AltSignatureValue(Hex.DecodeStrict("0102030405060708090807060504030201"));

            AltSignatureAlgorithm sigAlgAlt = new AltSignatureAlgorithm(
                new AlgorithmIdentifier(PkcsObjectIdentifiers.MD5WithRsaEncryption, DerNull.Instance));
            AltSignatureAlgorithm sigAlgAlt2 = new AltSignatureAlgorithm(
                PkcsObjectIdentifiers.MD5WithRsaEncryption, DerNull.Instance);

            Assert.AreEqual(sigAlgAlt, sigAlgAlt2);

            var extGen = new X509ExtensionsGenerator();
            extGen.AddExtension(X509Extensions.SubjectAltPublicKeyInfo, false, subAlt);
            extGen.AddExtension(X509Extensions.AltSignatureAlgorithm, false, sigAlgAlt);
            extGen.AddExtension(X509Extensions.AltSignatureValue, false, sigValAlt);

            var exts = extGen.Generate();
            Assert.AreEqual(subAlt, SubjectAltPublicKeyInfo.FromExtensions(exts));
            Assert.AreEqual(sigAlgAlt, AltSignatureAlgorithm.FromExtensions(exts));
            Assert.AreEqual(sigValAlt, AltSignatureValue.FromExtensions(exts));
            Assert.AreEqual(subAlt, SubjectAltPublicKeyInfo.GetInstance(subAlt.GetEncoded()));
            Assert.AreEqual(sigAlgAlt, AltSignatureAlgorithm.GetInstance(sigAlgAlt.GetEncoded()));
            Assert.AreEqual(sigValAlt, AltSignatureValue.GetInstance(sigValAlt.GetEncoded()));
            Assert.AreEqual(subAlt, SubjectAltPublicKeyInfo.GetInstance(new DerTaggedObject(1, subAlt), true));
            Assert.AreEqual(sigAlgAlt, AltSignatureAlgorithm.GetInstance(new DerTaggedObject(1, sigAlgAlt), true));
            Assert.AreEqual(sigValAlt, AltSignatureValue.GetInstance(new DerTaggedObject(1, sigValAlt), true));
        }
    }
}