internal static void Test() { byte[] test = Utilities.ScoopBytes(93); List <string> names = new List <string>(); names.AddRange(new string[] { "RIPEMD320withRSA" }); foreach (string name in names) { SignatureAlgorithmHelper.TryGetAlgorithm(name, out ISignatureAlgorithm algorithm); AsymmetricCipherKeyPair keyPair = algorithm.GenerateKeyPair(); ISigner signer = algorithm.GenerateSigner(keyPair.Private); ISigner verifier = algorithm.GenerateSigner(keyPair.Public); signer.BlockUpdate(test, 0, test.Length); byte[] signature = signer.GenerateSignature(); verifier.BlockUpdate(test, 0, test.Length); bool diff = !verifier.VerifySignature(signature); } }
private static void Test1() { byte[] test = Utilities.ScoopBytes(93); // Type type = typeof(SignatureAlgorithmHelper); PropertyInfo[] properties = type.GetProperties(BindingFlags.Static | BindingFlags.Public); foreach (PropertyInfo property in properties) { if (property.GetValue(type, null) is ISignatureAlgorithm algorithm) { _total++; AsymmetricCipherKeyPair keyPair = algorithm.GenerateKeyPair(); ISigner signer = algorithm.GenerateSigner(keyPair.Private); ISigner verifier = algorithm.GenerateSigner(keyPair.Public); XTest(algorithm, signer, verifier, test); _execute++; } } // List <string> names = new List <string>(); names.AddRange(new string[] { "Ed25519ctx", "Ed448ph", "SHA3-256withRSA/ISO9796-2", "SHA1withRSA/X9.31" }); names.AddRange(new string[] { "RIPEMD128WITHSM2", "RIPEMD160WITHSM2", "RIPEMD256WITHSM2", "RIPEMD256WITHSM2" }); names.AddRange(new string[] { "SHA1WITHSM2", "SHA224WITHSM2", "SHA256WITHSM2", "SHA384WITHSM2", "SHA512WITHSM2" }); foreach (string name in names) { _total++; _execute++; SignatureAlgorithmHelper.TryGetAlgorithm(name, out ISignatureAlgorithm algorithm); AsymmetricCipherKeyPair keyPair = algorithm.GenerateKeyPair(); ISigner signer = algorithm.GenerateSigner(keyPair.Private); ISigner verifier = algorithm.GenerateSigner(keyPair.Public); XTest(algorithm, signer, verifier, test); } }
private static void Demo() { // // CA work // BuildCAUnit(out AsymmetricKeyParameter caPrivateKey, out X509Certificate caCert); // // Subject work // BuildServerUnit(out Pkcs10CertificationRequest serverCsr); BuildClientUnit(out Pkcs10CertificationRequest clientCsr); // // CA work // X509Helper.ExtractCsr(serverCsr, out AsymmetricKeyParameter serverPublicKey, out X509Name serverDN, out X509Extensions serverExtensions); X509Certificate serverCert = X509Helper.GenerateSubjectCert("SHA256WithECDSA", caPrivateKey, caCert, serverPublicKey, serverDN, serverExtensions, DateTime.UtcNow.AddDays(-1), 90); X509Helper.ExtractCsr(clientCsr, out AsymmetricKeyParameter clientPublicKey, out X509Name clientDN, out X509Extensions clientExtensions); // SignatureAlgorithmHelper.TryGetAlgorithm("SHA256WithECDSA", out ISignatureAlgorithm signatureAlgorithm); X509Certificate clientCert = X509Helper.GenerateSubjectCert(signatureAlgorithm, caPrivateKey, caCert, clientPublicKey, clientDN, clientExtensions, DateTime.UtcNow.AddDays(-1), 90); // // // Print // Console.WriteLine("==== CA Cert ====================================================================================="); Console.WriteLine(caCert.ToString()); Console.WriteLine("==== Server Cert ================================================================================="); Console.WriteLine(serverCert.ToString()); Console.WriteLine("==== Client Cert ================================================================================="); Console.WriteLine(clientCert.ToString()); Console.WriteLine(); // // Verify // bool validated; try { serverCert.Verify(caCert.GetPublicKey()); validated = true; } catch { validated = false; } Console.WriteLine("Verify server cert - " + validated); try { clientCert.Verify(caCert.GetPublicKey()); validated = true; } catch { validated = false; } Console.WriteLine("Verify client cert - " + validated); }