Example usage for org.bouncycastle.jcajce.provider.asymmetric.ec BCECPrivateKey BCECPrivateKey

List of usage examples for org.bouncycastle.jcajce.provider.asymmetric.ec BCECPrivateKey BCECPrivateKey

Introduction

In this page you can find the example usage for org.bouncycastle.jcajce.provider.asymmetric.ec BCECPrivateKey BCECPrivateKey.

Prototype

public BCECPrivateKey(String algorithm, ECPrivateKeyParameters params, BCECPublicKey pubKey,
            org.bouncycastle.jce.spec.ECParameterSpec spec, ProviderConfiguration configuration) 

Source Link

Usage

From source file:dorkbox.util.crypto.EccTest.java

License:Apache License

@Test
public void EccJceSerialization() throws IOException {
    AsymmetricCipherKeyPair generateKeyPair = CryptoECC.generateKeyPair(CryptoECC.default_curve,
            new SecureRandom());
    ECPrivateKeyParameters privateKey = (ECPrivateKeyParameters) generateKeyPair.getPrivate();
    ECPublicKeyParameters publicKey = (ECPublicKeyParameters) generateKeyPair.getPublic();

    BCECPublicKey bcecPublicKey = new BCECPublicKey("EC", publicKey, (ECParameterSpec) null,
            BouncyCastleProvider.CONFIGURATION);
    byte[] publicBytes = bcecPublicKey.getEncoded();

    // relies on the BC public key.
    BCECPrivateKey bcecPrivateKey = new BCECPrivateKey("EC", privateKey, bcecPublicKey, (ECParameterSpec) null,
            BouncyCastleProvider.CONFIGURATION);
    byte[] privateBytes = bcecPrivateKey.getEncoded();

    ECPublicKeyParameters publicKey2 = (ECPublicKeyParameters) PublicKeyFactory.createKey(publicBytes);
    ECPrivateKeyParameters privateKey2 = (ECPrivateKeyParameters) PrivateKeyFactory.createKey(privateBytes);

    // test via signing
    byte[] bytes = "hello, my name is inigo montoya".getBytes();

    BigInteger[] signature = CryptoECC.generateSignature("SHA384", privateKey,
            new SecureRandom(entropySeed.getBytes()), bytes);

    boolean verify1 = CryptoECC.verifySignature("SHA384", publicKey, bytes, signature);

    if (!verify1) {
        fail("failed signature verification");
    }//from w w w  . j  a v a  2s .c  o  m

    boolean verify2 = CryptoECC.verifySignature("SHA384", publicKey2, bytes, signature);

    if (!verify2) {
        fail("failed signature verification");
    }

    // now reverse who signs what.
    BigInteger[] signatureB = CryptoECC.generateSignature("SHA384", privateKey2,
            new SecureRandom(entropySeed.getBytes()), bytes);

    boolean verifyB1 = CryptoECC.verifySignature("SHA384", publicKey, bytes, signatureB);

    if (!verifyB1) {
        fail("failed signature verification");
    }

    boolean verifyB2 = CryptoECC.verifySignature("SHA384", publicKey2, bytes, signatureB);

    if (!verifyB2) {
        fail("failed signature verification");
    }
}