Example #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void createSelfSignedCertificate(java.io.File certificatePath, java.io.File privateKeyPath, String hostName) throws java.security.GeneralSecurityException, java.io.IOException, org.bouncycastle.operator.OperatorCreationException
        public virtual void CreateSelfSignedCertificate(File certificatePath, File privateKeyPath, string hostName)
        {
            InstallCleanupHook(certificatePath, privateKeyPath);
            KeyPairGenerator keyGen = KeyPairGenerator.getInstance(DEFAULT_ENCRYPTION);

            keyGen.initialize(2048, _random);
            KeyPair keypair = keyGen.generateKeyPair();

            // Prepare the information required for generating an X.509 certificate.
            X500Name owner = new X500Name("CN=" + hostName);
            X509v3CertificateBuilder builder = new JcaX509v3CertificateBuilder(owner, new BigInteger(64, _random), _notBefore, _notAfter, owner, keypair.Public);

            // Subject alternative name (part of SNI extension, used for hostname verification)
            GeneralNames subjectAlternativeName = new GeneralNames(new GeneralName(GeneralName.dNSName, hostName));

            builder.addExtension(Extension.subjectAlternativeName, false, subjectAlternativeName);

            PrivateKey            privateKey = keypair.Private;
            ContentSigner         signer     = (new JcaContentSignerBuilder("SHA512WithRSAEncryption")).build(privateKey);
            X509CertificateHolder certHolder = builder.build(signer);
            X509Certificate       cert       = (new JcaX509CertificateConverter()).setProvider(_provider).getCertificate(certHolder);

            //check so that cert is valid
            cert.verify(keypair.Public);

            //write to disk
            WritePem("CERTIFICATE", cert.Encoded, certificatePath);
            WritePem("PRIVATE KEY", privateKey.Encoded, privateKeyPath);
            // Mark as done so we don't clean up certificates
            _cleanupRequired = false;
        }
Example #2
0
        // ctor()?
        public __RSACryptoServiceProvider(int dwKeySize, CspParameters parameters)
        {
            // what if ctor is here for import instead of gen?
            // X:\jsc.svn\examples\java\hybrid\JVMCLRRSACryptoServiceProviderExport\JVMCLRRSACryptoServiceProviderExport\Program.cs

            // If this is not a random container we generate, create it eagerly
            // in the constructor so we can report any errors now.

            //  Environment.GetCompatibilityFlag(CompatibilityFlag.EagerlyGenerateRandomAsymmKeys)
            //    GetKeyPair();


            // We only attempt to generate a random key on desktop runtimes because the CoreCLR
            // RSA surface area is limited to simply verifying signatures.  Since generating a
            // random key to verify signatures will always lead to failure (unless we happend to
            // win the lottery and randomly generate the signing key ...), there is no need
            // to add this functionality to CoreCLR at this point.

            // ? what

            this.dwKeySize  = dwKeySize;
            this.parameters = parameters;

            // when would we want to delay key gen?
            // lets gen it early.

            // X:\jsc.svn\examples\javascript\appengine\Test\TestCryptoKeyGenerate\TestCryptoKeyGenerate\ApplicationWebService.cs

            try
            {
                // it works.
                // can we now wrap rsa for all platforms
                // and use it as a generic nuget?

                var sw = Stopwatch.StartNew();
                Console.WriteLine("RSACryptoServiceProvider before generateKeyPair " + new { dwKeySize });

                var keyGen = KeyPairGenerator.getInstance("RSA");

                keyGen.initialize(dwKeySize);

                this.InternalKeyPair       = keyGen.generateKeyPair();
                this.InternalRSAPublicKey  = (RSAPublicKey)this.InternalKeyPair.getPublic();
                this.InternalRSAPrivateKey = (RSAPrivateCrtKey)this.InternalKeyPair.getPrivate();

                Console.WriteLine("RSACryptoServiceProvider after generateKeyPair " + new { sw.ElapsedMilliseconds });

                //before generateKeyPair { { ElapsedMilliseconds = 2 } }
                //after generateKeyPair { { ElapsedMilliseconds = 1130 } }
            }
            catch
            {
                throw;
            }
        }
