summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Hook <dgh@cryptoworkshop.com>2020-11-17 14:49:04 +1100
committerDavid Hook <dgh@cryptoworkshop.com>2020-11-17 18:08:00 +1100
commit18edf838f6df363bac47752664d956b394be030a (patch)
tree9635e77661cd5b1c066d5b866bcabfbb779da28a
parentRework D/E range restriction (diff)
downloadBouncyCastle.NET-ed25519-18edf838f6df363bac47752664d956b394be030a.tar.xz
added support for PKCS#5 scheme 2 to Pkcs12Store, tests for the same
-rw-r--r--crypto/src/pkcs/Pkcs12Store.cs23
-rw-r--r--crypto/test/src/pkcs/test/PKCS12StoreTest.cs235
2 files changed, 249 insertions, 9 deletions
diff --git a/crypto/src/pkcs/Pkcs12Store.cs b/crypto/src/pkcs/Pkcs12Store.cs
index 0eff8eb92..dba76cdb5 100644
--- a/crypto/src/pkcs/Pkcs12Store.cs
+++ b/crypto/src/pkcs/Pkcs12Store.cs
@@ -1058,16 +1058,27 @@ namespace Org.BouncyCastle.Pkcs
             bool				wrongPkcs12Zero,
             byte[]				data)
         {
-            IBufferedCipher cipher = PbeUtilities.CreateEngine(algId.Algorithm) as IBufferedCipher;
+            IBufferedCipher cipher = PbeUtilities.CreateEngine(algId) as IBufferedCipher;
 
             if (cipher == null)
                 throw new Exception("Unknown encryption algorithm: " + algId.Algorithm);
 
-            Pkcs12PbeParams pbeParameters = Pkcs12PbeParams.GetInstance(algId.Parameters);
-            ICipherParameters cipherParams = PbeUtilities.GenerateCipherParameters(
-                algId.Algorithm, password, wrongPkcs12Zero, pbeParameters);
-            cipher.Init(forEncryption, cipherParams);
-            return cipher.DoFinal(data);
+            if (algId.Algorithm.Equals(PkcsObjectIdentifiers.IdPbeS2))
+            {
+                PbeS2Parameters pbeParameters = PbeS2Parameters.GetInstance(algId.Parameters);
+                ICipherParameters cipherParams = PbeUtilities.GenerateCipherParameters(
+                    algId.Algorithm, password, pbeParameters);
+                cipher.Init(forEncryption, cipherParams);
+                return cipher.DoFinal(data);
+            }
+            else
+            {
+                Pkcs12PbeParams pbeParameters = Pkcs12PbeParams.GetInstance(algId.Parameters);
+                ICipherParameters cipherParams = PbeUtilities.GenerateCipherParameters(
+                    algId.Algorithm, password, wrongPkcs12Zero, pbeParameters);
+                cipher.Init(forEncryption, cipherParams);
+                return cipher.DoFinal(data);
+            }
         }
 
         private class IgnoresCaseHashtable
diff --git a/crypto/test/src/pkcs/test/PKCS12StoreTest.cs b/crypto/test/src/pkcs/test/PKCS12StoreTest.cs
index 9d6f541fa..19749278c 100644
--- a/crypto/test/src/pkcs/test/PKCS12StoreTest.cs
+++ b/crypto/test/src/pkcs/test/PKCS12StoreTest.cs
@@ -541,8 +541,205 @@ namespace Org.BouncyCastle.Pkcs.Tests
          + "ToTFur9UoPgV3IoCIQDd6Lvuf1IHIZPeNbyuvBCynu+eDek8pO5B90BV6ImI"
          + "uTETMBEGCSqGSIb3DQEJFDEEHgIAADA7MB8wBwYFKw4DAhoEFBANsR/ZVCiJ"
          + "TzN4ZU2XvrYRR08dBBSWTwZIoxkxjXzd/mWKRFVbSOKwCAICB9A=");
