Me gustaría usar Bouncy Castle para generar el par de llaves para usar con todas las *variantes de monedas.
¿Es esta la implementación correcta para obtener la curva ECC correcta que usan las * variantes de monedas?
Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair GenerateKeys(int keySize)
{
var gen = new Org.BouncyCastle.Crypto.Generators.ECKeyPairGenerator();
var secureRandom = new Org.BouncyCastle.Security.SecureRandom();
var keyGenParam = new Org.BouncyCastle.Crypto.KeyGenerationParameters(secureRandom, keySize);
gen.Init(keyGenParam);
return gen.GenerateKeyPair();
}
El siguiente extracto debería responder a su pregunta.
clase pública ECKeyPair implementa clave { privado estático final SecureRandom secureRandom = nuevo SecureRandom (); curva privada estática final X9ECParameters = SECNamedCurves.getByName ("secp256k1"); dominio ECDomainParameters final estático privado = nuevo ECDomainParameters (curve.getCurve (), curve.getG (), curve.getN (), curve.getH ()); privado BigInteger priv; byte privado[] pub; booleano privado comprimido; public static ECKeyPair createNew (booleano comprimido) { ECKeyPairGenerator generador = nuevo ECKeyPairGenerator (); ECKeyGenerationParameters keygenParams = nuevos ECKeyGenerationParameters (dominio, seguroRandom); generador.init (keygenParams); par de claves AsymmetricCipherKeyPair = generator.generateKeyPair (); ECPrivateKeyParameters privParams = (ECPrivateKeyParameters) keypair.getPrivate (); ECPublicKeyParameters pubParams = (ECPublicKeyParameters) keypair.getPublic (); ECKeyPair k = nuevo ECKeyPair (); k.priv = privParams.getD (); k.comprimido = comprimido; si (comprimido) { ECPoint q = pubParams.getQ (); k.pub = new ECPoint.Fp (dominio.getCurve (), q.getX (), q.getY (), true).getEncoded (); } más { k.pub = pubParams.getQ ().getEncoded (); } devolver k; } }
Consulte https://github.com/bitsofproof/supernode para obtener más detalles.
var curve = ECNamedCurveTable.GetByName("secp256k1");
var domainParams = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed());
var secureRandom = new SecureRandom();
var keyParams = new ECKeyGenerationParameters(domainParams, secureRandom);
var generator = new ECKeyPairGenerator("ECDSA");
generator.Init(keyParams);
var keyPair = generator.GenerateKeyPair();
ns.privateKey = keyPair.Private as ECPrivateKeyParameters;
ns.publicKey = keyPair.Public as ECPublicKeyParameters;
Nick ODell
fabricante de cosas7
Nick ODell
fabricante de cosas7
tocar