1 /* $Id: Test.java,v 1.3 2000/07/28 20:09:41 gelderen Exp $ 2 * 3 * Copyright (C) 2000 The Cryptix Foundation Limited. 4 * All rights reserved. 5 * 6 * Use, modification, copying and distribution of this software is subject 7 * the terms and conditions of the Cryptix General Licence. You should have 8 * received a copy of the Cryptix General Licence along with this library; 9 * if not, you can download a copy from http://www.cryptix.org/ . 10 */ 11 package cryptix.jce.provider.dh; 12 13 14 import java.math.BigInteger; 15 import java.security.*; 16 import javax.crypto.*; 17 18 19 /** 20 * @version $Revision: 1.3 $ 21 * @author Jeroen C. van Gelderen (gelderen@cryptix.org) 22 */ 23 public final class Test 24 { main(String[] argv)25 public static void main(String[] argv) 26 { 27 while(true) 28 work(); 29 } 30 work()31 public static void work() 32 { 33 Security.addProvider(new cryptix.jce.provider.CryptixCrypto()); 34 35 try 36 { 37 KeyPairGenerator kpg1 = KeyPairGenerator.getInstance("DH"); 38 kpg1.initialize(1536); 39 KeyPair pair1 = kpg1.generateKeyPair(); 40 41 KeyPairGenerator kpg2 = KeyPairGenerator.getInstance("DH"); 42 kpg2.initialize(1536); 43 KeyPair pair2 = kpg2.generateKeyPair(); 44 45 KeyAgreement ka1 = KeyAgreement.getInstance("DH"); 46 ka1.init( pair1.getPrivate() ); 47 ka1.doPhase( pair2.getPublic(), true ); 48 byte[] master1 = ka1.generateSecret(); 49 50 KeyAgreement ka2 = KeyAgreement.getInstance("DH"); 51 ka2.init( pair2.getPrivate() ); 52 ka2.doPhase( pair1.getPublic(), true ); 53 byte[] master2 = ka2.generateSecret(); 54 55 if( master1.length != master2.length ) 56 throw new RuntimeException(); 57 58 for( int i=0; i<master1.length; i++ ) 59 { 60 if( master1[i] != master2[i] ) 61 throw new RuntimeException(); 62 } 63 System.out.println(); 64 65 System.out.println("master1.length: " + master1.length); 66 if(master1.length != 192) 67 throw new RuntimeException(); 68 69 System.out.println("master1: " + 70 new BigInteger(1, master1).toString(16) ); 71 72 System.out.println("Done"); 73 } 74 catch(Throwable t) 75 { 76 t.printStackTrace(); 77 } 78 } 79 } 80 81