[kaffe] CVS kaffe (robilad): Added missing security files

Kaffe CVS cvs-commits at kaffe.org
Wed Nov 10 15:34:59 PST 2004


PatchSet 5434 
Date: 2004/11/10 22:48:21
Author: robilad
Branch: HEAD
Tag: (none) 
Log:
Added missing security files

Members: 
	libraries/javalib/gnu/java/security/provider/CollectionCertStoreImpl.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/EncodedKeyFactory.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/GnuDHPublicKey.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/GnuRSAPrivateKey.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/GnuRSAPublicKey.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/MD2withRSA.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/MD4withRSA.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/MD5withRSA.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/PKIXCertPathValidatorImpl.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/RSA.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/RSAKeyFactory.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/provider/SHA1withRSA.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/x509/GnuPKIExtension.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/x509/PolicyNodeImpl.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/x509/Util.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/x509/X509CRLSelectorImpl.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/x509/X509CertPath.java:INITIAL->1.1 
	libraries/javalib/gnu/java/security/x509/X509CertSelectorImpl.java:INITIAL->1.1 

===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/CollectionCertStoreImpl.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/CollectionCertStoreImpl.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/CollectionCertStoreImpl.java	Wed Nov 10 23:34:58 2004
@@ -0,0 +1,103 @@
+/* CollectionCertStore.java -- Collection-based cert store.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.cert.Certificate;
+import java.security.cert.CertSelector;
+import java.security.cert.CRL;
+import java.security.cert.CRLSelector;
+import java.security.cert.CertStoreException;
+import java.security.cert.CertStoreParameters;
+import java.security.cert.CertStoreSpi;
+import java.security.cert.CollectionCertStoreParameters;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+public final class CollectionCertStoreImpl extends CertStoreSpi
+{
+
+  // Fields.
+  // -------------------------------------------------------------------------
+
+  private final Collection store;
+
+  // Constructors.
+  // -------------------------------------------------------------------------
+
+  public CollectionCertStoreImpl(CertStoreParameters params)
+    throws InvalidAlgorithmParameterException
+  {
+    super(params);
+    if (! (params instanceof CollectionCertStoreParameters))
+      throw new InvalidAlgorithmParameterException("not a CollectionCertStoreParameters object");
+    store = ((CollectionCertStoreParameters) params).getCollection();
+  }
+
+  // Instance methods.
+  // -------------------------------------------------------------------------
+
+  public Collection engineGetCertificates(CertSelector selector)
+    throws CertStoreException
+  {
+    LinkedList result = new LinkedList();
+    for (Iterator it = store.iterator(); it.hasNext(); )
+      {
+        Object o = it.next();
+        if ((o instanceof Certificate) && selector.match((Certificate) o))
+          result.add(o);
+      }
+    return result;
+  }
+
+  public Collection engineGetCRLs(CRLSelector selector)
+    throws CertStoreException
+  {
+    LinkedList result = new LinkedList();
+    for (Iterator it = store.iterator(); it.hasNext(); )
+      {
+        Object o = it.next();
+        if ((o instanceof CRL) && selector.match((CRL) o))
+          result.add(o);
+      }
+    return result;
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/EncodedKeyFactory.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/EncodedKeyFactory.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/EncodedKeyFactory.java	Wed Nov 10 23:34:59 2004
@@ -0,0 +1,310 @@
+/* EncodedKeyFactory.java -- encoded key factory.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.io.IOException;
+
+import java.math.BigInteger;
+
+import java.security.AlgorithmParameters;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.KeyFactorySpi;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+
+import java.security.spec.DSAParameterSpec;
+import java.security.spec.DSAPrivateKeySpec;
+import java.security.spec.DSAPublicKeySpec;
+import java.security.spec.InvalidParameterSpecException;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.KeySpec;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.RSAPrivateCrtKeySpec;
+import java.security.spec.RSAPublicKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+
+import javax.crypto.spec.DHParameterSpec;
+
+import gnu.java.security.OID;
+import gnu.java.security.der.BitString;
+import gnu.java.security.der.DER;
+import gnu.java.security.der.DERReader;
+import gnu.java.security.der.DERValue;
+
+/**
+ * A factory for keys encoded in either the X.509 format (for public
+ * keys) or the PKCS#8 format (for private keys).
+ *
+ * @author Casey Marshall (rsdio at metastatic.org)
+ */
+public class EncodedKeyFactory extends KeyFactorySpi
+{
+
+  // Constants.
+  // ------------------------------------------------------------------------
+
+  private static final OID ID_DSA = new OID("1.2.840.10040.4.1");
+  private static final OID ID_RSA = new OID("1.2.840.113549.1.1.1");
+  private static final OID ID_DH  = new OID("1.2.840.10046.2.1");
+
+  // Instance methods.
+  // ------------------------------------------------------------------------
+
+  public PublicKey engineGeneratePublic(KeySpec spec)
+    throws InvalidKeySpecException
+  {
+    if (!(spec instanceof X509EncodedKeySpec))
+      throw new InvalidKeySpecException("only supports X.509 key specs");
+    DERReader der = new DERReader(((X509EncodedKeySpec) spec).getEncoded());
+    try
+      {
+        DERValue spki = der.read();
+        if (!spki.isConstructed())
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        DERValue alg = der.read();
+        if (!alg.isConstructed())
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        DERValue val = der.read();
+        if (!(val.getValue() instanceof OID))
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        OID algId = (OID) val.getValue();
+        byte[] algParams = null;
+        if (alg.getLength() > val.getEncodedLength())
+          {
+            val = der.read();
+            algParams = val.getEncoded();
+            if (val.isConstructed())
+              der.skip(val.getLength());
+          }
+        val = der.read();
+        if (!(val.getValue() instanceof BitString))
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        byte[] publicKey = ((BitString) val.getValue()).toByteArray();
+        if (algId.equals(ID_DSA))
+          {
+            BigInteger p = null, g = null, q = null, Y;
+            if (algParams != null)
+              {
+                DERReader dsaParams = new DERReader(algParams);
+                val = dsaParams.read();
+                if (!val.isConstructed())
+                  throw new InvalidKeySpecException("malformed DSA parameters");
+                val = dsaParams.read();
+                if (!(val.getValue() instanceof BigInteger))
+                  throw new InvalidKeySpecException("malformed DSA parameters");
+                p = (BigInteger) val.getValue();
+                val = dsaParams.read();
+                if (!(val.getValue() instanceof BigInteger))
+                  throw new InvalidKeySpecException("malformed DSA parameters");
+                q = (BigInteger) val.getValue();
+                val = dsaParams.read();
+                if (!(val.getValue() instanceof BigInteger))
+                  throw new InvalidKeySpecException("malformed DSA parameters");
+                g = (BigInteger) val.getValue();
+              }
+            DERReader dsaPub = new DERReader(publicKey);
+            val = dsaPub.read();
+            if (!(val.getValue() instanceof BigInteger))
+              throw new InvalidKeySpecException("malformed DSA parameters");
+            Y = (BigInteger) val.getValue();
+            return new GnuDSAPublicKey(Y, p, q, g);
+          }
+        else if (algId.equals(ID_RSA))
+          {
+            DERReader rsaParams = new DERReader(publicKey);
+            if (!rsaParams.read().isConstructed())
+              {
+                throw new InvalidKeySpecException("malformed encoded key");
+              }
+            return new GnuRSAPublicKey(new RSAPublicKeySpec(
+              (BigInteger) rsaParams.read().getValue(),
+              (BigInteger) rsaParams.read().getValue()));
+          }
+        else if (algId.equals(ID_DH))
+          {
+            if (algParams == null)
+              throw new InvalidKeySpecException("missing DH parameters");
+            DERReader dhParams = new DERReader(algParams);
+            val = dhParams.read();
+            BigInteger p, g, q, Y;
+            if (!val.isConstructed())
+              throw new InvalidKeySpecException("malformed DH parameters");
+            val = dhParams.read();
+            if (!(val.getValue() instanceof BigInteger))
+              throw new InvalidKeySpecException("malformed DH parameters");
+            p = (BigInteger) val.getValue();
+            val = dhParams.read();
+            if (!(val.getValue() instanceof BigInteger))
+              throw new InvalidKeySpecException("malformed DH parameters");
+            g = (BigInteger) val.getValue();
+            val = dhParams.read();
+            if (!(val.getValue() instanceof BigInteger))
+              throw new InvalidKeySpecException("malformed DH parameters");
+            q = (BigInteger) val.getValue();
+            DERReader dhPub = new DERReader(publicKey);
+            val = dhPub.read();
+            if (!(val.getValue() instanceof BigInteger))
+              throw new InvalidKeySpecException("malformed DH parameters");
+            Y = (BigInteger) val.getValue();
+            return (PublicKey) new GnuDHPublicKey(new DHParameterSpec(p, g), Y, q);
+          }
+        else
+          throw new InvalidKeySpecException("unknown algorithm: " + algId);
+      }
+    catch (IOException ioe)
+      {
+        throw new InvalidKeySpecException(ioe.getMessage());
+      }
+  }
+
+  public PrivateKey engineGeneratePrivate(KeySpec spec)
+    throws InvalidKeySpecException
+  {
+    if (!(spec instanceof PKCS8EncodedKeySpec))
+      {
+        throw new InvalidKeySpecException("only supports PKCS8 key specs");
+      }
+    DERReader der = new DERReader(((PKCS8EncodedKeySpec) spec).getEncoded());
+    try
+      {
+        DERValue pki = der.read();
+        if (!pki.isConstructed())
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        DERValue val = der.read();
+        if (!(val.getValue() instanceof BigInteger))
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        DERValue alg = der.read();
+        if (!alg.isConstructed())
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        val = der.read();
+        if (!(val.getValue() instanceof OID))
+          {
+            throw new InvalidKeySpecException("malformed encoded key");
+          }
+        OID algId = (OID) val.getValue();
+        byte[] algParams = null;
+        if (alg.getLength() > val.getEncodedLength())
+          {
+            val = der.read();
+            algParams = val.getEncoded();
+            if (val.isConstructed())
+              der.skip(val.getLength());
+          }
+        byte[] privateKey = (byte[]) der.read().getValue();
+        if (algId.equals(ID_DSA))
+          {
+            if (algParams == null)
+              {
+                throw new InvalidKeySpecException("missing DSA parameters");
+              }
+            AlgorithmParameters params = AlgorithmParameters.getInstance("DSA");
+            params.init(algParams);
+            DSAParameterSpec dsaSpec = (DSAParameterSpec)
+              params.getParameterSpec(DSAParameterSpec.class);
+            DERReader dsaPriv = new DERReader(privateKey);
+            return new GnuDSAPrivateKey((BigInteger) dsaPriv.read().getValue(),
+              dsaSpec.getP(), dsaSpec.getQ(), dsaSpec.getG());
+          }
+        else if (algId.equals(ID_RSA))
+          {
+            DERReader rsaParams = new DERReader(privateKey);
+            if (!rsaParams.read().isConstructed())
+              throw new InvalidKeySpecException("malformed encoded key");
+            return new GnuRSAPrivateKey(new RSAPrivateCrtKeySpec(
+              (BigInteger) rsaParams.read().getValue(), // n
+              (BigInteger) rsaParams.read().getValue(), // e
+              (BigInteger) rsaParams.read().getValue(), // d
+              (BigInteger) rsaParams.read().getValue(), // p
+              (BigInteger) rsaParams.read().getValue(), // q
+              (BigInteger) rsaParams.read().getValue(), // d mod (p - 1)
+              (BigInteger) rsaParams.read().getValue(), // d mod (q - 1)
+              (BigInteger) rsaParams.read().getValue())); // (inv q) mod p
+          }
+        else
+          throw new InvalidKeySpecException("unknown algorithm: " + algId);
+      }
+    catch (InvalidParameterSpecException iapse)
+      {
+        throw new InvalidKeySpecException(iapse.getMessage());
+      }
+    catch (NoSuchAlgorithmException nsae)
+      {
+        throw new InvalidKeySpecException(nsae.getMessage());
+      }
+    catch (IOException ioe)
+      {
+        throw new InvalidKeySpecException(ioe.getMessage());
+      }
+  }
+
+  public KeySpec engineGetKeySpec(Key key, Class speClass)
+    throws InvalidKeySpecException
+  {
+    if ((key instanceof PrivateKey) && key.getFormat().equals("PKCS#8")
+        && speClass.isAssignableFrom(PKCS8EncodedKeySpec.class))
+      return new PKCS8EncodedKeySpec(key.getEncoded());
+    else if ((key instanceof PublicKey) && key.getFormat().equals("X.509")
+        && speClass.isAssignableFrom(X509EncodedKeySpec.class))
+      return new X509EncodedKeySpec(key.getEncoded());
+    else
+      throw new InvalidKeySpecException();
+  }
+
+  public Key engineTranslateKey(Key key) throws InvalidKeyException
+  {
+    throw new InvalidKeyException("translating keys not supported");
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/GnuDHPublicKey.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/GnuDHPublicKey.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/GnuDHPublicKey.java	Wed Nov 10 23:34:59 2004
@@ -0,0 +1,117 @@
+/* GnuDHPublicKey.java -- A Diffie-Hellman public key.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.math.BigInteger;
+
+import java.util.ArrayList;
+
+import javax.crypto.interfaces.DHPublicKey;
+import javax.crypto.spec.DHParameterSpec;
+
+import gnu.java.security.OID;
+import gnu.java.security.der.BitString;
+import gnu.java.security.der.DER;
+import gnu.java.security.der.DERValue;
+import gnu.java.security.der.DERWriter;
+
+public class GnuDHPublicKey implements DHPublicKey
+{
+
+  // Fields.
+  // -------------------------------------------------------------------------
+
+  private byte[] encoded;
+  private final DHParameterSpec params;
+  private final BigInteger Y;
+  private final BigInteger q;
+
+  // Constructor.
+  // -------------------------------------------------------------------------
+
+  public GnuDHPublicKey(DHParameterSpec params, BigInteger Y, BigInteger q)
+  {
+    this.params = params;
+    this.Y = Y;
+    this.q = q;
+  }
+
+  // Instance methods.
+  // -------------------------------------------------------------------------
+
+  public BigInteger getY()
+  {
+    return Y;
+  }
+
+  public DHParameterSpec getParams()
+  {
+    return params;
+  }
+
+  public String getAlgorithm()
+  {
+    return "DH";
+  }
+
+  public String getFormat()
+  {
+    return "X.509";
+  }
+
+  public byte[] getEncoded()
+  {
+    if (encoded != null)
+      return (byte[]) encoded.clone();
+    ArrayList spki = new ArrayList(2);
+    ArrayList alg = new ArrayList(2);
+    alg.add(new DERValue(DER.OBJECT_IDENTIFIER, new OID("1.2.840.10046.2.1")));
+    ArrayList param = new ArrayList(3);
+    param.add(new DERValue(DER.INTEGER, params.getP()));
+    param.add(new DERValue(DER.INTEGER, params.getG()));
+    param.add(new DERValue(DER.INTEGER, q));
+    alg.add(new DERValue(DER.CONSTRUCTED|DER.SEQUENCE, param));
+    spki.add(new DERValue(DER.CONSTRUCTED|DER.SEQUENCE, alg));
+    spki.add(new DERValue(DER.BIT_STRING, new BitString(Y.toByteArray())));
+    encoded = new DERValue(DER.CONSTRUCTED|DER.SEQUENCE, spki).getEncoded();
+    if (encoded != null)
+      return (byte[]) encoded.clone();
+    return null;
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/GnuRSAPrivateKey.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/GnuRSAPrivateKey.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/GnuRSAPrivateKey.java	Wed Nov 10 23:34:59 2004
@@ -0,0 +1,166 @@
+/* GnuRSAPrivateKey.java -- GNU RSA private key.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.math.BigInteger;
+
+import java.security.interfaces.RSAPrivateCrtKey;
+import java.security.spec.RSAPrivateCrtKeySpec;
+
+import java.util.ArrayList;
+
+import gnu.java.security.OID;
+import gnu.java.security.der.DER;
+import gnu.java.security.der.DERValue;
+
+class GnuRSAPrivateKey implements RSAPrivateCrtKey
+{
+
+  // Fields.
+  // -------------------------------------------------------------------------
+
+  private final RSAPrivateCrtKeySpec spec;
+  private byte[] encodedKey;
+
+  // Constructor.
+  // -------------------------------------------------------------------------
+
+  public GnuRSAPrivateKey(RSAPrivateCrtKeySpec spec)
+  {
+    this.spec = spec;
+  }
+
+  // Instance methods.
+  // -------------------------------------------------------------------------
+
+  public BigInteger getModulus()
+  {
+    return spec.getModulus();
+  }
+
+  public BigInteger getPrivateExponent()
+  {
+    return spec.getPrivateExponent();
+  }
+
+  public BigInteger getCrtCoefficient()
+  {
+    return spec.getCrtCoefficient();
+  }
+
+  public BigInteger getPrimeExponentP()
+  {
+    return spec.getPrimeExponentP();
+  }
+
+  public BigInteger getPrimeExponentQ()
+  {
+    return spec.getPrimeExponentQ();
+  }
+
+  public BigInteger getPrimeP()
+  {
+    return spec.getPrimeP();
+  }
+
+  public BigInteger getPrimeQ()
+  {
+    return spec.getPrimeQ();
+  }
+
+  public BigInteger getPublicExponent()
+  {
+    return spec.getPublicExponent();
+  }
+
+  public String getAlgorithm()
+  {
+    return "RSA";
+  }
+
+  public String getFormat()
+  {
+    return "PKCS#8";
+  }
+
+  /**
+   * The encoded form is:
+   *
+   * <pre>
+   * RSAPrivateKey ::= SEQUENCE {
+   *   version Version,
+   *   modulus INTEGER, -- n
+   *   publicExponent INTEGER, -- e
+   *   privateExponent INTEGER, -- d
+   *   prime1 INTEGER, -- p
+   *   prime2 INTEGER, -- q
+   *   exponent1 INTEGER, -- d mod (p-1)
+   *   exponent2 INTEGER, -- d mod (q-1)
+   *   coefficient INTEGER -- (inverse of q) mod p }
+   * </pre>
+   *
+   * <p>Which is in turn encoded in a PrivateKeyInfo structure from PKCS#8.
+   */
+  public byte[] getEncoded()
+  {
+    if (encodedKey != null)
+      return (byte[]) encodedKey.clone();
+    ArrayList key = new ArrayList(9);
+    key.add(new DERValue(DER.INTEGER, BigInteger.ZERO));
+    key.add(new DERValue(DER.INTEGER, getModulus()));
+    key.add(new DERValue(DER.INTEGER, getPublicExponent()));
+    key.add(new DERValue(DER.INTEGER, getPrivateExponent()));
+    key.add(new DERValue(DER.INTEGER, getPrimeP()));
+    key.add(new DERValue(DER.INTEGER, getPrimeQ()));
+    key.add(new DERValue(DER.INTEGER, getPrimeExponentP()));
+    key.add(new DERValue(DER.INTEGER, getPrimeExponentQ()));
+    key.add(new DERValue(DER.INTEGER, getCrtCoefficient()));
+    DERValue pk = new DERValue(DER.SEQUENCE|DER.CONSTRUCTED, key);
+    ArrayList pki = new ArrayList(3);
+    pki.add(new DERValue(DER.INTEGER, BigInteger.ZERO));
+    ArrayList alg = new ArrayList(2);
+    alg.add(new DERValue(DER.OBJECT_IDENTIFIER,
+                         new OID("1.2.840.113549.1.1.1")));
+    alg.add(new DERValue(DER.NULL, null));
+    pki.add(new DERValue(DER.CONSTRUCTED|DER.SEQUENCE, alg));
+    pki.add(new DERValue(DER.OCTET_STRING, pk.getEncoded()));
+    encodedKey = new DERValue(DER.SEQUENCE|DER.CONSTRUCTED, pki).getEncoded();
+    return (byte[]) encodedKey.clone();
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/GnuRSAPublicKey.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/GnuRSAPublicKey.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/GnuRSAPublicKey.java	Wed Nov 10 23:34:59 2004
@@ -0,0 +1,109 @@
+/* GnuRSAPublicKey.java -- GNU RSA public key.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.math.BigInteger;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.RSAPublicKeySpec;
+import java.util.ArrayList;
+
+import gnu.java.security.OID;
+import gnu.java.security.der.BitString;
+import gnu.java.security.der.DER;
+import gnu.java.security.der.DERValue;
+
+class GnuRSAPublicKey implements RSAPublicKey
+{
+
+  // Fields.
+  // -------------------------------------------------------------------------
+
+  private final RSAPublicKeySpec spec;
+  private byte[] encodedKey;
+
+  // Constructor.
+  // -------------------------------------------------------------------------
+
+  public GnuRSAPublicKey(RSAPublicKeySpec spec)
+  {
+    this.spec = spec;
+  }
+
+  // Instance methods.
+  // -------------------------------------------------------------------------
+
+  public BigInteger getModulus()
+  {
+    return spec.getModulus();
+  }
+
+  public BigInteger getPublicExponent()
+  {
+    return spec.getPublicExponent();
+  }
+
+  public String getAlgorithm()
+  {
+    return "RSA";
+  }
+
+  public String getFormat()
+  {
+    return "X.509";
+  }
+
+  public byte[] getEncoded()
+  {
+    if (encodedKey != null)
+      return (byte[]) encodedKey.clone();
+    ArrayList key = new ArrayList(2);
+    key.add(new DERValue(DER.INTEGER, getModulus()));
+    key.add(new DERValue(DER.INTEGER, getPublicExponent()));
+    DERValue rsapk = new DERValue(DER.SEQUENCE|DER.CONSTRUCTED, key);
+    ArrayList alg = new ArrayList(2);
+    alg.add(new DERValue(DER.OBJECT_IDENTIFIER,
+                         new OID("1.2.840.113549.1.1.1")));
+    alg.add(new DERValue(DER.NULL, null));
+    ArrayList spki = new ArrayList(2);
+    spki.add(new DERValue(DER.SEQUENCE|DER.CONSTRUCTED, alg));
+    spki.add(new DERValue(DER.BIT_STRING, new BitString(rsapk.getEncoded())));
+    encodedKey = new DERValue(DER.SEQUENCE|DER.CONSTRUCTED, spki).getEncoded();
+    return (byte[]) encodedKey.clone();
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/MD2withRSA.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/MD2withRSA.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/MD2withRSA.java	Wed Nov 10 23:34:59 2004
@@ -0,0 +1,54 @@
+/* MD2withRSA.java -- MD2 with RSA encryption signatures.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class MD2withRSA extends RSA
+{
+
+  // Constructor.
+  // -------------------------------------------------------------------------
+
+  public MD2withRSA() throws NoSuchAlgorithmException
+  {
+    super(MessageDigest.getInstance("MD2"), DIGEST_ALGORITHM.getChild(2));
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/MD4withRSA.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/MD4withRSA.java,v
VERS: 1.1
***************
--- /dev/null	Sun Aug  4 19:57:58 2002
+++ kaffe/libraries/javalib/gnu/java/security/provider/MD4withRSA.java	Wed Nov 10 23:34:59 2004
@@ -0,0 +1,54 @@
+/* MD4withRSA.java -- MD4 with RSA encryption signatures.
+   Copyright (C) 2004  Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.java.security.provider;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+public class MD4withRSA extends RSA
+{
+
+  // Constructor.
+  // -------------------------------------------------------------------------
+
+  public MD4withRSA() throws NoSuchAlgorithmException
+  {
+    super(MessageDigest.getInstance("MD4"), DIGEST_ALGORITHM.getChild(4));
+  }
+}
===================================================================
Checking out kaffe/libraries/javalib/gnu/java/security/provider/MD5withRSA.java
RCS:  /home/cvs/kaffe/kaffe/libraries/javalib/gnu/java/security/provider/MD5withRSA.java,v

*** Patch too long, truncated ***




More information about the kaffe mailing list