Example usage for org.bouncycastle.crypto.digests SHA256Digest update

List of usage examples for org.bouncycastle.crypto.digests SHA256Digest update

Introduction

In this page you can find the example usage for org.bouncycastle.crypto.digests SHA256Digest update.

Prototype

public void update(byte[] in, int inOff, int len) 

Source Link

Usage

From source file:org.cryptoworkshop.ximix.demo.client.Main.java

License:Apache License

public static void main(String[] args) throws Exception {
    XimixRegistrar registrar = XimixRegistrarFactory.createServicesRegistrar(new File(args[0]),
            new EventNotifier() {
                @Override/*from w  w w . j  av a 2 s  . c o m*/
                public void notify(Level level, Throwable throwable) {
                    System.err.print(level + " " + throwable.getMessage());
                    throwable.printStackTrace(System.err);
                }

                @Override
                public void notify(Level level, Object detail) {
                    System.err.println(level + " " + detail.toString());
                }

                @Override
                public void notify(Level level, Object detail, Throwable throwable) {
                    System.err.println(level + " " + detail.toString());
                    throwable.printStackTrace(System.err);
                }
            });

    KeyService keyFetcher = registrar.connect(KeyService.class);
    //UploadService client = registrar.connect(UploadService.class);
    SigningService signingService = registrar.connect(SigningService.class);

    byte[] encPubKey = keyFetcher.fetchPublicKey("ECENCKEY");

    ECPublicKeyParameters pubKey = (ECPublicKeyParameters) PublicKeyFactory.createKey(encPubKey);

    ECElGamalEncryptor encryptor = new ECElGamalEncryptor();

    encryptor.init(pubKey);

    ECPoint candidate1 = generatePoint(pubKey.getParameters(), new SecureRandom());

    ECPoint candidate2 = generatePoint(pubKey.getParameters(), new SecureRandom());

    //
    // encrypt two candidate numbers
    //
    ECPair encCandidate1 = encryptor.encrypt(candidate1);
    ECPair encCandidate2 = encryptor.encrypt(candidate2);

    PairSequence ballot = new PairSequence(encCandidate1, encCandidate2);

    // client.uploadMessage("FRED", ballot.getEncoded());

    SHA256Digest sha256 = new SHA256Digest();

    byte[] message = ballot.getEncoded();
    byte[] hash = new byte[sha256.getDigestSize()];

    sha256.update(message, 0, message.length);

    sha256.doFinal(hash, 0);

    //
    // ECDSA
    //
    SignatureGenerationOptions sigGenOptions = new SignatureGenerationOptions.Builder(Algorithm.ECDSA)
            .withThreshold(2).withNodes("A", "B", "C", "D").build();

    byte[] dsaSig = signingService.generateSignature("ECSIGKEY", sigGenOptions, hash);

    //
    // check the signature locally.
    //
    ECDSASigner signer = new ECDSASigner();

    ECPublicKeyParameters sigPubKey = (ECPublicKeyParameters) PublicKeyFactory
            .createKey(signingService.fetchPublicKey("ECSIGKEY"));

    signer.init(false, sigPubKey);

    BigInteger[] rs = decodeSig(dsaSig);

    if (signer.verifySignature(hash, rs[0], rs[1])) {
        System.out.println("sig verified!");
    } else {
        System.out.println("sig failed...");
    }

    SignatureGenerationOptions blsSigGenOptions = new SignatureGenerationOptions.Builder(Algorithm.BLS)
            .withThreshold(3).withNodes("B", "C", "D").build();

    byte[] blsSig = signingService.generateSignature("BLSSIGKEY", blsSigGenOptions, hash);

    //
    // check the signature locally.
    //
    BLS01Signer blsSigner = new BLS01Signer(sha256);

    BLS01PublicKeyParameters blsPubKey = BLSPublicKeyFactory
            .createKey(signingService.fetchPublicKey("BLSSIGKEY"));

    blsSigner.init(false, blsPubKey);

    blsSigner.update(message, 0, message.length);

    if (blsSigner.verifySignature(blsSig)) {
        System.out.println("sig verified!");
    } else {
        System.out.println("sig failed...");
    }

    keyFetcher.shutdown();
    signingService.shutdown();
    registrar.shutdown();
}

From source file:org.cryptoworkshop.ximix.test.tests.BLSProcessingTest.java

License:Apache License

