Example usage for org.bouncycastle.crypto.params ECDomainParameters ECDomainParameters

List of usage examples for org.bouncycastle.crypto.params ECDomainParameters ECDomainParameters

Introduction

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

Prototype

public ECDomainParameters(ECCurve curve, ECPoint G, BigInteger n, BigInteger h) 

Source Link

Usage

From source file:ACNS.thresholdDSA.Util.java

License:Apache License

public static PublicParameters generateParamsforBitcoin(int k, int kPrime, SecureRandom rand,
        PaillierKey paillierPubKey) {//from   w  w  w . java 2s .co  m

    X9ECParameters params = SECNamedCurves.getByName("secp256k1");
    ECDomainParameters CURVE = new ECDomainParameters(params.getCurve(), params.getG(), params.getN(),
            params.getH());

    int primeCertainty = k;
    BigInteger p;
    BigInteger q;
    BigInteger pPrime;
    BigInteger qPrime;
    BigInteger pPrimeqPrime;
    BigInteger nHat;

    do {
        p = new BigInteger(kPrime / 2, primeCertainty, rand);
    } while (!p.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2)).isProbablePrime(primeCertainty));

    pPrime = p.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2));

    do {
        q = new BigInteger(kPrime / 2, primeCertainty, rand);
    } while (!q.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2)).isProbablePrime(primeCertainty));

    qPrime = q.subtract(BigInteger.ONE).divide(BigInteger.valueOf(2));

    // generate nhat. the product of two safe primes, each of length
    // kPrime/2
    nHat = p.multiply(q);

    BigInteger h2 = randomFromZnStar(nHat, rand);
    pPrimeqPrime = pPrime.multiply(qPrime);

    BigInteger x = randomFromZn(pPrimeqPrime, rand);
    BigInteger h1 = h2.modPow(x, nHat);

    return new PublicParameters(CURVE, nHat, kPrime, h1, h2, paillierPubKey);

}

From source file:co.rsk.peg.BridgeSupportTest.java

License:Open Source License

/**
 * Helper method to test addSignature() with a valid federatorPublicKey parameter and both valid/invalid signatures
 * @param privateKeysToSignWith keys used to sign the tx. Federator key when we want to produce a valid signature, a random key when we want to produce an invalid signature
 * @param numberOfInputsToSign There is just 1 input. 1 when testing the happy case, other values to test attacks/bugs.
 * @param signatureCanonical Signature should be canonical. true when testing the happy case, false to test attacks/bugs.
 * @param signTwice Sign again with the same key
 * @param expectedResult "InvalidParameters", "PartiallySigned" or "FullySigned"
 *///from   w  ww .  java 2s.c om
