Package javax.crypto

Examples of javax.crypto.KeyAgreement


  }
 
  public Key generateSecret()
    throws NoSuchAlgorithmException,
           InvalidKeyException {
    KeyAgreement ka = KeyAgreement.getInstance("DH");
    ka.init(keyPair.getPrivate());
    ka.doPhase(publicKey, true);
    return ka.generateSecret("DESede");
  }
View Full Code Here


        DHPublicKeySpec keySpec = new DHPublicKeySpec(y, this.desc.getP(), this.desc.getG());

        KeyFactory keyFactory = KeyFactory.getInstance("DH", "BC");
        PublicKey publicKey = keyFactory.generatePublic(keySpec);

        KeyAgreement agreement = KeyAgreement.getInstance("DH");

        agreement.init(this.keys.getPrivate());
        agreement.doPhase(publicKey, true);

        byte[] secret = agreement.generateSecret();

        return Unpooled.wrappedBuffer(secret);
    }
View Full Code Here

        KeyPairGenerator aliceKPG = KeyPairGenerator.getInstance("DH");
        aliceKPG.initialize(spec1);
        KeyPair aliceKP = aliceKPG.generateKeyPair();

        harness.verbose("*** Initializing Alice's Diffie-Hellman key-agreement");
        KeyAgreement aliceKA = KeyAgreement.getInstance("DH");
        aliceKA.init(aliceKP.getPrivate());

        harness.verbose("*** Alice sends Bob her encoded key...");
        byte[] alicePubKEnc = aliceKP.getPublic().getEncoded();

        // Bob side
        KeyFactory bobKF = KeyFactory.getInstance("DH");
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(alicePubKEnc);
        PublicKey alicePubK = bobKF.generatePublic(x509KeySpec);

        // Bob gets the DH parameters associated with Alice's public key.
        // He MUST use the same parameters when generating his own key-pair
        DHParameterSpec spec2 = ((DHPublicKey) alicePubK).getParams();
        harness.verbose("*** Generating Bob's Diffie-Hellman key-pair");
        KeyPairGenerator bobKPG = KeyPairGenerator.getInstance("DH");
        bobKPG.initialize(spec2);
        KeyPair bobKP = bobKPG.generateKeyPair();

        harness.verbose("*** Initializing Bob's Diffie-Hellman key-agreement");
        KeyAgreement bobKA = KeyAgreement.getInstance("DH");
        bobKA.init(bobKP.getPrivate());

        harness.verbose("*** Bob sends Alice his encoded key...");
        byte[] bobPubKEnc = bobKP.getPublic().getEncoded();

        // Alice uses Bob's public key for the one and only phase of her
        // version of the DH protocol.  Before she can do that, she has to
        // re-generate Bob's DH public key from his encoded key material
        KeyFactory aliceKF = KeyFactory.getInstance("DH");
        x509KeySpec = new X509EncodedKeySpec(bobPubKEnc);
        PublicKey bobPubK = aliceKF.generatePublic(x509KeySpec);
        harness.verbose("*** Alice does phase #1");
        aliceKA.doPhase(bobPubK, true);

        // Bob uses Alice's public key for the first and only phase of his
        // version of the DH protocol
        harness.verbose("*** Bob does phase #1");
        bobKA.doPhase(alicePubK, true);

        // Both generate (hopefully) the same shared secret
        byte[] aliceSS = aliceKA.generateSecret();
        int len = aliceSS.length;

        byte[] bobSS = new byte[len];
        String msg = "generateSecret(byte[" + bobSS.length
                     + "], 1) MUST throw ShortBufferException";
        try // with a shorter buffer first!
          {
            bobKA.generateSecret(bobSS, 1);
            harness.fail(msg);
          }
        catch (ShortBufferException e)
          {
            harness.check(true, msg);
          }
        // now do it properly
        bobKA.generateSecret(bobSS, 0);

        harness.check(Arrays.equals(aliceSS, bobSS),
                      "Shared secrets MUST be equal");

        harness.verbose("*** Bob generates a new shared secret");
        // The call to bobKA.generateSecret above resets the key-agreement
        // object, so we call doPhase() again before calling generateSecret()
        bobKA.doPhase(alicePubK, true);
        SecretKey bobSK = bobKA.generateSecret("DES");

        harness.verbose("*** Alice generates a new shared secret");
        aliceKA.doPhase(bobPubK, true);
        SecretKey aliceSK = aliceKA.generateSecret("DES");