@Test
public void testBLSSigning() throws Exception {

    SquelchingThrowableHandler handler = new SquelchingThrowableHandler();

    ///*from  w  w w .ja  va  2  s.  co m*/
    // Squelch out socket exceptions emitted by close of connections below.
    //
    handler.squelchType(SocketException.class);

    XimixNode nodeOne = getXimixNode("/conf/mixnet.xml", "/conf/node1.xml", handler);
    NodeTestUtil.launch(nodeOne);

    XimixNode nodeTwo = getXimixNode("/conf/mixnet.xml", "/conf/node2.xml", handler);
    NodeTestUtil.launch(nodeTwo);

    XimixNode nodeThree = getXimixNode("/conf/mixnet.xml", "/conf/node3.xml", handler);
    NodeTestUtil.launch(nodeThree);

    XimixNode nodeFour = getXimixNode("/conf/mixnet.xml", "/conf/node4.xml", handler);
    NodeTestUtil.launch(nodeFour);

    XimixNode nodeFive = getXimixNode("/conf/mixnet.xml", "/conf/node5.xml", handler);
    NodeTestUtil.launch(nodeFive);

    XimixRegistrar registrar = XimixRegistrarFactory
            .createAdminServiceRegistrar(ResourceAnchor.load("/conf/mixnet.xml"), new TestNotifier());

    KeyGenerationService keyGenerationService = registrar.connect(KeyGenerationService.class);

    KeyGenerationOptions keyGenOptions = new KeyGenerationOptions.Builder(Algorithm.BLS, "secp256r1")
            .withThreshold(3).withNodes("A", "B", "C", "D").build();

    BLS01PublicKeyParameters sigPubKey = BLSPublicKeyFactory
            .createKey(keyGenerationService.generatePublicKey("BLSKEY", keyGenOptions));

    SigningService signingService = registrar.connect(SigningService.class);

    SHA256Digest sha256 = new SHA256Digest();

    byte[] message = "hello world!".getBytes();
    byte[] hash = new byte[sha256.getDigestSize()];

    sha256.update(message, 0, message.length);

    sha256.doFinal(hash, 0);

    SignatureGenerationOptions sigGenOptions = new SignatureGenerationOptions.Builder(Algorithm.BLS)
            .withThreshold(3).withNodes("A", "B", "C", "D").build();

    byte[] blsSig = signingService.generateSignature("BLSKEY", sigGenOptions, hash);

    //
    // check the signature locally.
    //
    BLS01Signer signer = new BLS01Signer(sha256);

    signer.init(false, sigPubKey);

    signer.update(message, 0, message.length);

    Assert.assertTrue(signer.verifySignature(blsSig));

    //
    // Shutdown nodes and close services.
    //
    keyGenerationService.shutdown();
    signingService.shutdown();

    NodeTestUtil.shutdownNodes();
}

From source file:org.cryptoworkshop.ximix.test.tests.BLSProcessingTest.java

License:Apache License

private void doMixedMissingTest(SigningService signingService, final BLS01PublicKeyParameters sigPubKey,
        String[] sigNodes) throws Exception {
    SHA256Digest sha256 = new SHA256Digest();

    byte[] message = "hello world!".getBytes();
    byte[] hash = new byte[sha256.getDigestSize()];

    sha256.update(message, 0, message.length);

    sha256.doFinal(hash, 0);/* www.  j a  v  a 2 s .c  o  m*/

    SignatureGenerationOptions sigGenOptions = new SignatureGenerationOptions.Builder(Algorithm.BLS)
            .withThreshold(2).withNodes(sigNodes).build();

    byte[] blsSig = signingService.generateSignature("BLSKEY", sigGenOptions, hash);

    //
    // check the signature locally.
    //
    BLS01Signer signer = new BLS01Signer(sha256);

    signer.init(false, sigPubKey);

    signer.update(message, 0, message.length);

    Assert.assertTrue(signer.verifySignature(blsSig));
}

From source file:org.cryptoworkshop.ximix.test.tests.ECDSAProcessingTest.java

License:Apache License