private void addSignatureFromValidFederator(List<BtcECKey> privateKeysToSignWith, int numberOfInputsToSign,
        boolean signatureCanonical, boolean signTwice, String expectedResult) throws Exception {
    // Federation is the genesis federation ATM
    Federation federation = bridgeConstants.getGenesisFederation();
    Repository repository = createRepositoryImpl(config);

    final Keccak256 keccak256 = PegTestUtils.createHash3();

    Repository track = repository.startTracking();
    BridgeStorageProvider provider = new BridgeStorageProvider(track, PrecompiledContracts.BRIDGE_ADDR,
            config.getBlockchainConfig().getCommonConstants().getBridgeConstants(),
            bridgeStorageConfigurationAtHeightZero);

    BtcTransaction prevTx = new BtcTransaction(btcParams);
    TransactionOutput prevOut = new TransactionOutput(btcParams, prevTx, Coin.FIFTY_COINS,
            federation.getAddress());
    prevTx.addOutput(prevOut);

    BtcTransaction t = new BtcTransaction(btcParams);
    TransactionOutput output = new TransactionOutput(btcParams, t, Coin.COIN,
            new BtcECKey().toAddress(btcParams));
    t.addOutput(output);
    t.addInput(prevOut).setScriptSig(PegTestUtils.createBaseInputScriptThatSpendsFromTheFederation(federation));
    provider.getRskTxsWaitingForSignatures().put(keccak256, t);
    provider.save();
    track.commit();

    track = repository.startTracking();
    List<LogInfo> logs = new ArrayList<>();
    BridgeEventLogger eventLogger = new BridgeEventLoggerImpl(bridgeConstants, logs);
    BridgeSupport bridgeSupport = new BridgeSupport(config, track, eventLogger, contractAddress,
            mock(Block.class));

    Script inputScript = t.getInputs().get(0).getScriptSig();
    List<ScriptChunk> chunks = inputScript.getChunks();
    byte[] program = chunks.get(chunks.size() - 1).data;
    Script redeemScript = new Script(program);
    Sha256Hash sighash = t.hashForSignature(0, redeemScript, BtcTransaction.SigHash.ALL, false);

    BtcECKey.ECDSASignature sig = privateKeysToSignWith.get(0).sign(sighash);
    if (!signatureCanonical) {
        sig = new BtcECKey.ECDSASignature(sig.r, BtcECKey.CURVE.getN().subtract(sig.s));
    }
    byte[] derEncodedSig = sig.encodeToDER();

    List derEncodedSigs = new ArrayList();
    for (int i = 0; i < numberOfInputsToSign; i++) {
        derEncodedSigs.add(derEncodedSig);
    }
    bridgeSupport.addSignature(findPublicKeySignedBy(federation.getPublicKeys(), privateKeysToSignWith.get(0)),
            derEncodedSigs, keccak256.getBytes());
    if (signTwice) {
        // Create another valid signature with the same private key
        ECDSASigner signer = new ECDSASigner();
        X9ECParameters CURVE_PARAMS = CustomNamedCurves.getByName("secp256k1");
        ECDomainParameters CURVE = new ECDomainParameters(CURVE_PARAMS.getCurve(), CURVE_PARAMS.getG(),
                CURVE_PARAMS.getN(), CURVE_PARAMS.getH());
        ECPrivateKeyParameters privKey = new ECPrivateKeyParameters(privateKeysToSignWith.get(0).getPrivKey(),
                CURVE);
        signer.init(true, privKey);
        BigInteger[] components = signer.generateSignature(sighash.getBytes());
        BtcECKey.ECDSASignature sig2 = new BtcECKey.ECDSASignature(components[0], components[1])
                .toCanonicalised();
        bridgeSupport.addSignature(
                findPublicKeySignedBy(federation.getPublicKeys(), privateKeysToSignWith.get(0)),
                Lists.newArrayList(sig2.encodeToDER()), keccak256.getBytes());
    }
    if (privateKeysToSignWith.size() > 1) {
        BtcECKey.ECDSASignature sig2 = privateKeysToSignWith.get(1).sign(sighash);
        byte[] derEncodedSig2 = sig2.encodeToDER();
        List derEncodedSigs2 = new ArrayList();
        for (int i = 0; i < numberOfInputsToSign; i++) {
            derEncodedSigs2.add(derEncodedSig2);
        }
        bridgeSupport.addSignature(
                findPublicKeySignedBy(federation.getPublicKeys(), privateKeysToSignWith.get(1)),
                derEncodedSigs2, keccak256.getBytes());
    }
    bridgeSupport.save();
    track.commit();

    provider = new BridgeStorageProvider(repository, PrecompiledContracts.BRIDGE_ADDR,
            config.getBlockchainConfig().getCommonConstants().getBridgeConstants(),
            bridgeStorageConfigurationAtHeightZero);

    if ("FullySigned".equals(expectedResult)) {
        Assert.assertTrue(provider.getRskTxsWaitingForSignatures().isEmpty());
        Assert.assertThat(logs, is(not(empty())));
        Assert.assertThat(logs, hasSize(3));
        LogInfo releaseTxEvent = logs.get(2);
        Assert.assertThat(releaseTxEvent.getTopics(), hasSize(1));
        Assert.assertThat(releaseTxEvent.getTopics(), hasItem(Bridge.RELEASE_BTC_TOPIC));
        BtcTransaction releaseTx = new BtcTransaction(bridgeConstants.getBtcParams(),
                ((RLPList) RLP.decode2(releaseTxEvent.getData()).get(0)).get(1).getRLPData());
        Script retrievedScriptSig = releaseTx.getInput(0).getScriptSig();
        Assert.assertEquals(4, retrievedScriptSig.getChunks().size());
        Assert.assertEquals(true, retrievedScriptSig.getChunks().get(1).data.length > 0);
        Assert.assertEquals(true, retrievedScriptSig.getChunks().get(2).data.length > 0);
    } else {
        Script retrievedScriptSig = provider.getRskTxsWaitingForSignatures().get(keccak256).getInput(0)
                .getScriptSig();
        Assert.assertEquals(4, retrievedScriptSig.getChunks().size());
        boolean expectSignatureToBePersisted = false; // for "InvalidParameters"
        if ("PartiallySigned".equals(expectedResult)) {
            expectSignatureToBePersisted = true;
        }
        Assert.assertEquals(expectSignatureToBePersisted,
                retrievedScriptSig.getChunks().get(1).data.length > 0);
        Assert.assertEquals(false, retrievedScriptSig.getChunks().get(2).data.length > 0);
    }
}

