List of usage examples for org.bouncycastle.crypto.params ECPrivateKeyParameters getD
public BigInteger getD()
From source file:com.bitsofproof.supernode.api.ECKeyPair.java
License:Apache License
public static ECKeyPair createNew(boolean compressed) { ECKeyPairGenerator generator = new ECKeyPairGenerator(); ECKeyGenerationParameters keygenParams = new ECKeyGenerationParameters(domain, secureRandom); generator.init(keygenParams);//from w w w . ja va 2 s .c om AsymmetricCipherKeyPair keypair = generator.generateKeyPair(); ECPrivateKeyParameters privParams = (ECPrivateKeyParameters) keypair.getPrivate(); ECPublicKeyParameters pubParams = (ECPublicKeyParameters) keypair.getPublic(); ECKeyPair k = new ECKeyPair(); k.priv = privParams.getD(); k.compressed = compressed; if (compressed) { ECPoint q = pubParams.getQ(); k.pub = new ECPoint.Fp(domain.getCurve(), q.getX(), q.getY(), true).getEncoded(); } else { k.pub = pubParams.getQ().getEncoded(); } return k; }
From source file:com.google.bitcoin.core.ECKey.java
License:Apache License
/** * Generates an entirely new keypair. Point compression is used so the resulting public key will be 33 bytes * (32 for the co-ordinate and 1 byte to represent the y bit). *///w ww .j a v a2 s . c o m public ECKey() { ECKeyPairGenerator generator = new ECKeyPairGenerator(); ECKeyGenerationParameters keygenParams = new ECKeyGenerationParameters(CURVE, secureRandom); generator.init(keygenParams); AsymmetricCipherKeyPair keypair = generator.generateKeyPair(); ECPrivateKeyParameters privParams = (ECPrivateKeyParameters) keypair.getPrivate(); ECPublicKeyParameters pubParams = (ECPublicKeyParameters) keypair.getPublic(); priv = privParams.getD(); // Unfortunately Bouncy Castle does not let us explicitly change a point to be compressed, even though it // could easily do so. We must re-build it here so the ECPoints withCompression flag can be set to true. ECPoint uncompressed = pubParams.getQ(); ECPoint compressed = compressPoint(uncompressed); pub = compressed.getEncoded(); creationTimeSeconds = Utils.currentTimeMillis() / 1000; }
From source file:COSE.OneKey.java
static private OneKey generateECDSAKey(String curveName, CBORObject curve) { X9ECParameters p = NISTNamedCurves.getByName(curveName); ECDomainParameters parameters = new ECDomainParameters(p.getCurve(), p.getG(), p.getN(), p.getH()); ECKeyPairGenerator pGen = new ECKeyPairGenerator(); ECKeyGenerationParameters genParam = new ECKeyGenerationParameters(parameters, null); pGen.init(genParam);//from w w w . j a v a2 s . c o m AsymmetricCipherKeyPair p1 = pGen.generateKeyPair(); ECPublicKeyParameters keyPublic = (ECPublicKeyParameters) p1.getPublic(); ECPrivateKeyParameters keyPrivate = (ECPrivateKeyParameters) p1.getPrivate(); byte[] rgbX = keyPublic.getQ().normalize().getXCoord().getEncoded(); byte[] rgbY = keyPublic.getQ().normalize().getYCoord().getEncoded(); boolean signY = true; byte[] rgbD = keyPrivate.getD().toByteArray(); OneKey key = new OneKey(); key.add(KeyKeys.KeyType, KeyKeys.KeyType_EC2); key.add(KeyKeys.EC2_Curve, curve); key.add(KeyKeys.EC2_X, CBORObject.FromObject(rgbX)); key.add(KeyKeys.EC2_Y, CBORObject.FromObject(rgbY)); key.add(KeyKeys.EC2_D, CBORObject.FromObject(rgbD)); return key; }
From source file:COSE.Recipient.java
private void ECDH_GenerateEphemeral() throws CoseException { X9ECParameters p = privateKey.GetCurve(); ECDomainParameters parameters = new ECDomainParameters(p.getCurve(), p.getG(), p.getN(), p.getH()); ECKeyPairGenerator pGen = new ECKeyPairGenerator(); ECKeyGenerationParameters genParam = new ECKeyGenerationParameters(parameters, null); pGen.init(genParam);//from ww w .ja v a 2 s .c o m AsymmetricCipherKeyPair p1 = pGen.generateKeyPair(); CBORObject epk = CBORObject.NewMap(); epk.Add(KeyKeys.KeyType.AsCBOR(), KeyKeys.KeyType_EC2); epk.Add(KeyKeys.EC2_Curve.AsCBOR(), privateKey.get(KeyKeys.EC2_Curve.AsCBOR())); ECPublicKeyParameters priv = (ECPublicKeyParameters) p1.getPublic(); byte[] rgbEncoded = priv.getQ().normalize().getEncoded(true); byte[] X = new byte[rgbEncoded.length - 1]; System.arraycopy(rgbEncoded, 1, X, 0, X.length); epk.Add(KeyKeys.EC2_X.AsCBOR(), CBORObject.FromObject(X)); epk.Add(KeyKeys.EC2_Y.AsCBOR(), CBORObject.FromObject((rgbEncoded[0] & 1) == 1)); addAttribute(HeaderKeys.ECDH_EPK, epk, Attribute.UNPROTECTED); OneKey secretKey = new OneKey(); secretKey.add(KeyKeys.KeyType, KeyKeys.KeyType_EC2); secretKey.add(KeyKeys.EC2_Curve, privateKey.get(KeyKeys.EC2_Curve.AsCBOR())); secretKey.add(KeyKeys.EC2_X, CBORObject.FromObject(X)); secretKey.add(KeyKeys.EC2_Y, CBORObject.FromObject((rgbEncoded[0] & 1) == 1)); ECPrivateKeyParameters priv1 = (ECPrivateKeyParameters) p1.getPrivate(); secretKey.add(KeyKeys.EC2_D, CBORObject.FromObject(BigIntegers.asUnsignedByteArray(priv1.getD()))); senderKey = secretKey; }
From source file:dorkbox.util.crypto.CryptoECC.java
License:Apache License
public static boolean compare(ECPrivateKeyParameters privateA, ECPrivateKeyParameters privateB) { ECDomainParameters parametersA = privateA.getParameters(); ECDomainParameters parametersB = privateB.getParameters(); // is it the same curve? boolean equals = parametersA.getCurve().equals(parametersB.getCurve()); if (!equals) { return false; }//from ww w. j a v a 2 s. co m equals = parametersA.getG().equals(parametersB.getG()); if (!equals) { return false; } equals = parametersA.getH().equals(parametersB.getH()); if (!equals) { return false; } equals = parametersA.getN().equals(parametersB.getN()); if (!equals) { return false; } equals = privateA.getD().equals(privateB.getD()); return equals; }
From source file:dorkbox.util.serialization.EccPrivateKeySerializer.java
License:Apache License
public static void write(Output output, ECPrivateKeyParameters key) throws KryoException { byte[] bytes; int length;/*from w w w .j av a 2 s .co m*/ ECDomainParameters parameters = key.getParameters(); ECCurve curve = parameters.getCurve(); EccPrivateKeySerializer.serializeCurve(output, curve); ///////////// BigInteger n = parameters.getN(); ECPoint g = parameters.getG(); ///////////// bytes = n.toByteArray(); length = bytes.length; output.writeInt(length, true); output.writeBytes(bytes, 0, length); serializeECPoint(g, output); ///////////// bytes = key.getD().toByteArray(); length = bytes.length; output.writeInt(length, true); output.writeBytes(bytes, 0, length); }
From source file:eu.betaas.taas.securitymanager.common.mqv.ECMQVUtils.java
License:Apache License
/** * A method to compute the implicit signature, s (BC style), defined as: * s = (ephPriv + ephPub_*statPriv)mod(n) * @param ephPub: the ephemeral public key * @param ephPriv: the ephemeral private key * @param statPriv: the static private key * @return implicit signature//from w ww . j a v a 2s .c o m */ public static BigInteger computeImplicitSig(ECPublicKeyParameters ephPub, ECPrivateKeyParameters ephPriv, ECPrivateKeyParameters statPriv) { BigInteger n = ephPub.getParameters().getN(); BigInteger r_ = ephPriv.getD(); BigInteger w_ = statPriv.getD(); BigInteger Rx = ephPub.getQ().normalize().getXCoord().toBigInteger(); BigInteger Rx_ = calculateRx_(Rx, n); BigInteger implS = r_.add(Rx_.multiply(w_)).mod(n); return implS; }
From source file:org.cryptoworkshop.ximix.node.crypto.key.ECNewDKGGenerator.java
License:Apache License
public ECCommittedSecretShareMessage[] generateThresholdKey(String keyID, ECDomainParameters domainParameters, int numberOfPeers, int threshold, ECPoint h) { // TODO: should have a source of randomness. AsymmetricCipherKeyPair keyPair = keyManager.generateKeyPair(keyID, algorithm, numberOfPeers, domainParameters, h);//from w ww . ja v a 2s. c o m ECPrivateKeyParameters privKey = (ECPrivateKeyParameters) keyPair.getPrivate(); ECNewDKGSecretSplitter secretSplitter = new ECNewDKGSecretSplitter(numberOfPeers, threshold, h, privKey.getParameters(), new SecureRandom()); ECCommittedSplitSecret splitSecret = secretSplitter.split(privKey.getD()); ECCommittedSecretShare[] shares = splitSecret.getCommittedShares(); ECCommittedSecretShareMessage[] messages = new ECCommittedSecretShareMessage[shares.length]; BigInteger[] aCoefficients = splitSecret.getCoefficients(); ECPoint[] qCommitments = new ECPoint[aCoefficients.length]; for (int i = 0; i != qCommitments.length; i++) { qCommitments[i] = privKey.getParameters().getG().multiply(aCoefficients[i]); } for (int i = 0; i != shares.length; i++) { messages[i] = new ECCommittedSecretShareMessage(i, shares[i].getValue(), shares[i].getWitness(), shares[i].getCommitmentFactors(), ((ECPublicKeyParameters) keyPair.getPublic()).getQ(), qCommitments); } return messages; }
From source file:org.cryptoworkshop.ximix.node.crypto.test.ECKeyManagerTest.java
License:Apache License
@Test public void testFailedCommitment() throws Exception { ECKeyManager keyManager = new ECKeyManager(new TestUtils.BasicNodeContext("Test")); X9ECParameters ecParameters = CustomNamedCurves.getByName("secp256r1"); ECDomainParameters domainParameters = new ECDomainParameters(ecParameters.getCurve(), ecParameters.getG(), ecParameters.getN(), ecParameters.getH()); ECPoint h = domainParameters.getG().multiply(BigInteger.valueOf(1000001)); AsymmetricCipherKeyPair kp = keyManager.generateKeyPair("Test1", Algorithm.EC_ELGAMAL, 1, domainParameters, h);// ww w. j av a 2 s . c o m ECPrivateKeyParameters privKey = (ECPrivateKeyParameters) kp.getPrivate(); ECPublicKeyParameters pubKey = (ECPublicKeyParameters) kp.getPublic(); ECPoint commitment = pubKey.getParameters().getG().multiply(privKey.getD()).add(h); try { keyManager.buildSharedKey("Test1", new ECCommittedSecretShareMessage(0, privKey.getD(), BigInteger.TEN, new ECPoint[] { commitment }, pubKey.getQ(), new ECPoint[] { pubKey.getQ() })); Assert.fail("bad commitment not detected"); } catch (IllegalStateException e) { Assert.assertEquals("Commitment for Test1 failed!", e.getMessage()); } }
From source file:org.cryptoworkshop.ximix.node.crypto.test.ECKeyManagerTest.java
License:Apache License
@Test public void testSingleKeyStoreAndLoad() throws Exception { ECKeyManager keyManager = new ECKeyManager(new TestUtils.BasicNodeContext("Test")); X9ECParameters ecParameters = CustomNamedCurves.getByName("secp256r1"); ECDomainParameters domainParameters = new ECDomainParameters(ecParameters.getCurve(), ecParameters.getG(), ecParameters.getN(), ecParameters.getH()); ECPoint h = domainParameters.getG().multiply(BigInteger.valueOf(1000001)); AsymmetricCipherKeyPair kp = keyManager.generateKeyPair("Test1", Algorithm.EC_ELGAMAL, 1, domainParameters, h);/*from w w w .j a va 2 s . co m*/ ECPrivateKeyParameters privKey = (ECPrivateKeyParameters) kp.getPrivate(); ECPublicKeyParameters pubKey = (ECPublicKeyParameters) kp.getPublic(); ECPoint commitment = pubKey.getParameters().getG().multiply(privKey.getD()).add(h); keyManager.buildSharedKey("Test1", new ECCommittedSecretShareMessage(0, privKey.getD(), BigInteger.ONE, new ECPoint[] { commitment }, pubKey.getQ(), new ECPoint[] { pubKey.getQ() })); keyManager.fetchPublicKey("Test1"); // make sure we've synced up byte[] p12enc = keyManager.getEncoded(passwd); KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC"); keyStore.load(new ByteArrayInputStream(p12enc), passwd); Assert.assertEquals(1, keyStore.size()); Assert.assertTrue(keyStore.containsAlias("Test1")); ECKeyManager rebuiltKeyManager = new ECKeyManager(new TestUtils.BasicNodeContext("Test")); rebuiltKeyManager.load(passwd, p12enc); Assert.assertFalse(keyManager.isSigningKey("Test1")); Assert.assertFalse(rebuiltKeyManager.isSigningKey("Test1")); Assert.assertEquals(SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(kp.getPublic()), keyManager.fetchPublicKey("Test1")); Assert.assertEquals(((ECPrivateKeyParameters) kp.getPrivate()).getD(), keyManager.getPartialPrivateKey("Test1")); Assert.assertEquals(keyManager.fetchPublicKey("Test1"), rebuiltKeyManager.fetchPublicKey("Test1")); Assert.assertEquals(keyManager.getPartialPrivateKey("Test1"), rebuiltKeyManager.getPartialPrivateKey("Test1")); }