コード例 #1
0
        public static void EnsureAttributesRoundtrip()
        {
            Pkcs8PrivateKeyInfo pkcs8Info;

            using (ECDsa ecdsa = ECDsa.Create())
            {
                pkcs8Info = Pkcs8PrivateKeyInfo.Create(ecdsa);
            }

            string description = DateTimeOffset.UtcNow.ToString();

            pkcs8Info.Attributes.Add(new Pkcs9DocumentDescription(description));

            byte[] encoded = pkcs8Info.Encode();

            Pkcs8PrivateKeyInfo pkcs8Info2 = Pkcs8PrivateKeyInfo.Decode(encoded, out _, skipCopy: true);

            Assert.Equal(pkcs8Info.AlgorithmId.Value, pkcs8Info2.AlgorithmId.Value);

            Assert.Equal(
                pkcs8Info.AlgorithmParameters.Value.ByteArrayToHex(),
                pkcs8Info2.AlgorithmParameters.Value.ByteArrayToHex());

            Assert.Equal(
                pkcs8Info.PrivateKeyBytes.ByteArrayToHex(),
                pkcs8Info2.PrivateKeyBytes.ByteArrayToHex());

            Assert.Equal(1, pkcs8Info2.Attributes.Count);

            Pkcs9DocumentDescription descAttr =
                Assert.IsType <Pkcs9DocumentDescription>(pkcs8Info2.Attributes[0].Values[0]);

            Assert.Equal(description, descAttr.DocumentDescription);
        }
コード例 #2
0
        private static void AssertIsDocumentationDescription(this AsnEncodedData attribute, string expectedDocumentDescription)
        {
            Assert.Equal(Oids.DocumentDescription, attribute.Oid.Value);
            Pkcs9DocumentDescription enhancedAttribute = attribute as Pkcs9DocumentDescription;

            Assert.NotNull(enhancedAttribute);
            Assert.Equal(expectedDocumentDescription, enhancedAttribute.DocumentDescription);
        }
コード例 #3
0
        public static void DocumentDescriptionNullary()
        {
            Pkcs9DocumentDescription p = new Pkcs9DocumentDescription();

            Assert.Null(p.RawData);
            Assert.Null(p.DocumentDescription);
            string oid = p.Oid.Value;

            Assert.Equal(s_OidDocumentDescription, oid);
        }
コード例 #4
0
        public void Constructor_Empty()
        {
            Pkcs9DocumentDescription dd = new Pkcs9DocumentDescription();

            Assert.AreEqual("1.3.6.1.4.1.311.88.2.2", dd.Oid.Value, "Oid.Value");
            Assert.IsNull(dd.Oid.FriendlyName, "Oid.FriendlyName");
            Assert.IsNull(dd.RawData, "RawData");
            Assert.IsNull(dd.DocumentDescription, "DocumentDescription");
            Assert.AreEqual(String.Empty, dd.Format(true), "Format(true)");
            Assert.AreEqual(String.Empty, dd.Format(false), "Format(false)");
        }
コード例 #5
0
        public static void DocumentDescriptionFromCookedData()
        {
            Pkcs9DocumentDescription p = new Pkcs9DocumentDescription("My Description");
            string oid = p.Oid.Value;

            Assert.Equal(s_OidDocumentDescription, oid);

            Pkcs9DocumentDescription p2 = new Pkcs9DocumentDescription(p.RawData);
            string cookedData           = p2.DocumentDescription;

            Assert.Equal("My Description", cookedData);
        }
コード例 #6
0
        public void Constructor_String()
        {
            Pkcs9DocumentDescription dd = new Pkcs9DocumentDescription("mono");

            Assert.AreEqual("1.3.6.1.4.1.311.88.2.2", dd.Oid.Value, "Oid.Value");
            Assert.IsNull(dd.Oid.FriendlyName, "Oid.FriendlyName");
            Assert.AreEqual("mono", dd.DocumentDescription, "DocumentDescription");
            Assert.AreEqual(12, dd.RawData.Length, "RawData.Length");
            Assert.AreEqual("04-0A-6D-00-6F-00-6E-00-6F-00-00-00", BitConverter.ToString(dd.RawData), "RawData");
            Assert.AreEqual("04 0a 6d 00 6f 00 6e 00 6f 00 00 00", dd.Format(true), "Format(true)");
            Assert.AreEqual("04 0a 6d 00 6f 00 6e 00 6f 00 00 00", dd.Format(false), "Format(false)");
        }
コード例 #7
0
        public static void DocumentDescriptionEmbeddedTerminator()
        {
            byte[] rawData             = "041e4d00790020004400650073006300720000007000740069006f006e000000".HexToByteArray();
            Pkcs9DocumentDescription p = new Pkcs9DocumentDescription(rawData);

            Assert.Equal(rawData, p.RawData);
            string cookedData = p.DocumentDescription;

            Assert.Equal("My Descr", cookedData);
            string oid = p.Oid.Value;

            Assert.Equal(s_OidDocumentDescription, oid);
        }
コード例 #8
0
        public static void DocumentDescriptionNullary()
        {
            Pkcs9DocumentDescription p = new Pkcs9DocumentDescription();

            if (PlatformDetection.IsNetCore)
            {
                Assert.Empty(p.RawData);
                Assert.Throws <CryptographicException>(() => p.DocumentDescription);
            }
            else
            {
                Assert.Null(p.RawData);
                Assert.Null(p.DocumentDescription);
            }
            string oid = p.Oid.Value;

            Assert.Equal(s_OidDocumentDescription, oid);
        }
コード例 #9
0
        public static void AddFold()
        {
            AsnEncodedData dd1 = new Pkcs9DocumentDescription("My Description 1");
            AsnEncodedData dd2 = new Pkcs9DocumentDescription("My Description 2");

            CryptographicAttributeObjectCollection c = new CryptographicAttributeObjectCollection();
            int index;

            index = c.Add(dd1);
            Assert.Equal(0, index);
            index = c.Add(dd2);
            Assert.Equal(0, index);

            AsnEncodedDataCollection expectedValues = new AsnEncodedDataCollection();

            expectedValues.Add(dd1);
            expectedValues.Add(dd2);
            CryptographicAttributeObject expected = new CryptographicAttributeObject(dd1.Oid, expectedValues);

            AssertEquals(c, new CryptographicAttributeObject[] { expected });
        }
コード例 #10
0
        public static void DocumentDescriptionNullValue()
        {
            object ignore;

            Assert.Throws <ArgumentNullException>(() => ignore = new Pkcs9DocumentDescription((string)null));
        }
コード例 #11
0
 public void Constructor_ArrayNull()
 {
     byte[] desc = null;
     Pkcs9DocumentDescription dd = new Pkcs9DocumentDescription(desc);
 }
コード例 #12
0
 public void Constructor_StringNull()
 {
     string desc = null;
     Pkcs9DocumentDescription dd = new Pkcs9DocumentDescription(desc);
 }