From source file:com.amazonaws.encryptionsdk.internal.DecryptionHandler.java

License:Open Source License

private PublicKey deserializeTrailingKeyFromEc(final String pubKey) throws GeneralSecurityException {
    final ECNamedCurveParameterSpec ecSpec;

    switch (cryptoAlgo_) {
    case ALG_AES_128_GCM_IV12_TAG16_HKDF_SHA256_ECDSA_P256:
        ecSpec = ECNamedCurveTable.getParameterSpec("secp256r1");
        break;/* w  ww .  j  a  v  a2  s. co  m*/
    case ALG_AES_192_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384:
    case ALG_AES_256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384:
        ecSpec = ECNamedCurveTable.getParameterSpec("secp384r1");
        break;
    default:
        throw new IllegalStateException("Algorithm does not support trailing signature");
    }
    final ECPoint q = ecSpec.getCurve().decodePoint(Base64.decode(pubKey));
    ECPublicKeyParameters keyParams = new ECPublicKeyParameters(q,
            new ECDomainParameters(ecSpec.getCurve(), ecSpec.getG(), ecSpec.getN(), ecSpec.getH()));
    return new BCECPublicKey("ECDSA", keyParams, ecSpec, BouncyCastleProvider.CONFIGURATION);
}

From source file:com.cryptolib.CryptoObject.java

License:Open Source License

/**
* Performs ECDH//from w  w  w . j av a 2  s.c  om
*/
public void createSharedEncKey(ECPublicKey key) throws CryptoSocketException {
    try {
        X9ECParameters ecP = CustomNamedCurves.getByName(curve);
        ECDomainParameters ecdp = new ECDomainParameters(ecP.getCurve(), ecP.getG(), ecP.getN(), ecP.getH());
        ECPublicKeyParameters ecpkp = new ECPublicKeyParameters(key.getQ(), ecdp);
        BCECPrivateKey sk = (BCECPrivateKey) this.encKeypair.getPrivate();
        ECPrivateKeyParameters ecskp = new ECPrivateKeyParameters(sk.getD(), ecdp);
        ECDHCBasicAgreement ba = new ECDHCBasicAgreement();
        ba.init(ecskp);
        byte[] byteSharedSecret = ba.calculateAgreement(ecpkp).toByteArray();
        byte[] byteSharedSecretSecond = new byte[byteSharedSecret.length / 2];
        byte[] byteSharedSecretFirst = new byte[byteSharedSecret.length / 2];
        System.arraycopy(byteSharedSecret, 0, byteSharedSecretSecond, 0, byteSharedSecretSecond.length);
        System.arraycopy(byteSharedSecret, byteSharedSecretSecond.length, byteSharedSecretFirst, 0,
                byteSharedSecretFirst.length);
        this.sharedSecretFirst = new SecretKeySpec(byteSharedSecretFirst, "AES");
        this.sharedSecretSecond = new SecretKeySpec(byteSharedSecretSecond, "AES");
        this.has_symmetric_key = true;
        this.enc = Cipher.getInstance("AES/GCM/NoPadding");
        this.dec = Cipher.getInstance("AES/GCM/NoPadding");
    } catch (IllegalStateException is) {
        throw new CryptoSocketException("unable to create shared encryption key, wrong state!");
    } catch (NoSuchAlgorithmException nsa) {
        throw new CryptoSocketException("Encryption algorithm not found!");
    } catch (NoSuchPaddingException nsp) {
        throw new CryptoSocketException("Invalid padding algorithm!");
    }
}

From source file:com.licel.jcardsim.crypto.ECKeyImpl.java

License:Apache License

/**
 * Get//from  w w w.ja v  a 2  s .  c  o m
 * <code>ECDomainParameters</code>
 *
 * @return parameters for use with BouncyCastle API
 * @see ECDomainParameters
 */
public ECDomainParameters getDomainParameters() {
    if (!isDomainParametersInitialized()) {
        CryptoException.throwIt(CryptoException.UNINITIALIZED_KEY);
    }
    ECCurve curve = null;
    if (fp.isInitialized()) {
        curve = new ECCurve.Fp(fp.getBigInteger(), a.getBigInteger(), b.getBigInteger());
    } else {
        curve = new ECCurve.F2m(size, e1, e2, e3, a.getBigInteger(), b.getBigInteger(), r.getBigInteger(),
                BigInteger.valueOf(k));
    }
    return new ECDomainParameters(curve, curve.decodePoint(g.getBytes(JCSystem.CLEAR_ON_RESET)),
            r.getBigInteger(), BigInteger.valueOf(k));
}

