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