@Test
public void testECDSASigning() throws Exception {

    SquelchingThrowableHandler handler = new SquelchingThrowableHandler();

    ///*  www. j  a v a2  s  .  c  om*/
    // Squelch out socket exceptions emitted by close of connections below.
    //
    handler.squelchType(SocketException.class);

    XimixNode nodeOne = getXimixNode("/conf/mixnet.xml", "/conf/node1.xml", handler);
    NodeTestUtil.launch(nodeOne);

    XimixNode nodeTwo = getXimixNode("/conf/mixnet.xml", "/conf/node2.xml", handler);
    NodeTestUtil.launch(nodeTwo);

    XimixNode nodeThree = getXimixNode("/conf/mixnet.xml", "/conf/node3.xml", handler);
    NodeTestUtil.launch(nodeThree);

    XimixNode nodeFour = getXimixNode("/conf/mixnet.xml", "/conf/node4.xml", handler);
    NodeTestUtil.launch(nodeFour);

    XimixNode nodeFive = getXimixNode("/conf/mixnet.xml", "/conf/node5.xml", handler);
    NodeTestUtil.launch(nodeFive);

    XimixRegistrar registrar = XimixRegistrarFactory
            .createAdminServiceRegistrar(ResourceAnchor.load("/conf/mixnet.xml"), new TestNotifier());

    KeyGenerationService keyGenerationService = registrar.connect(KeyGenerationService.class);

    KeyGenerationOptions keyGenOptions = new KeyGenerationOptions.Builder(Algorithm.ECDSA, "secp256r1")
            .withThreshold(2).withNodes("A", "B", "C", "D").build();

    ECPublicKeyParameters sigPubKey = (ECPublicKeyParameters) PublicKeyFactory
            .createKey(keyGenerationService.generatePublicKey("ECKEY", keyGenOptions));

    SigningService signingService = registrar.connect(SigningService.class);

    SHA256Digest sha256 = new SHA256Digest();

    byte[] message = "hello world!".getBytes();
    byte[] hash = new byte[sha256.getDigestSize()];

    sha256.update(message, 0, message.length);

    sha256.doFinal(hash, 0);

    SignatureGenerationOptions sigGenOptions = new SignatureGenerationOptions.Builder(Algorithm.ECDSA)
            .withThreshold(2).withNodes("A", "B", "C", "D").build();

    byte[] dsaSig = signingService.generateSignature("ECKEY", sigGenOptions, hash);

    //
    // check the signature locally.
    //
    ECDSASigner signer = new ECDSASigner();

    signer.init(false, sigPubKey);

    BigInteger[] rs = decodeSig(dsaSig);

    Assert.assertTrue(signer.verifySignature(hash, rs[0], rs[1]));

    //
    // Shutdown nodes and close services.
    //
    NodeTestUtil.shutdownNodes();
    keyGenerationService.shutdown();
    signingService.shutdown();
}

From source file:org.cryptoworkshop.ximix.test.tests.ECDSAProcessingTest.java

License:Apache License

private void doMixedMissingTest(SigningService signingService, final ECPublicKeyParameters sigPubKey,
        String[] sigNodes) throws Exception {
    SHA256Digest sha256 = new SHA256Digest();

    byte[] message = "hello world!".getBytes();
    byte[] hash = new byte[sha256.getDigestSize()];

    sha256.update(message, 0, message.length);

    sha256.doFinal(hash, 0);/* www  .  ja v a2s  .c  o m*/

    SignatureGenerationOptions sigGenOptions = new SignatureGenerationOptions.Builder(Algorithm.ECDSA)
            .withThreshold(2).withNodes(sigNodes).build();

    byte[] dsaSig = signingService.generateSignature("ECKEY", sigGenOptions, hash);

    //
    // check the signature locally.
    //
    ECDSASigner signer = new ECDSASigner();

    signer.init(false, sigPubKey);

    BigInteger[] rs = decodeSig(dsaSig);

    Assert.assertTrue(signer.verifySignature(hash, rs[0], rs[1]));
}

From source file:org.fnppl.opensdx.security.KeyLog.java

License:Open Source License

public byte[] calcSha256LocalProof() throws Exception {
    //localproof of ipv4, ipv6, action.signature.signaturesbytes
    byte[] ret = new byte[32]; //256 bit = 32 byte
    SHA256Digest sha256 = new org.bouncycastle.crypto.digests.SHA256Digest();

    byte[] data;//w  w  w  .  j a v  a 2 s  .c  om
    if (ipv4 != null && ipv4.length() > 0) {
        data = ipv4.getBytes("UTF-8");
        //System.out.println("ipv4: "+ipv4);
        sha256.update(data, 0, data.length);
    }
    if (ipv6 != null && ipv4.length() > 0) {
        data = ipv6.getBytes("UTF-8");
        //System.out.println("ipv6: "+ipv6);
        sha256.update(data, 0, data.length);
    }
    data = action.getSignatureBytes();
    if (data != null) {
        //System.out.println("sigbytes: "+SecurityHelper.HexDecoder.encode(data, '\0', -1));
        sha256.update(data, 0, data.length);
    }
    sha256.doFinal(ret, 0);
    return ret;
}

