/[classpath]/classpath/gnu/java/security/provider/DSAKeyPairGenerator.java
ViewVC logotype

Diff of /classpath/gnu/java/security/provider/DSAKeyPairGenerator.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by mark, Sat Jul 2 20:32:14 2005 UTC revision 1.6 by rsdio, Tue Aug 9 06:13:54 2005 UTC
# Line 1  Line 1 
1  /* GnuDSAKeyPairGenerator.java --- Gnu DSA Key Pair Generator  /* GnuDSAKeyPairGenerator.java --- Gnu DSA Key Pair Generator
2     Copyright (C) 1999 Free Software Foundation, Inc.     Copyright (C) 1999, 2005  Free Software Foundation, Inc.
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
# Line 45  import java.security.InvalidAlgorithmPar Line 45  import java.security.InvalidAlgorithmPar
45  import java.security.InvalidParameterException;  import java.security.InvalidParameterException;
46  import java.security.KeyPair;  import java.security.KeyPair;
47  import java.security.KeyPairGeneratorSpi;  import java.security.KeyPairGeneratorSpi;
48    import java.security.NoSuchAlgorithmException;
49  import java.security.SecureRandom;  import java.security.SecureRandom;
50  import java.security.interfaces.DSAParams;  import java.security.interfaces.DSAParams;
51  import java.security.spec.AlgorithmParameterSpec;  import java.security.spec.AlgorithmParameterSpec;
52  import java.security.spec.DSAParameterSpec;  import java.security.spec.DSAParameterSpec;
53    import java.security.spec.InvalidParameterSpecException;
54  import java.util.Random;  import java.util.Random;
55    
56  public class DSAKeyPairGenerator extends KeyPairGeneratorSpi  public class DSAKeyPairGenerator extends KeyPairGeneratorSpi
# Line 60  private BigInteger q = null; // the smal Line 62  private BigInteger q = null; // the smal
62  private BigInteger p = null; // the big prime  private BigInteger p = null; // the big prime
63  private BigInteger g = null;  private BigInteger g = null;
64    
65  DSAKeyPairGenerator()  public DSAKeyPairGenerator()
66  {  {
67          keysize = 1024;          keysize = 1024;
68            getDefaults ();
69  }  }
70    
71  public void initialize(int keysize, SecureRandom random)  public void initialize(int keysize, SecureRandom random)
72  {  {
73          //if( ((keysize % 64) != 0) || (keysize < 512) || (keysize > 1024) )          initialize (keysize, false, random);
         //        throw new InvalidAlgorithmParameterException("Invalid key size");  
   
         this.keysize = keysize;  
         this.random = random;  
74  }  }
75    
76  public void initialize(AlgorithmParameterSpec params,  public void initialize(AlgorithmParameterSpec params,
# Line 81  public void initialize(AlgorithmParamete Line 80  public void initialize(AlgorithmParamete
80          if( !( params instanceof DSAParameterSpec ) )          if( !( params instanceof DSAParameterSpec ) )
81                  throw new InvalidAlgorithmParameterException("Must be DSAParameterSpec");                  throw new InvalidAlgorithmParameterException("Must be DSAParameterSpec");
82    
83            try
84            {
85                    initialize ((DSAParams) params, random);
86            }
87            catch (InvalidParameterException ipe)
88            {
89                    InvalidAlgorithmParameterException iape =
90                            new InvalidAlgorithmParameterException();
91                    iape.initCause (ipe);
92                    throw iape;
93            }
94    }
95    
96    public void initialize (DSAParams params, SecureRandom random)
97    {
98          DSAParameterSpec dsaparameterspec = (DSAParameterSpec)params;          DSAParameterSpec dsaparameterspec = (DSAParameterSpec)params;
99            if (dsaparameterspec.getP() == null
100                || dsaparameterspec.getQ() == null
101                || dsaparameterspec.getG() == null)
102            {
103                    throw new InvalidParameterException ("none of p, q, or g may be null");
104            }
105          p = dsaparameterspec.getP();          p = dsaparameterspec.getP();
106          q = dsaparameterspec.getQ();          q = dsaparameterspec.getQ();
107          g = dsaparameterspec.getG();          g = dsaparameterspec.getG();
108          this.random = random;          this.random = random;
109  }  }
110    
 public void initialize(DSAParams params, SecureRandom random)  
         throws InvalidParameterException  
 {  
         if(params.getP() != null)  
                 p = params.getP();  
         else  
                 throw new InvalidParameterException();  
   
         if(params.getQ() != null)  
                 q = params.getQ();  
         else  
                 throw new InvalidParameterException();  
           
         if(params.getG() != null)  
                 g = params.getG();  
         else  
                 throw new InvalidParameterException();  
           
         this.random = random;  
 }  
   
111  public void initialize(int modlen, boolean genParams, SecureRandom random)  public void initialize(int modlen, boolean genParams, SecureRandom random)
112          throws InvalidParameterException          throws InvalidParameterException
113  {  {
114          if( ((modlen % 64) != 0) || (modlen < 512) || (modlen > 1024) )          if( ((modlen % 64) != 0) || (modlen < 512) || (modlen > 1024) )
115                  throw new InvalidParameterException();                  throw new InvalidParameterException();
116    
117          if( (genParams == false) && (modlen != 512) && (modlen != 768) && (modlen != 1024)  )          this.keysize = keysize;
118                  throw new InvalidParameterException();          this.random = random;
119          this.keysize = modlen;          if (this.random == null)
120          this.random = random;          {
121          p = null;                  this.random = new SecureRandom ();
122          q = null;          }
123          g = null;          if (genParams)
124            {
125                    try
126                    {
127                            AlgorithmParameterGenerator apgDSA = AlgorithmParameterGenerator.getInstance("DSA");
128                            apgDSA.init (modlen, random);
129                            AlgorithmParameters apDSA = apgDSA.generateParameters();
130                            DSAParameterSpec dsaparameterspec = (DSAParameterSpec)apDSA.getParameterSpec( DSAParameterSpec.class );
131                            p = dsaparameterspec.getP();
132                            q = dsaparameterspec.getQ();
133                            g = dsaparameterspec.getG();
134                    }
135                    catch (NoSuchAlgorithmException nsae)
136                    {
137                            InvalidParameterException ipe =
138                                    new InvalidParameterException ("can't generate DSA parameters");
139                            ipe.initCause (nsae);
140                            throw ipe;
141                    }
142                    catch (InvalidParameterSpecException ipse)
143                    {
144                            InvalidParameterException ipe =
145                                    new InvalidParameterException ("can't generate DSA parameters");
146                            ipe.initCause (ipse);
147                            throw ipe;
148                    }
149            }
150            else if (!getDefaults ())
151            {
152                    throw new InvalidParameterException ("unsupported key size: " + modlen);
153            }
154  }  }
155    
156  public KeyPair generateKeyPair()  public KeyPair generateKeyPair()
157  {  {
158          if( getDefaults() == false) {          if (random == null)
159                  try {                  {
160                          AlgorithmParameterGenerator apgDSA = AlgorithmParameterGenerator.getInstance("DSA");                          random = new SecureRandom ();
161                          AlgorithmParameters apDSA = apgDSA.generateParameters();                  }
                         DSAParameterSpec dsaparameterspec = (DSAParameterSpec)apDSA.getParameterSpec( DSAParameterSpec.class );  
                         p = dsaparameterspec.getP();  
                         q = dsaparameterspec.getQ();  
                         g = dsaparameterspec.getG();  
                 } catch ( Exception e ) {  
                         return null;  
                 }  
         }  
162    
163          BigInteger x = new BigInteger( 159, new Random() );          BigInteger x = new BigInteger( 159, random );
164    
165          BigInteger y = g.modPow( x, p );          BigInteger y = g.modPow( x, p );
166    
# Line 160  private boolean getDefaults() Line 181  private boolean getDefaults()
181                  p = new BigInteger("e9e642599d355f37c97ffd3567120b8e25c9cd43e927b3a9670fbec5d890141922d2c3b3ad2480093799869d1e846aab49fab0ad26d2ce6a22219d470bce7d777d4a21fbe9c270b57f607002f3cef8393694cf45ee3688c11a8c56ab127a3daf", 16);                  p = new BigInteger("e9e642599d355f37c97ffd3567120b8e25c9cd43e927b3a9670fbec5d890141922d2c3b3ad2480093799869d1e846aab49fab0ad26d2ce6a22219d470bce7d777d4a21fbe9c270b57f607002f3cef8393694cf45ee3688c11a8c56ab127a3daf", 16);
182                  q = new BigInteger("9cdbd84c9f1ac2f38d0f80f42ab952e7338bf511", 16);                  q = new BigInteger("9cdbd84c9f1ac2f38d0f80f42ab952e7338bf511", 16);
183                  g = new BigInteger("30470ad5a005fb14ce2d9dcd87e38bc7d1b1c5facbaecbe95f190aa7a31d23c4dbbcbe06174544401a5b2c020965d8c2bd2171d3668445771f74ba084d2029d83c1c158547f3a9f1a2715be23d51ae4d3e5a1f6a7064f316933a346d3f529252", 16);                  g = new BigInteger("30470ad5a005fb14ce2d9dcd87e38bc7d1b1c5facbaecbe95f190aa7a31d23c4dbbcbe06174544401a5b2c020965d8c2bd2171d3668445771f74ba084d2029d83c1c158547f3a9f1a2715be23d51ae4d3e5a1f6a7064f316933a346d3f529252", 16);
184          } else if( keysize == 512) {          } else if( keysize == 1024) {
185                  p = new BigInteger("fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d402251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16);                  p = new BigInteger("fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d402251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7", 16);
186                  q = new BigInteger("9760508f15230bccb292b982a2eb840bf0581cf5", 16);                  q = new BigInteger("9760508f15230bccb292b982a2eb840bf0581cf5", 16);
187                  g = new BigInteger("f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d0782675159578ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea8519089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16);                  g = new BigInteger("f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d0782675159578ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea8519089a883dfe15ae59f06928b665e807b552564014c3bfecf492a", 16);

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26