Example #3
0
        public virtual void setCurve()
        {
            try
            {
                curve = new ECCurve.Fp(System.Numerics.BigInteger.Parse("FFFFFFFFFFFFFFFF00000001FFFFFFFFFFFFFFFF", System.Globalization.NumberStyles.HexNumber), System.Numerics.BigInteger.Parse("FFFFFFFFFFFFFFFF00000001FFFFFFFFFFFFFFFC", System.Globalization.NumberStyles.HexNumber), System.Numerics.BigInteger.Parse("A68BEDC33418029C1D3CE33B9A321FCCBB9E0F0B", System.Globalization.NumberStyles.HexNumber));                                          // b

                spec = new ECParameterSpec(curve, curve.createPoint(System.Numerics.BigInteger.Parse("0128EC4256487FD8FDF64E2437BC0A1F6D5AFDE2C", System.Globalization.NumberStyles.HexNumber), System.Numerics.BigInteger.Parse("05958557EB1DB001260425524DBC379D5AC5F4ADF", System.Globalization.NumberStyles.HexNumber), false), System.Numerics.BigInteger.Parse("00FFFFFFFFFFFFFFFEFFFFB5AE3C523E63944F2127", System.Globalization.NumberStyles.HexNumber)); // n

                g = KeyPairGenerator.getInstance("ECDSA", "BC");
                f = KeyFactory.getInstance("ECDSA", "BC");
                g.initialize(spec, new SecureRandom());

                keyPair = g.generateKeyPair();
            }
            catch (Exception e)
            {
                Console.WriteLine("setCurve", e);
            }
        }
Example #4
0
        public static void Main(string[] args)
        {
            // X:\jsc.svn\examples\java\hybrid\JVMCLRRSACryptoServiceProviderExport\JVMCLRRSACryptoServiceProviderExport\Program.cs

            // jsc needs to see args to make Main into main for javac..

            // X:\jsc.svn\examples\javascript\Test\TestWebCryptoKeyExport\TestWebCryptoKeyExport\ApplicationWebService.cs

            // see also>
            // X:\jsc.svn\examples\javascript\android\AndroidBroadcastLogger\AndroidBroadcastLogger\ApplicationWebService.cs

            System.Console.WriteLine(
                typeof(object).AssemblyQualifiedName
                );

            #region Do a release build to create a hybrid jvmclr program.
            if (typeof(object).FullName != "java.lang.Object")
            {
                System.Console.WriteLine("Do a release build to create a hybrid jvmclr program.");
                Debugger.Break();
                return;
            }
            #endregion


            // X:\jsc.svn\examples\java\hybrid\JVMCLRCryptoKeyGenerate\JVMCLRCryptoKeyGenerate\Program.cs

            try
            {
                var sw = Stopwatch.StartNew();

                KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");

                keyGen.initialize(2048);

                KeyPair keyPair = keyGen.generateKeyPair();
                Console.WriteLine("after generateKeyPair " + new { sw.ElapsedMilliseconds });
                // after generateKeyPair { ElapsedMilliseconds = 1791 }


                // namespace java.security
                PublicKey publicKey = keyPair.getPublic();

                RSAPublicKey rsapublicKey = publicKey as RSAPublicKey;

                //{ rsapublicKey = Sun RSA public key, 2048 bits
                //  modulus: 29949193980909979274189480704243019682286346329170638184791375272041884154536539019391076867658592793782845145577141321856957216387377877051532863326545210198967756169805262894313096770941282431904979238566400967478467777198159929565518234047418214901842157765701592238170194579437999716462637123573832853765849987776635905960851094995851522216218636702303980441225891149285848171423753401798137735808260588593837046934598499190528986687550800243662647128332067862280439741602381552218867646299789687315601743815760887214608692897973056730201700896528249989739260099353181532267384971060647420834129903424358272703969
                //  public exponent: 65537 }
                //4

                Console.WriteLine(

                    new { rsapublicKey }

                    );

                var rsaModulusBytes   = (byte[])(object)rsapublicKey.getModulus().toByteArray();
                var rsaPublicExponent = (byte[])(object)rsapublicKey.getPublicExponent().toByteArray();

                var encByte = (sbyte[])(object)CLRProgram.CLRMain(

                    m: rsaModulusBytes,
                    e: rsaPublicExponent
                    );

                //System.Console.WriteLine("Public Key - " + publicKey.ToString());
                //System.Console.WriteLine("Private Key - " + privateKey.ToString());

                System.Console.WriteLine(encByte.Length.ToString());


                //Decrypt
                Cipher     rsaCipher  = Cipher.getInstance("RSA");
                PrivateKey privateKey = keyPair.getPrivate();
                rsaCipher.init(Cipher.DECRYPT_MODE, privateKey);
                sbyte[] decByte = rsaCipher.doFinal(encByte);
                System.Console.WriteLine(decByte.Length.ToString());

                var xstring = Encoding.UTF8.GetString(
                    (byte[])(object)decByte
                    );

                Console.WriteLine(new { xstring });
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex);
            }
        }
