Example usage for org.bouncycastle.crypto.params ECPrivateKeyParameters getD

List of usage examples for org.bouncycastle.crypto.params ECPrivateKeyParameters getD

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.params ECPrivateKeyParameters getD.

Prototype

public BigInteger getD() 

Source Link

Usage

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"));
}