public void SetUpSimpleCurve() { OpenECCSimpleCurve = new OpenECC.WeierstrassCurve(new System.Numerics.BigInteger(4), new System.Numerics.BigInteger(20), new System.Numerics.BigInteger(29)); OpenECCSimplePoint1 = new OpenECC.WeierstrassCurvePoint(new System.Numerics.BigInteger(5), new System.Numerics.BigInteger(22), OpenECCSimpleCurve); OpenECCSimplePoint2 = new OpenECC.WeierstrassCurvePoint(new System.Numerics.BigInteger(16), new System.Numerics.BigInteger(27), OpenECCSimpleCurve); OpenECCSimplePoint3 = new OpenECC.WeierstrassCurvePoint(new System.Numerics.BigInteger(13), new System.Numerics.BigInteger(6), OpenECCSimpleCurve); OpenECCSimplePoint4 = new OpenECC.WeierstrassCurvePoint(new System.Numerics.BigInteger(14), new System.Numerics.BigInteger(6), OpenECCSimpleCurve); BCSimpleCurve = new Org.BouncyCastle.Math.EC.FpCurve(new Org.BouncyCastle.Math.BigInteger("29"), new Org.BouncyCastle.Math.BigInteger("4"), new Org.BouncyCastle.Math.BigInteger("20")); BCSimplePoint1 = BCSimpleCurve.CreatePoint(new Org.BouncyCastle.Math.BigInteger("5"), new Org.BouncyCastle.Math.BigInteger("22"), false); BCSimplePoint2 = BCSimpleCurve.CreatePoint(new Org.BouncyCastle.Math.BigInteger("16"), new Org.BouncyCastle.Math.BigInteger("27"), false); BCSimplePoint3 = BCSimpleCurve.CreatePoint(new Org.BouncyCastle.Math.BigInteger("13"), new Org.BouncyCastle.Math.BigInteger("6"), false); BCSimplePoint4 = BCSimpleCurve.CreatePoint(new Org.BouncyCastle.Math.BigInteger("14"), new Org.BouncyCastle.Math.BigInteger("6"), false); }
// https://stackoverflow.com/questions/17439732/recreating-keys-ecpublickeyparameters-in-c-sharp-with-bouncycastle // TODO: find curve name... private static Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters CreateEcPublicKeyParameters( Org.BouncyCastle.Math.BigInteger xx , Org.BouncyCastle.Math.BigInteger yy) { // Org.BouncyCastle.Math.EC.ECPoint q = new Org.BouncyCastle.Math.EC.ECPoint(x, y); // Org.BouncyCastle.Crypto.Tls.NamedCurve.secp224k1 // DefineCurveAlias("P-256", SecObjectIdentifiers.SecP256r1); // Alg 13 // DefineCurveAlias("P-384", SecObjectIdentifiers.SecP384r1); // Alg 14 // DefineCurveAlias("P-521", SecObjectIdentifiers.SecP521r1); string curveName = "P-521"; Org.BouncyCastle.Asn1.X9.X9ECParameters ecP = Org.BouncyCastle.Asn1.Nist.NistNamedCurves.GetByName(curveName); Org.BouncyCastle.Math.EC.FpCurve c = (Org.BouncyCastle.Math.EC.FpCurve)ecP.Curve; Org.BouncyCastle.Math.EC.ECFieldElement x = c.FromBigInteger(xx); Org.BouncyCastle.Math.EC.ECFieldElement y = c.FromBigInteger(yy); Org.BouncyCastle.Math.EC.ECPoint q = new Org.BouncyCastle.Math.EC.FpPoint(c, x, y); Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters publicParams = null; // Org.BouncyCastle.Crypto.Parameters.ECKeyParameters publicParams = new Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters(q, domain); // Org.BouncyCastle.Crypto.AsymmetricKeyParameter publicParams = new Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters(q, domain); // Org.BouncyCastle.Crypto.ICipherParameters publicParams = new Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters(q, domain); // Org.BouncyCastle.Crypto.Digests.GeneralDigest. // Org.BouncyCastle.Crypto.Signers.GenericSigner // Org.BouncyCastle.Crypto.Generators.ECKeyPairGenerator // Org.BouncyCastle.Security.SignerUtilities.GetSigner("SHA-384withRSA"); // Org.BouncyCastle.Security.DigestUtilities.GetDigest(""); // Org.BouncyCastle.Security.CipherUtilities.GetCipher(""); // Org.BouncyCastle.Security.GeneratorUtilities.GetKeyGenerator(""); // Org.BouncyCastle.Security.WrapperUtilities.GetAlgorithmName // Org.BouncyCastle.Security.MacUtilities.CalculateMac("", null, System.Text.Encoding.UTF8.GetBytes("HashThis")); // Org.BouncyCastle.Security.ParameterUtilities.CreateKeyParameter("name", new byte[] { }); // Org.BouncyCastle.Security.ParameterUtilities.GenerateParameters("name", new Org.BouncyCastle.Security.SecureRandom()); // Org.BouncyCastle.Security.PublicKeyFactory.CreateKey() // Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters oara = new Org.BouncyCastle.Crypto.Parameters.ECPublicKeyParameters("ECDH", q, Org.BouncyCastle.Asn1.Sec.SecObjectIdentifiers.SecP521r1); return(publicParams); }