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

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

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

revision 1.3 by mark, Tue Jan 22 22:26:58 2002 UTC revision 1.4 by rsdio, Wed Apr 23 22:59:42 2003 UTC
# Line 1  Line 1 
1  /* DSASignature.java  /* DSASignature.java
2     Copyright (C) 1999 Free Software Foundation, Inc.     Copyright (C) 1999,2003 Free Software Foundation, Inc.
3    
4  This file is part of GNU Classpath.  This file is part of GNU Classpath.
5    
# Line 37  exception statement from your version. * Line 37  exception statement from your version. *
37    
38  package gnu.java.security.provider;  package gnu.java.security.provider;
39    
40    import java.io.ByteArrayInputStream;
41    import java.io.ByteArrayOutputStream;
42    import java.io.IOException;
43    
44  import java.math.BigInteger;  import java.math.BigInteger;
45    
46  import java.security.InvalidAlgorithmParameterException;  import java.security.InvalidAlgorithmParameterException;
47  import java.security.InvalidKeyException;  import java.security.InvalidKeyException;
48  import java.security.InvalidParameterException;  import java.security.InvalidParameterException;
# Line 52  import java.security.SignatureSpi; Line 57  import java.security.SignatureSpi;
57  import java.security.interfaces.DSAPrivateKey;  import java.security.interfaces.DSAPrivateKey;
58  import java.security.interfaces.DSAPublicKey;  import java.security.interfaces.DSAPublicKey;
59  import java.security.spec.AlgorithmParameterSpec;  import java.security.spec.AlgorithmParameterSpec;
60    
61    import java.util.ArrayList;
62    import java.util.List;
63  import java.util.Random;  import java.util.Random;
64    
65    import gnu.java.io.ASN1ParsingException;
66    import gnu.java.security.der.DER;
67  import gnu.java.security.der.DEREncodingException;  import gnu.java.security.der.DEREncodingException;
68    import gnu.java.security.der.DERReader;
69    import gnu.java.security.der.DERValue;
70    import gnu.java.security.der.DERWriter;
71    
72  public class DSASignature extends SignatureSpi  public class DSASignature extends SignatureSpi
73  {  {
# Line 157  public class DSASignature extends Signat Line 171  public class DSASignature extends Signat
171        BigInteger s = sha.add( x.multiply( r ) );        BigInteger s = sha.add( x.multiply( r ) );
172        s = s.multiply( k.modInverse(q) ).mod( q );        s = s.multiply( k.modInverse(q) ).mod( q );
173    
174        DERWriter writer = new DERWriter();        ByteArrayOutputStream bout = new ByteArrayOutputStream();
175        return writer.joinarrays( writer.writeBigInteger( r ),  writer.writeBigInteger( s ) );        ArrayList seq = new ArrayList(2);
176          seq.set(0, new DERValue(DER.INTEGER, r));
177          seq.set(1, new DERValue(DER.INTEGER, s));
178          DERWriter.write(bout, new DERValue(DER.CONSTRUCTED | DER.SEQUENCE, seq));
179          return bout.toByteArray();
180        } catch (IOException ioe) {
181          throw new SignatureException();
182      } catch ( ArithmeticException ae ) {      } catch ( ArithmeticException ae ) {
183        throw new SignatureException();        throw new SignatureException();
184      }      }
# Line 180  public class DSASignature extends Signat Line 199  public class DSASignature extends Signat
199    {    {
200      //Decode sigBytes from ASN.1 DER encoding      //Decode sigBytes from ASN.1 DER encoding
201      try {      try {
202        DERReader reader = new DERReader( sigBytes );        DERReader in = new DERReader(sigBytes);
203        BigInteger r = reader.getBigInteger();        DERValue val = in.read();
204        BigInteger s = reader.getBigInteger();        if (!val.isConstructed())
205            throw new SignatureException("badly formed signature");
206          BigInteger r = (BigInteger) in.read().getValue();
207          BigInteger s = (BigInteger) in.read().getValue();
208    
209        BigInteger g = publicKey.getParams().getG();        BigInteger g = publicKey.getParams().getG();
210        BigInteger p = publicKey.getParams().getP();        BigInteger p = publicKey.getParams().getP();
# Line 206  public class DSASignature extends Signat Line 228  public class DSASignature extends Signat
228          return true;          return true;
229        else        else
230          return false;          return false;
231      } catch ( DEREncodingException deree ) {      } catch (IOException ioe) {
232        throw new SignatureException();        throw new SignatureException("badly formed signature");
233      }      }
234    }    }
235    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

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