From source file:COSE.ECPrivateKey.java

public ECPrivateKey(OneKey oneKey) throws CoseException, IOException {
    X9ECParameters p = oneKey.GetCurve();
    org.bouncycastle.math.ec.ECPoint pubPoint;
    ECDomainParameters parameters = new ECDomainParameters(p.getCurve(), p.getG(), p.getN(), p.getH());

    if (oneKey.get(KeyKeys.EC2_Y).getType() == CBORType.Boolean) {
        byte[] X = oneKey.get(KeyKeys.EC2_X.AsCBOR()).GetByteString();
        byte[] rgb = new byte[X.length + 1];
        System.arraycopy(X, 0, rgb, 1, X.length);
        rgb[0] = (byte) (2 + (oneKey.get(KeyKeys.EC2_Y).AsBoolean() ? 1 : 0));
        pubPoint = p.getCurve().decodePoint(rgb);
        point = new ECPoint(point.getAffineX(), point.getAffineY());
    } else {//  w  w  w.j  a  v  a 2  s .  c  o  m
        point = new ECPoint(new BigInteger(1, oneKey.get(KeyKeys.EC2_X).GetByteString()),
                new BigInteger(1, oneKey.get(KeyKeys.EC2_Y).GetByteString()));
        pubPoint = p.getCurve().createPoint(new BigInteger(1, oneKey.get(KeyKeys.EC2_X).GetByteString()),
                new BigInteger(1, oneKey.get(KeyKeys.EC2_Y).GetByteString()));
    }

    ECPublicKeyParameters pub = new ECPublicKeyParameters(pubPoint, parameters);
    ECPrivateKeyParameters priv = new ECPrivateKeyParameters(
            new BigInteger(1, oneKey.get(KeyKeys.EC2_D.AsCBOR()).GetByteString()), parameters);

    /*
            switch (AlgorithmID.FromCBOR(oneKey.get(KeyKeys.Algorithm))) {
    case ECDH_ES_HKDF_256:
    case ECDH_ES_HKDF_512:
    case ECDH_SS_HKDF_256:
    case ECDH_SS_HKDF_512:
    case ECDH_ES_HKDF_256_AES_KW_128:
    case ECDH_ES_HKDF_256_AES_KW_192:
    case ECDH_ES_HKDF_256_AES_KW_256:
    case ECDH_SS_HKDF_256_AES_KW_128:
    case ECDH_SS_HKDF_256_AES_KW_192:
    case ECDH_SS_HKDF_256_AES_KW_256:
        algorithm = "ECDH";
        break;
                
    case ECDSA_256:
        algorithm = "SHA256withECDSA";
        break;
                
    case ECDSA_384:
        algorithm = "SHA384withECDSA";
        break;
                
    case ECDSA_512:
        algorithm = "SHA512withECDSA";
        break;
                
    default:
        throw new CoseException("No algorithm specified");
            }
    */
    algorithm = "EC";

    CBORObject curve = oneKey.get(KeyKeys.EC2_Curve);
    int keySize;
    ASN1ObjectIdentifier curveOID;
    if (curve.equals(KeyKeys.EC2_P256)) {
        curveOID = org.bouncycastle.asn1.sec.SECObjectIdentifiers.secp256r1;
        keySize = 256;
    } else if (curve.equals(KeyKeys.EC2_P384)) {
        curveOID = org.bouncycastle.asn1.sec.SECObjectIdentifiers.secp384r1;
        keySize = 384;
    } else if (curve.equals(KeyKeys.EC2_P521)) {
        curveOID = org.bouncycastle.asn1.sec.SECObjectIdentifiers.secp521r1;
        keySize = 521;
    } else {
        throw new CoseException("Unrecognized Curve");
    }

    privateKey = new BigInteger(1, oneKey.get(KeyKeys.EC2_D).GetByteString());

    ECField field = new ECFieldFp(p.getCurve().getField().getCharacteristic());
    EllipticCurve crv = new EllipticCurve(field, p.getCurve().getA().toBigInteger(),
            p.getCurve().getB().toBigInteger());
    ECPoint pt = new ECPoint(p.getG().getRawXCoord().toBigInteger(), p.getG().getRawYCoord().toBigInteger());
    ecParameterSpec = new ECParameterSpec(crv, pt, p.getN(), p.getH().intValue());

    AlgorithmIdentifier alg = new AlgorithmIdentifier(org.bouncycastle.asn1.x9.X9Curve.id_ecPublicKey,
            curveOID);

    org.bouncycastle.asn1.sec.ECPrivateKey asnPrivate = new org.bouncycastle.asn1.sec.ECPrivateKey(keySize,
            privateKey);
    byte[] x = asnPrivate.getEncoded();

    PrivateKeyInfo asnPrivateX = new PrivateKeyInfo(alg, asnPrivate);
    encodedKey = asnPrivateX.getEncoded();
}

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. ja  va  2 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);//w  w w .j a 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:COSE.Recipient.java

