예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
        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);
        }