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
        /// <summary>
        /// Generate a new random decrypt key for RSA based on the given params.
        /// </summary>
        ///
        /// <param name="params">The key params with the key size (in bits).</param>
        /// <returns>The new decrypt key (PKCS8-encoded private key).</returns>
        public static DecryptKey generateKey(RsaKeyParams paras)
        {
            KeyPairGenerator generator = System.KeyPairGenerator.getInstance("RSA");

            generator.initialize(paras.getKeySize());
            KeyPair pair = generator.generateKeyPair();

            return(new DecryptKey(new Blob(pair.getPrivate().getEncoded(), false)));
        }
Example #3
0
        /// <summary>
        /// Generate a pair of asymmetric keys.
        /// </summary>
        ///
        /// <param name="keyName">The name of the key pair.</param>
        /// <param name="params">The parameters of the key.</param>
        /// <exception cref="System.Security.SecurityException"></exception>
        public sealed override void generateKeyPair(Name keyName, KeyParams paras)
        {
            if (doesKeyExist(keyName, net.named_data.jndn.security.KeyClass.PUBLIC))
            {
                throw new SecurityException("Public Key already exists");
            }
            if (doesKeyExist(keyName, net.named_data.jndn.security.KeyClass.PRIVATE))
            {
                throw new SecurityException("Private Key already exists");
            }

            String keyAlgorithm;
            int    keySize;

            if (paras.getKeyType() == net.named_data.jndn.security.KeyType.RSA)
            {
                keyAlgorithm = "RSA";
                keySize      = ((RsaKeyParams)paras).getKeySize();
            }
            else if (paras.getKeyType() == net.named_data.jndn.security.KeyType.EC)
            {
                keyAlgorithm = "EC";
                keySize      = ((EcKeyParams)paras).getKeySize();
            }
            else
            {
                throw new SecurityException("Cannot generate a key pair of type "
                                            + paras.getKeyType());
            }

            KeyPairGenerator generator = null;

            try {
                generator = System.KeyPairGenerator.getInstance(keyAlgorithm);
            } catch (Exception e) {
                throw new SecurityException(
                          "FilePrivateKeyStorage: Could not create the key generator: "
                          + e.Message);
            }

            // generate
            generator.initialize(keySize);
            KeyPair pair = generator.generateKeyPair();

            // save
            this.write(keyName, net.named_data.jndn.security.KeyClass.PRIVATE, pair.getPrivate().getEncoded());
            this.write(keyName, net.named_data.jndn.security.KeyClass.PUBLIC, pair.getPublic().getEncoded());
        }
Example #4
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 #5
0
        /// <summary>
        /// Generate a key pair according to keyParams and return a new TpmPrivateKey
        /// with the private key. You can get the public key with derivePublicKey.
        /// </summary>
        ///
        /// <param name="keyParams">The parameters of the key.</param>
        /// <returns>A new TpmPrivateKey.</returns>
        /// <exception cref="System.ArgumentException">if the key type is not supported.</exception>
        /// <exception cref="TpmPrivateKey.Error">for an invalid key size, or an error generating.</exception>
        public static TpmPrivateKey generatePrivateKey(KeyParams keyParams)
        {
            String keyAlgorithm;
            int    keySize;

            if (keyParams.getKeyType() == net.named_data.jndn.security.KeyType.RSA)
            {
                keyAlgorithm = "RSA";
                keySize      = ((RsaKeyParams)keyParams).getKeySize();
            }
            else if (keyParams.getKeyType() == net.named_data.jndn.security.KeyType.EC)
            {
                keyAlgorithm = "EC";
                keySize      = ((EcKeyParams)keyParams).getKeySize();
            }
            else
            {
                throw new ArgumentException(
                          "Cannot generate a key pair of type "
                          + keyParams.getKeyType());
            }

            KeyPairGenerator generator = null;

            try {
                generator = System.KeyPairGenerator.getInstance(keyAlgorithm);
            } catch (Exception e) {
                throw new TpmPrivateKey.Error(
                          "TpmPrivateKey: Could not create the key generator: "
                          + e.Message);
            }

            generator.initialize(keySize);
            KeyPair pair = generator.generateKeyPair();

            TpmPrivateKey result = new TpmPrivateKey();

            result.keyType_    = keyParams.getKeyType();
            result.privateKey_ = pair.getPrivate();

            return(result);
        }
Example #6
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 #7
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!");
        }