private byte[] ECDH_GenerateSecret(OneKey key) throws CoseException {
    OneKey epk;/*w  w  w.  j av a  2  s.c  om*/

    if (senderKey != null) {
        epk = key;
        key = senderKey;
    } else {
        CBORObject cn;
        cn = findAttribute(HeaderKeys.ECDH_SPK);
        if (cn == null) {
            cn = findAttribute(HeaderKeys.ECDH_EPK);
        }
        if (cn == null)
            throw new CoseException("No second party EC key");
        epk = new OneKey(cn);
    }

    if (key.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2)
        throw new CoseException("Not an EC2 Key");
    if (epk.get(KeyKeys.KeyType.AsCBOR()) != KeyKeys.KeyType_EC2)
        throw new CoseException("Not an EC2 Key");
    if (epk.get(KeyKeys.EC2_Curve.AsCBOR()) != key.get(KeyKeys.EC2_Curve.AsCBOR()))
        throw new CoseException("Curves are not the same");

    X9ECParameters p = epk.GetCurve();
    ECDomainParameters parameters = new ECDomainParameters(p.getCurve(), p.getG(), p.getN(), p.getH());

    ECPoint pubPoint;

    CBORObject y = epk.get(KeyKeys.EC2_Y.AsCBOR());
    byte[] x = epk.get(KeyKeys.EC2_X.AsCBOR()).GetByteString();
    if (y.getType() == CBORType.Boolean) {
        byte[] X = epk.get(KeyKeys.EC2_X.AsCBOR()).GetByteString();
        byte[] rgb = new byte[X.length + 1];
        System.arraycopy(X, 0, rgb, 1, X.length);
        rgb[0] = (byte) (2 + (y.AsBoolean() ? 1 : 0));
        pubPoint = p.getCurve().decodePoint(rgb);
    } else {
        pubPoint = p.getCurve().createPoint(new BigInteger(1, x), new BigInteger(1, y.GetByteString()));
    }

    ECPublicKeyParameters pub = new ECPublicKeyParameters(pubPoint, parameters);
    ECPrivateKeyParameters priv = new ECPrivateKeyParameters(
            new BigInteger(1, key.get(KeyKeys.EC2_D.AsCBOR()).GetByteString()), parameters);
    BasicAgreement e1 = new ECDHBasicAgreement();
    e1.init(priv);

    BigInteger k1 = e1.calculateAgreement(pub);
    return BigIntegers.asUnsignedByteArray((p.getCurve().getFieldSize() + 7) / 8, k1);
}

From source file:COSE.Sign1MessageTest.java

@BeforeClass
public static void setUpClass() throws CoseException {

    X9ECParameters p = NISTNamedCurves.getByName("P-256");

    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.jav  a  2 s .  c o  m*/

    AsymmetricCipherKeyPair p1 = pGen.generateKeyPair();

    keyPublic = (ECPublicKeyParameters) p1.getPublic();
    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();

    CBORObject key = CBORObject.NewMap();
    key.Add(KeyKeys.KeyType.AsCBOR(), KeyKeys.KeyType_EC2);
    key.Add(KeyKeys.EC2_Curve.AsCBOR(), KeyKeys.EC2_P256);
    key.Add(KeyKeys.EC2_X.AsCBOR(), rgbX);
    key.Add(KeyKeys.EC2_Y.AsCBOR(), rgbY);
    cnKeyPublic = new OneKey(key);

    key = CBORObject.NewMap();
    key.Add(KeyKeys.KeyType.AsCBOR(), KeyKeys.KeyType_EC2);
    key.Add(KeyKeys.EC2_Curve.AsCBOR(), KeyKeys.EC2_P256);
    key.Add(KeyKeys.EC2_X.AsCBOR(), rgbX);
    key.Add(KeyKeys.EC2_Y.AsCBOR(), rgbY);
    cnKeyPublicCompressed = new OneKey(key);

    key = CBORObject.NewMap();
    key.Add(KeyKeys.KeyType.AsCBOR(), KeyKeys.KeyType_EC2);
    key.Add(KeyKeys.EC2_Curve.AsCBOR(), KeyKeys.EC2_P256);
    key.Add(KeyKeys.EC2_D.AsCBOR(), rgbD);
    cnKeyPrivate = new OneKey(key);
}