Example usage for org.bouncycastle.jce.spec IEKeySpec IEKeySpec

List of usage examples for org.bouncycastle.jce.spec IEKeySpec IEKeySpec

Introduction

In this page you can find the example usage for org.bouncycastle.jce.spec IEKeySpec IEKeySpec.

Prototype

public IEKeySpec(PrivateKey privKey, PublicKey pubKey) 

Source Link

Usage

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>");

}