From source file:org.fnppl.opensdx.security.SecurityHelper.java

License:Open Source License

public static byte[][] getMD5SHA1SHA256(byte[] data) {
    byte[] ret = new byte[16 + 20 + 32]; //160 bit = 20 byte + md5 128bit = 16 + sha256 256bit = 32 byte 
    byte[] md5ret = new byte[16];
    byte[] sha1ret = new byte[20];
    byte[] sha256ret = new byte[32];

    org.bouncycastle.crypto.digests.MD5Digest md5 = new org.bouncycastle.crypto.digests.MD5Digest();
    md5.update(data, 0, data.length);//  w  w w  .ja  v a2  s .c  o  m
    md5.doFinal(ret, 0);

    org.bouncycastle.crypto.digests.SHA1Digest sha1 = new org.bouncycastle.crypto.digests.SHA1Digest();
    sha1.update(data, 0, data.length);
    sha1.doFinal(ret, 16);

    org.bouncycastle.crypto.digests.SHA256Digest sha256 = new org.bouncycastle.crypto.digests.SHA256Digest();
    sha256.update(data, 0, data.length);
    sha256.doFinal(ret, 16 + 20);

    System.arraycopy(ret, 0, md5ret, 0, md5ret.length);
    System.arraycopy(ret, 16, sha1ret, 0, sha1ret.length);
    System.arraycopy(ret, 16 + 20, sha256ret, 0, sha256ret.length);

    return new byte[][] { ret, md5ret, sha1ret, sha256ret };
}

From source file:org.fnppl.opensdx.security.SecurityHelper.java

License:Open Source License

public static byte[][] getMD5SHA1SHA256(InputStream fin) throws Exception {
    byte[] ret = new byte[16 + 20 + 32]; //160 bit = 20 byte + md5 128bit = 16 + sha256 256bit = 32 byte 
    byte[] md5ret = new byte[16];
    byte[] sha1ret = new byte[20];
    byte[] sha256ret = new byte[32];

    org.bouncycastle.crypto.digests.MD5Digest md5 = new org.bouncycastle.crypto.digests.MD5Digest();
    org.bouncycastle.crypto.digests.SHA1Digest sha1 = new org.bouncycastle.crypto.digests.SHA1Digest();
    org.bouncycastle.crypto.digests.SHA256Digest sha256 = new org.bouncycastle.crypto.digests.SHA256Digest();

    int read = -1;
    byte[] buff = new byte[4096];
    while ((read = fin.read(buff)) != -1) {
        md5.update(buff, 0, read);//  ww  w.j  a va  2 s  . c om
        sha1.update(buff, 0, read);
        sha256.update(buff, 0, read);
    }

    sha1.doFinal(ret, 16);
    md5.doFinal(ret, 0);
    sha256.doFinal(ret, 16 + 20);

    System.arraycopy(ret, 0, md5ret, 0, md5ret.length);
    System.arraycopy(ret, 16, sha1ret, 0, sha1ret.length);
    System.arraycopy(ret, 16 + 20, sha256ret, 0, sha256ret.length);

    return new byte[][] { ret, md5ret, sha1ret, sha256ret };
}

From source file:org.fnppl.opensdx.security.SecurityHelper.java

License:Open Source License

private static void updateSha256(SHA256Digest sha256, String s) {
    try {//  www .j a v  a2 s. c o  m
        byte[] b = s.getBytes("UTF-8");
        //System.out.println("sha256::"+s);
        sha256.update(b, 0, b.length);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

From source file:org.fnppl.opensdx.security.SecurityHelper.java

License:Open Source License

public static byte[] getSHA256(byte[] data) {
    byte[] ret = new byte[32]; //256 bit = 32 byte
    org.bouncycastle.crypto.digests.SHA256Digest sha256 = new org.bouncycastle.crypto.digests.SHA256Digest();
    sha256.update(data, 0, data.length);
    sha256.doFinal(ret, 0);/* ww w  .j  a  v  a 2s. c o m*/
    return ret;
}