List of usage examples for org.bouncycastle.crypto.digests SHA256Digest update
public void update(byte[] in, int inOff, int len)
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; }