View Full Code Here

    public byte[] generateKek(PrivateKey privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException {
        // get the ValueLink public key
        PublicKey vlPublic = this.getValueLinkPublicKey();

        // generate shared secret key
        KeyAgreement ka = KeyAgreement.getInstance("DH");
        ka.init(privateKey);
        ka.doPhase(vlPublic, true);
        byte[] secretKey = ka.generateSecret();

        if (debug) {
            Debug.log("Secret Key : " + StringUtil.toHexString(secretKey) + " / " + secretKey.length,  module);
        }
View Full Code Here

            //
            // a side
            //
            KeyPair aKeyPair = g.generateKeyPair();

            KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDHC", "BC");

            aKeyAgree.init(aKeyPair.getPrivate());

            //
            // b side
            //
            KeyPair bKeyPair = g.generateKeyPair();

            KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDHC", "BC");

            bKeyAgree.init(bKeyPair.getPrivate());

            //
            // agreement
            //
            aKeyAgree.doPhase(bKeyPair.getPublic(), true);
            bKeyAgree.doPhase(aKeyPair.getPublic(), true);

            BigInteger  k1 = new BigInteger(aKeyAgree.generateSecret());
            BigInteger  k2 = new BigInteger(bKeyAgree.generateSecret());

            if (!k1.equals(k2))
            {
                return new SimpleTestResult(false, getName() + " 2-way test failed");
            }
View Full Code Here

            //
            // a side
            //
            KeyPair aKeyPair = keyGen.generateKeyPair();
   
            KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH", "BC");

            aKeyAgree.init(aKeyPair.getPrivate());

            //
            // b side
            //
            KeyPair bKeyPair = keyGen.generateKeyPair();

            KeyAgreement bKeyAgree = KeyAgreement.getInstance("DH", "BC");

            bKeyAgree.init(bKeyPair.getPrivate());

            //
            // agreement
            //
            aKeyAgree.doPhase(bKeyPair.getPublic(), true);
            bKeyAgree.doPhase(aKeyPair.getPublic(), true);

            BigInteger  k1 = new BigInteger(aKeyAgree.generateSecret());
            BigInteger  k2 = new BigInteger(bKeyAgree.generateSecret());

            if (!k1.equals(k2))
            {
                return new SimpleTestResult(false, size + " bit 2-way test failed");
            }

            //
            // public key encoding test
            //
            byte[]              pubEnc = aKeyPair.getPublic().getEncoded();
            KeyFactory          keyFac = KeyFactory.getInstance("DH", "BC");
            X509EncodedKeySpec  pubX509 = new X509EncodedKeySpec(pubEnc);
            DHPublicKey         pubKey = (DHPublicKey)keyFac.generatePublic(pubX509);
            DHParameterSpec     spec = pubKey.getParams();

            if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP()))
            {
                return new SimpleTestResult(false, size + " bit public key encoding/decoding test failed on parameters");
            }

            if (!((DHPublicKey)aKeyPair.getPublic()).getY().equals(pubKey.getY()))
            {
                return new SimpleTestResult(false, size + " bit public key encoding/decoding test failed on y value");
            }

            //
            // public key serialisation test
            //
            ByteArrayOutputStream   bOut = new ByteArrayOutputStream();
            ObjectOutputStream      oOut = new ObjectOutputStream(bOut);

            oOut.writeObject(aKeyPair.getPublic());

            ByteArrayInputStream   bIn = new ByteArrayInputStream(bOut.toByteArray());
            ObjectInputStream      oIn = new ObjectInputStream(bIn);

            pubKey = (DHPublicKey)oIn.readObject();
            spec = pubKey.getParams();

            if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP()))
            {
                return new SimpleTestResult(false, size + " bit public key serialisation test failed on parameters");
            }

            if (!((DHPublicKey)aKeyPair.getPublic()).getY().equals(pubKey.getY()))
            {
                return new SimpleTestResult(false, size + " bit public key serialisation test failed on y value");
            }

            //
            // private key encoding test
            //
            byte[]              privEnc = aKeyPair.getPrivate().getEncoded();
            PKCS8EncodedKeySpec privPKCS8 = new PKCS8EncodedKeySpec(privEnc);
            DHPrivateKey        privKey = (DHPrivateKey)keyFac.generatePrivate(privPKCS8);

            spec = privKey.getParams();

            if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP()))
            {
                return new SimpleTestResult(false, size + " bit private key encoding/decoding test failed on parameters");
            }

            if (!((DHPrivateKey)aKeyPair.getPrivate()).getX().equals(privKey.getX()))
            {
                return new SimpleTestResult(false, size + " bit private key encoding/decoding test failed on y value");
            }

            //
            // private key serialisation test
            //
            bOut = new ByteArrayOutputStream();
            oOut = new ObjectOutputStream(bOut);

            oOut.writeObject(aKeyPair.getPrivate());

            bIn = new ByteArrayInputStream(bOut.toByteArray());
            oIn = new ObjectInputStream(bIn);

            privKey = (DHPrivateKey)oIn.readObject();
            spec = privKey.getParams();

            if (!spec.getG().equals(dhParams.getG()) || !spec.getP().equals(dhParams.getP()))
            {
                return new SimpleTestResult(false, size + " bit private key serialisation test failed on parameters");
            }

            if (!((DHPrivateKey)aKeyPair.getPrivate()).getX().equals(privKey.getX()))
            {
                return new SimpleTestResult(false, size + " bit private key serialisation test failed on y value");
            }

            //
            // three party test
            //
            KeyPairGenerator aPairGen = KeyPairGenerator.getInstance("DH", "BC");
            aPairGen.initialize(spec);
            KeyPair aPair = aPairGen.generateKeyPair();

            KeyPairGenerator bPairGen = KeyPairGenerator.getInstance("DH", "BC");
            bPairGen.initialize(spec);
            KeyPair bPair = bPairGen.generateKeyPair();

            KeyPairGenerator cPairGen = KeyPairGenerator.getInstance("DH", "BC");
            cPairGen.initialize(spec);
            KeyPair cPair = cPairGen.generateKeyPair();

            aKeyAgree.init(aPair.getPrivate());

            bKeyAgree.init(bPair.getPrivate());

            KeyAgreement cKeyAgree = KeyAgreement.getInstance("DH", "BC");
            cKeyAgree.init(cPair.getPrivate());

            Key ac = aKeyAgree.doPhase(cPair.getPublic(), false);

            Key ba = bKeyAgree.doPhase(aPair.getPublic(), false);

            Key cb = cKeyAgree.doPhase(bPair.getPublic(), false);

            aKeyAgree.doPhase(cb, true);

            bKeyAgree.doPhase(ac, true);

            cKeyAgree.doPhase(ba, true);

            BigInteger aShared = new BigInteger(aKeyAgree.generateSecret());
            BigInteger bShared = new BigInteger(bKeyAgree.generateSecret());
            BigInteger cShared = new BigInteger(cKeyAgree.generateSecret());

            if (!aShared.equals(bShared))
            {
                return new SimpleTestResult(false, size + " bit 3-way test failed (a and b differ)");
            }