Example #5
0
        public static void Main(string[] args)
        {
            // https://sites.google.com/a/jsc-solutions.net/backlog/knowledge-base/2014/201408/20140830
            // X:\jsc.svn\examples\javascript\appengine\Test\TestCryptoKeyGenerate\TestCryptoKeyGenerate\ApplicationWebService.cs
            // X:\jsc.svn\examples\java\hybrid\JVMCLRRSA\JVMCLRRSA\Program.cs

            #region Do a release build to create a hybrid jvmclr program.
            if (typeof(object).FullName != "java.lang.Object")
            {
                System.Console.WriteLine("Do a release build to create a hybrid jvmclr program.");
                Debugger.Break();
                return;
            }
            #endregion


            System.Console.WriteLine("jvm ready! " + typeof(object).FullName);



#if JCE
            try
            {
                var sw = Stopwatch.StartNew();

                KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");

                keyGen.initialize(2048);

                KeyPair keyPair = keyGen.generateKeyPair();
                Console.WriteLine("after generateKeyPair " + new { sw.ElapsedMilliseconds });
                // after generateKeyPair { ElapsedMilliseconds = 1791 }

                PublicKey  publicKey  = keyPair.getPublic();
                PrivateKey privateKey = keyPair.getPrivate();
                //System.Console.WriteLine("Public Key - " + publicKey.ToString());
                //System.Console.WriteLine("Private Key - " + privateKey.ToString());

                var data = new sbyte[] { 0x02, 0x03, 0x04, 0x05 };
                System.Console.WriteLine(data.Length.ToString());


                Cipher rsaCipher = Cipher.getInstance("RSA");


                //Encrypt
                rsaCipher.init(Cipher.ENCRYPT_MODE, publicKey);
                sbyte[] encByte = rsaCipher.doFinal(data);
                System.Console.WriteLine(encByte.Length.ToString());


                //Decrypt
                rsaCipher.init(Cipher.DECRYPT_MODE, privateKey);
                sbyte[] decByte = rsaCipher.doFinal(encByte);
                System.Console.WriteLine(decByte.Length.ToString());

                if (data.Length != decByte.Length)
                {
                    for (int i = 0; i < data.Length; i++)
                    {
                        if (data[i] != decByte[i])
                        {
                            System.Console.WriteLine("false");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex);
            }
#endif

            //jvm ready! java.lang.Object
            //4
            //256
            //4

            CLRProgram.CLRMain();

            System.Console.WriteLine("jvm exit!");
        }