-        
-        private readonly SecureRandom Random = new SecureRandom();
+
+		private static readonly byte[] sentrix1 = Base64.Decode(
+		  "MIILRQIBAzCCCvEGCSqGSIb3DQEHAaCCCuIEggreMIIK2jCCAhAGCSqGSIb3"
+ + "DQEHAaCCAgEEggH9MIIB+TCCAfUGCyqGSIb3DQEMCgECoIIBEDCCAQwwVwYJ"
+ + "KoZIhvcNAQUNMEowKQYJKoZIhvcNAQUMMBwECNhVXbrzrAMNAgIH0DAMBggq"
+ + "hkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQ0BXsfgqcfDzPx5NaTbwA5gSBsLxT"
+ + "h8b5ZF/F7oq+45GTsDisspv1ZcJrp5fwg/PWmxA4ao/LarQX+b0xXq+TpCMN"
+ + "KtvWG+tRHoJfNcMlKLlppi0LV0WHQ6juj5zvb3lQX8BUvWOjCNz9z20tM5w+"
+ + "4lD6vZsDgXEi56feMwprdfw/Vq1mZJ3wBBsoSJtMRZoh580C5ij/BCbczA/O"
+ + "mFYGN/Ix9KYzxC/ecPWADbe7C7yVbIS1aNh5EVcSkVNf8zhEdOKNMYHRMBMG"
+ + "CSqGSIb3DQEJFTEGBAQBAAAAMFsGCSqGSIb3DQEJFDFOHkwAewA2AEQAQQA2"
+ + "AEQARQBGADAALQBFADAARQBDAC0ANAAxAEYANwAtAEEANQA2AEMALQBFADMA"
+ + "NQA5AEIAMgBFADEARgBBADQANQB9MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMA"
+ + "cgBvAHMAbwBmAHQAIABTAG8AZgB0AHcAYQByAGUAIABLAGUAeQAgAFMAdABv"
+ + "AHIAYQBnAGUAIABQAHIAbwB2AGkAZABlAHIwggjCBgkqhkiG9w0BBwagggiz"
+ + "MIIIrwIBADCCCKgGCSqGSIb3DQEHATBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG"
+ + "9w0BBQwwHAQIqytIbVkt24ICAgfQMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUD"
+ + "BAEqBBCU1/xxOdG62x7n1Kz/4wPJgIIIQK4qtOJGR/+2+HD1MYVhFGaqYKpB"
+ + "wRQ4lg9HI4BYolGqJT19NgpSc95nFfq5nLoCI4nnH7b9U7p2t7wRR08tz5NO"
+ + "kPLt2DgOd3cOJCmSv9I40OVBuST6tukzwWi09x7uaOLqATvqfLrISDxYWWID"
+ + "O9QXqTLazwtgszk6eorZh9bogoINjdXOsZgDYHfHJvttBITI8fxLbUPjE/Fw"
+ + "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"
+ + "59no+6YCAgfQ");
+
+		private static readonly byte[] sentrix2 = Base64.Decode(
+   "MIIKxwIBAzCCCnMGCSqGSIb3DQEHAaCCCmQEggpgMIIKXDCCAhAGCSqGSIb3"
+ + "DQEHAaCCAgEEggH9MIIB+TCCAfUGCyqGSIb3DQEMCgECoIIBEDCCAQwwVwYJ"
+ + "KoZIhvcNAQUNMEowKQYJKoZIhvcNAQUMMBwECNLmcXtb3SOSAgIH0DAMBggq"
+ + "hkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQG3jOE88tMcGPYiMn4frFZASBsIXA"
+ + "JRyUSyy0UfmoW5093F213ROErwIKSwInMD2x/jAHBOK3tTLGiH0YZyy0kqnO"
+ + "BfjbvweJ1FZOLAAfFiERX+hEFJN0yll+mweUU/Yrgyrrmtre4Xn4bJWVN7k1"
+ + "j6dU/Ub5p8FMpROmG4biiY1L5GcjOFZCiQiVaSh6FWwsN/qcdaTfJi/mKjsf"
+ + "TGk/G/intuvPxTgQC6c/ZY4MXpQZ6CFHf41mF9THgR0Ur+WgNSW7MYHRMBMG"
+ + "CSqGSIb3DQEJFTEGBAQBAAAAMFsGCSqGSIb3DQEJFDFOHkwAewA2AEQAQQA2"
+ + "AEQARQBGADAALQBFADAARQBDAC0ANAAxAEYANwAtAEEANQA2AEMALQBFADMA"
+ + "NQA5AEIAMgBFADEARgBBADQANQB9MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMA"
+ + "cgBvAHMAbwBmAHQAIABTAG8AZgB0AHcAYQByAGUAIABLAGUAeQAgAFMAdABv"
+ + "AHIAYQBnAGUAIABQAHIAbwB2AGkAZABlAHIwgghEBgkqhkiG9w0BBwGgggg1"
+ + "BIIIMTCCCC0wggLLBgsqhkiG9w0BDAoBA6CCAqMwggKfBgoqhkiG9w0BCRYB"
+ + "oIICjwSCAoswggKHMIICLaADAgECAhAqxxC4L9yAIPEUfBRIgsUUMAoGCCqG"
+ + "SM49BAMCMIGRMQswCQYDVQQGEwJVUzEUMBIGA1UECwwLRW5naW5lZXJpbmcx"
+ + "HTAbBgNVBAoMFERhdGEgSS9PIENvcnBvcmF0aW9uMRAwDgYDVQQHDAdSZWRt"
+ + "b25kMRMwEQYDVQQIDApXYXNoaW5ndG9uMSYwJAYDVQQDDB1EYXRhIEkvTyBF"
+ + "QyBUZXN0IEludGVybWVkaWF0ZTAeFw0yMDAyMjgyMzA3MzJaFw0yNTAyMjgy"
+ + "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"
+ + "LOhDDVV1zCxAAQ7XjkwCAgfQ");
+
+ private static readonly byte[] sentrix3 = Base64.Decode(
+	 "MIILRQIBAzCCCvEGCSqGSIb3DQEHAaCCCuIEggreMIIK2jCCAhAGCSqGSIb3"
+ + "DQEHAaCCAgEEggH9MIIB+TCCAfUGCyqGSIb3DQEMCgECoIIBEDCCAQwwVwYJ"
+ + "KoZIhvcNAQUNMEowKQYJKoZIhvcNAQUMMBwECKDaE6qqgBaCAgIH0DAMBggq"
+ + "hkiG9w0CCQUAMB0GCWCGSAFlAwQBKgQQ8/tQCUjOKfjw9utJiNBAXASBsHmJ"
+ + "/o9iTQbJFD0GsBDTyuAoqpC5l6FRr/yuAqRR9sr11qBg3qTsM7bggOjKR35D"
+ + "gHq1ODrrMAJQ/esG4xep6kpX7O5W1tGwTgYEQlucUI09Sel7otMJ+JNhKb+h"
+ + "6+9bklaNc33FOCnpuyfn/JT0xp1K4NTDIHT1XgTwRyJkaqYssINg3Hap7cyv"
+ + "EikgdFc/crpyXMkNwsmvavtYxaqTrLnizSiYgodrx/uMAUY/X1VEMYHRMBMG"
+ + "CSqGSIb3DQEJFTEGBAQBAAAAMFsGCSqGSIb3DQEJFDFOHkwAewA2AEQAQQA2"
+ + "AEQARQBGADAALQBFADAARQBDAC0ANAAxAEYANwAtAEEANQA2AEMALQBFADMA"
+ + "NQA5AEIAMgBFADEARgBBADQANQB9MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMA"
+ + "cgBvAHMAbwBmAHQAIABTAG8AZgB0AHcAYQByAGUAIABLAGUAeQAgAFMAdABv"
+ + "AHIAYQBnAGUAIABQAHIAbwB2AGkAZABlAHIwggjCBgkqhkiG9w0BBwagggiz"
+ + "MIIIrwIBADCCCKgGCSqGSIb3DQEHATBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG"
+ + "9w0BBQwwHAQI5w8DkzTclKsCAgfQMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUD"
+ + "BAEqBBCbqbEsYTwhm5BVxA6YOSbygIIIQAJb+MhOyNMcUoLQiuX1xghRaVlV"
+ + "SZ1kHFIe47EUaJehv7iEwbApE9I6W3DkEmshf6UB46Mo7PfhOII9XUCmUbqi"
+ + "6hgpFr22YmiFJaVfgCwnGpyjqXuuaYHpTYEiSRSkKLJjh6o2FwRkAYDXt7AW"
+ + "dD8yS0CtLp8Qp8eD5D5qyXfDKDof5s5x9hyO445jE7bL+Y8L7lTpaouBEefG"
+ + "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"
+ + "V71jzcoCAgfQ");
+		private readonly SecureRandom Random = new SecureRandom();
 
 		/**
 		* we generate a self signed certificate for the sake of testing - RSA
@@ -925,12 +1122,44 @@ namespace Org.BouncyCastle.Pkcs.Tests
 			stream = new MemoryStream(sentrixHard, false);
 			store = new Pkcs12StoreBuilder().Build();
 			store.Load(stream, "0000".ToCharArray());
+			CheckPKCS12(store);
 
 			stream = new MemoryStream(sentrixSoft, false);
 			store = new Pkcs12StoreBuilder().Build();
 			store.Load(stream, "0000".ToCharArray());
+			CheckPKCS12(store);
+
+			stream = new MemoryStream(sentrix1, false);
+			store = new Pkcs12StoreBuilder().Build();
+			store.Load(stream, "0000".ToCharArray());
+			CheckPKCS12(store);
+
+			stream = new MemoryStream(sentrix2, false);
+			store = new Pkcs12StoreBuilder().Build();
+			store.Load(stream, "0000".ToCharArray());
+			CheckPKCS12(store);
+
+			stream = new MemoryStream(sentrix3, false);
+			store = new Pkcs12StoreBuilder().Build();
+			store.Load(stream, "0000".ToCharArray());
+			CheckPKCS12(store);
 		}
 
+		private void CheckPKCS12(Pkcs12Store store)
+		{
+			foreach (string alias in store.Aliases)
+			{
+				if (store.IsKeyEntry(alias))
+				{
+					AsymmetricKeyEntry ent = store.GetKey(alias);
+					X509CertificateEntry[] crts = store.GetCertificateChain(alias);
+				}
+				else if (store.IsCertificateEntry(alias))
+				{
+					X509CertificateEntry crt = store.GetCertificate(alias);
+				}
+			}
+		}
 		private void DoTestSupportedTypes(AsymmetricKeyEntry privKey, X509CertificateEntry[] chain)
 		{
 			basicStoreTest(privKey, chain,
@@ -1105,7 +1334,7 @@ namespace Org.BouncyCastle.Pkcs.Tests
 		public void TestFunction()
 		{
 			string resultText = Perform().ToString();
-
+			Console.Out.WriteLine(resultText);
 			Assert.AreEqual(Name + ": Okay", resultText);
 		}
 	}