View Full Code Here

            //
            // a side
            //
            KeyPair aKeyPair = g.generateKeyPair();
   
            KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDH", "BC");

            aKeyAgree.init(aKeyPair.getPrivate());

            //
            // b side
            //
            KeyPair bKeyPair = g.generateKeyPair();

            KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDH", "BC");

            bKeyAgree.init(bKeyPair.getPrivate());

            //
            // agreement
            //
            aKeyAgree.doPhase(bKeyPair.getPublic(), true);
            bKeyAgree.doPhase(aKeyPair.getPublic(), true);

            BigInteger  k1 = new BigInteger(aKeyAgree.generateSecret());
            BigInteger  k2 = new BigInteger(bKeyAgree.generateSecret());

            if (!k1.equals(k2))
            {
                return new SimpleTestResult(false, "ECDH 2-way test failed");
            }
View Full Code Here

            //
            // a side
            //
            KeyPair aKeyPair = g.generateKeyPair();
   
            KeyAgreement aKeyAgree = KeyAgreement.getInstance("ECDHC", "BC");

            aKeyAgree.init(aKeyPair.getPrivate());

            //
            // b side
            //
            KeyPair bKeyPair = g.generateKeyPair();

            KeyAgreement bKeyAgree = KeyAgreement.getInstance("ECDHC", "BC");

            bKeyAgree.init(bKeyPair.getPrivate());

            //
            // agreement
            //
            aKeyAgree.doPhase(bKeyPair.getPublic(), true);
            bKeyAgree.doPhase(aKeyPair.getPublic(), true);

            BigInteger  k1 = new BigInteger(aKeyAgree.generateSecret());
            BigInteger  k2 = new BigInteger(bKeyAgree.generateSecret());

            if (!k1.equals(k2))
            {
                return new SimpleTestResult(false, "ECDHC 2-way test failed");
            }
View Full Code Here

    {
        DHParameterSpec        dhParams = new DHParameterSpec(p512, g512);

        try
        {
            KeyAgreement aKeyAgree = KeyAgreement.getInstance("DH", "BC");

            aKeyAgree.generateSecret("DES");
        }
        catch (IllegalStateException e)
        {
            // okay
        }
View Full Code Here

    public byte[] generateKek(PrivateKey privateKey) throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException {
        // get the ValueLink public key
        PublicKey vlPublic = this.getValueLinkPublicKey();

        // generate shared secret key
        KeyAgreement ka = KeyAgreement.getInstance("DH");
        ka.init(privateKey);
        ka.doPhase(vlPublic, true);
        byte[] secretKey = ka.generateSecret();

        if (debug) {
            Debug.logInfo("Secret Key : " + StringUtil.toHexString(secretKey) + " / " + secretKey.length,  module);
        }
View Full Code Here

TOP

Related Classes of javax.crypto.KeyAgreement

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.