List of usage examples for org.bouncycastle.jce.spec IEKeySpec IEKeySpec
public IEKeySpec(PrivateKey privKey, PublicKey pubKey)
From source file:com.aelitis.azureus.core.security.impl.CryptoHandlerECC.java
License:Open Source License
public byte[] encrypt(byte[] other_public_key, byte[] data, String reason) throws CryptoManagerException { try {/*from ww w . j ava2s.com*/ IEKeySpec key_spec = new IEKeySpec(getMyPrivateKey(reason), CryptoECCUtils.rawdataToPubkey(other_public_key)); byte[] d = new byte[16]; byte[] e = new byte[16]; RandomUtils.nextSecureBytes(d); RandomUtils.nextSecureBytes(e); IESParameterSpec param = new IESParameterSpec(d, e, 128); InternalECIES cipher = new InternalECIES(); cipher.internalEngineInit(Cipher.ENCRYPT_MODE, key_spec, param, null); byte[] encrypted = cipher.internalEngineDoFinal(data, 0, data.length); byte[] result = new byte[32 + encrypted.length]; System.arraycopy(d, 0, result, 0, 16); System.arraycopy(e, 0, result, 16, 16); System.arraycopy(encrypted, 0, result, 32, encrypted.length); return (result); } catch (CryptoManagerException e) { throw (e); } catch (Throwable e) { throw (new CryptoManagerException("Encrypt failed", e)); } }
From source file:com.aelitis.azureus.core.security.impl.CryptoHandlerECC.java
License:Open Source License
public byte[] decrypt(byte[] other_public_key, byte[] data, String reason) throws CryptoManagerException { try {/*from w w w . j a va 2 s. c om*/ IEKeySpec key_spec = new IEKeySpec(getMyPrivateKey(reason), CryptoECCUtils.rawdataToPubkey(other_public_key)); byte[] d = new byte[16]; byte[] e = new byte[16]; System.arraycopy(data, 0, d, 0, 16); System.arraycopy(data, 16, e, 0, 16); IESParameterSpec param = new IESParameterSpec(d, e, 128); InternalECIES cipher = new InternalECIES(); cipher.internalEngineInit(Cipher.DECRYPT_MODE, key_spec, param, null); return (cipher.internalEngineDoFinal(data, 32, data.length - 32)); } catch (CryptoManagerException e) { throw (e); } catch (Throwable e) { throw (new CryptoManagerException("Decrypt failed", e)); } }
From source file:servTTP.servTTP.java
/** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> * methods.//w ww.j av a2s.com * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { /* TODO output your page here. You may use following sample code. */ out.println("<!DOCTYPE html>"); out.println("<html>"); out.println("<head>"); out.println("<title>Servlet servTTP</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet servTTP at " + request.getContextPath() + "</h1><br><br>"); KeyPairGenerator g = KeyPairGenerator.getInstance("EC", "BC"); out.println("<br> passou0"); ECNamedCurveParameterSpec parameterSpec = ECNamedCurveTable.getParameterSpec("secp384r1"); g.initialize(parameterSpec, new SecureRandom()); KeyPair aKeyPair = g.generateKeyPair(); PublicKey aPub = aKeyPair.getPublic(); PrivateKey aPriv = aKeyPair.getPrivate(); KeyPair bKeyPair = g.generateKeyPair(); PublicKey bPub = bKeyPair.getPublic(); PrivateKey bPriv = bKeyPair.getPrivate(); out.println("<br> passou1"); javax.crypto.Cipher c1 = javax.crypto.Cipher.getInstance("ECIES", "BC"); out.println("<br> passou2"); javax.crypto.Cipher c2 = javax.crypto.Cipher.getInstance("ECIES", "BC"); IEKeySpec c1Key = new IEKeySpec(aPriv, bPub); IEKeySpec c2Key = new IEKeySpec(bPriv, aPub); byte[] derivation = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; // #1 byte[] encoding = new byte[] { 8, 7, 6, 5, 4, 3, 2, 1 }; // #2 int macKeySizeInBits = 128; IESParameterSpec param = new IESParameterSpec(derivation, encoding, macKeySizeInBits); c1.init(javax.crypto.Cipher.ENCRYPT_MODE, c1Key, param); // #3 c2.init(javax.crypto.Cipher.DECRYPT_MODE, c2Key, param); // #4 byte[] message = "hello world -- a nice day today".getBytes(); byte[] out1 = c1.doFinal(message, 0, message.length); out.println("<br><br>length: " + out1.length); out.println(new String(out1)); out.println("<br><br>"); byte[] out2 = c2.doFinal(out1, 0, out1.length); out.println(new String(out2)); /* X9ECParameters ecParams = NISTNamedCurves.getByName("B-163"); BigInteger privKey = new BigInteger("38e1", 16); ECPoint pubKey = ecParams.getG().multiply(privKey); out.println("Available curves:<br>"); int counter = 0; for ( Enumeration e = NISTNamedCurves.getNames(); e.hasMoreElements(); ){ if (counter == 3) { counter = -1; out.println( e.nextElement().toString() ); out.println("<br>"); }else{ out.print( e.nextElement().toString() + " "); out.println("<br>"); } counter++; } ECPoint pMsg = ecParams.getG().multiply( new BigInteger(Integer.toHexString(2), 16)); out.println("<br>"); out.println("<br>"); out.println("--------------------------------------------------------------------------------------------------------------------------------------------------"); out.println("<br>"); out.println("Selected curve:"); out.println("Curve: " + ecParams.getCurve().getFieldSize()); out.println("<br>"); out.println("--------------------------------------------------------------------------------------------------------------------------------------------------"); out.println("<br>"); out.println("Point: " + "X: " + pMsg.getX().toBigInteger().toString(16) + "<br>" + " Y: " + pMsg.getY().toBigInteger().toString(16)); out.println("<br>"); out.println("--------------------------------------------------------------------------------------------------------------------------------------------------"); ECPoint one; ECPoint two; BigInteger random = new BigInteger(16, new SecureRandom());*/ /* g^r */ // one = ecParams.getG().multiply(random); /* pk^r+m */ // two = pMsg.add(pubKey.multiply(random)); //encryptedData edM = new encryptedData(one, two); /* out.println("<br><br>Encrypted:<br><br>"); out.println("One: " + "X: " + one.getX().toBigInteger().toString(16) + "<br>" + " Y: " + one.getY().toBigInteger().toString(16) + "<br>"); out.println("Two: " + "X: " + two.getX().toBigInteger().toString(16) + "<br>" + " Y: " + two.getY().toBigInteger().toString(16) + "<br>"); out.println("--------------------------------------------------------------------------------------------------------------------------------------------------"); ECPoint decrypted = two.eData.subtract(two.gInR.multiply(privKey)); out.println("Decrypted: " + "X: " + decrypted.getX().toBigInteger().toString(16) + "<br>" + " Y: " + decrypted.getY().toBigInteger().toString(16) + "<br>"); */ /* KeyPairGenerator kpg; kpg = KeyPairGenerator.getInstance("EC","SunEC"); Cipher cipher = Cipher.getInstance("DES"); out.println("provider=" + cipher.getProvider()); ECGenParameterSpec ecsp; ecsp = new ECGenParameterSpec("secp192r1"); kpg.initialize(ecsp); KeyPair kp = kpg.genKeyPair(); PrivateKey privKey = kp.getPrivate(); PublicKey pubKey = kp.getPublic(); out.println("privKey = "+ privKey); out.println("<br><br>publicKey = " + pubKey.toString() + "<br><br>"); cipher.init(Cipher.ENCRYPT_MODE, pubKey);*/ out.println("passou"); /* Global global = new Global(); out.println("passou1"); Context context = createAndInitializeContext(global); out.println("passou2"); Scriptable scope = context.initStandardObjects(global); out.println("passou3"); URL url = new URL("http://localhost:8080/sjcl/sjcl.js"); out.println("passou4"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); out.println("passou5"); compileAndExec(in, "classpath:" + url.toString(), context, scope); out.println("passou6"); in.close(); out.println("passou7"); exec("var p = {mode : 'ccm',iv : '9VJFbwZs/HhyN81aKrKLZA',salt : 'FVj3L6Omt14'}; var result = sjcl.encrypt('password', 'data', p, {})", "start", context,scope); out.println("passou8"); Object result = scope.get("result", scope); out.println("resultado = " + result); if (result != Scriptable.NOT_FOUND) { String json = Context.toString(result); out.println(json); } exec("var rp = {}; var result = sjcl.decrypt('Siva', {iv : '9VJFbwZs/HhyN81aKrKLZA',salt : 'FVj3L6Omt14' ,ct : 'zi1SfGfSZMY5Rcdx+DOzfiM'}, {}, rp)", "start", context,scope); //exec("var rp = {}; var result = sjcl.decrypt('password', "+result+" , {}, rp);", "start", context,scope); result = scope.get("result", scope); if (result != Scriptable.NOT_FOUND) { String json = Context.toString(result); out.println(json); } */ } catch (Exception e) { out.println("catch"); } out.println("</body>"); out.println("</html>"); }