Ejemplo n.º 1
0
        public static OpenSSL.Crypto.EC.Key GenerateKey()
        {
            Program.RandomSeedReg();

            OpenSSL.Crypto.EC.Key key = OpenSSL.Crypto.EC.Key.FromCurveName(OpenSSL.Core.Objects.NID.secp256k1);

            // SetSecretBytes
            {
                OpenSSL.Core.BigNumber padBN = OpenSSL.Core.BigNumber.FromArray(OpenSSL.Core.Random.Bytes(32));
                //byte[] data = new byte[32];
                //for (int i = 0; i < data.Length; i++)
                //    data[i] = 0x3f;
                //OpenSSL.Core.BigNumber padBN = OpenSSL.Core.BigNumber.FromArray(data);

                // RegenerateKey
                {
                    OpenSSL.Crypto.EC.Point pubPt = new OpenSSL.Crypto.EC.Point(key.Group);
                    pubPt.Multiply(padBN, null, null, new OpenSSL.Core.BigNumber.Context());
                    key.SetPrivateKey(padBN);
                    key.SetPublicKey(pubPt);
                }
                padBN.Clear();
            }

            key.SetConversionForm(OpenSSL.Crypto.EC.Point.PointConversionForm.Compressed);
            //byte[] pubBytes = key.GetPublicBytes();
            return(key);
        }
Ejemplo n.º 2
0
        public static OpenSSL.Crypto.EC.Key GenerateKey()
        {
            Program.RandomSeedReg();

            OpenSSL.Crypto.EC.Key key = OpenSSL.Crypto.EC.Key.FromCurveName(OpenSSL.Core.Objects.NID.secp256k1);

            // SetSecretBytes
            {
                OpenSSL.Core.BigNumber padBN = OpenSSL.Core.BigNumber.FromArray(OpenSSL.Core.Random.Bytes(32));
                //byte[] data = new byte[32];
                //for (int i = 0; i < data.Length; i++)
                //    data[i] = 0x3f;
                //OpenSSL.Core.BigNumber padBN = OpenSSL.Core.BigNumber.FromArray(data);

                // RegenerateKey
                {
                    OpenSSL.Crypto.EC.Point pubPt = new OpenSSL.Crypto.EC.Point(key.Group);
                    pubPt.Multiply(padBN, null, null, new OpenSSL.Core.BigNumber.Context());
                    key.SetPrivateKey(padBN);
                    key.SetPublicKey(pubPt);
                }
                padBN.Clear();
            }

            key.SetConversionForm(OpenSSL.Crypto.EC.Point.PointConversionForm.Compressed);
            //byte[] pubBytes = key.GetPublicBytes();
            return key;
        }