diff options
Diffstat (limited to 'libjava/java/security')
35 files changed, 1374 insertions, 50 deletions
diff --git a/libjava/java/security/AlgorithmParameterGeneratorSpi.java b/libjava/java/security/AlgorithmParameterGeneratorSpi.java new file mode 100644 index 0000000..476e1bb --- /dev/null +++ b/libjava/java/security/AlgorithmParameterGeneratorSpi.java @@ -0,0 +1,25 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 7, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Stubbed. + */ + +// JDK1.2 +public abstract class AlgorithmParameterGeneratorSpi +{ + // FIXME: Stubbed. +} diff --git a/libjava/java/security/DigestException.java b/libjava/java/security/DigestException.java new file mode 100644 index 0000000..8c6b2db --- /dev/null +++ b/libjava/java/security/DigestException.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class DigestException extends GeneralSecurityException +{ + public DigestException() + { + super(); + } + + public DigestException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/GeneralSecurityException.java b/libjava/java/security/GeneralSecurityException.java new file mode 100644 index 0000000..9d30737 --- /dev/null +++ b/libjava/java/security/GeneralSecurityException.java @@ -0,0 +1,33 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public class GeneralSecurityException extends Exception +{ + public GeneralSecurityException() + { + super(); + } + + public GeneralSecurityException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/InvalidAlgorithmParameterException.java b/libjava/java/security/InvalidAlgorithmParameterException.java new file mode 100644 index 0000000..35063a9 --- /dev/null +++ b/libjava/java/security/InvalidAlgorithmParameterException.java @@ -0,0 +1,33 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 2, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public class InvalidAlgorithmParameterException extends GeneralSecurityException +{ + public InvalidAlgorithmParameterException() + { + super(); + } + + public InvalidAlgorithmParameterException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/InvalidKeyException.java b/libjava/java/security/InvalidKeyException.java new file mode 100644 index 0000000..3a9a69a --- /dev/null +++ b/libjava/java/security/InvalidKeyException.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class InvalidKeyException extends KeyException +{ + public InvalidKeyException() + { + super(); + } + + public InvalidKeyException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/InvalidParameterException.java b/libjava/java/security/InvalidParameterException.java new file mode 100644 index 0000000..5ece012 --- /dev/null +++ b/libjava/java/security/InvalidParameterException.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class InvalidParameterException extends IllegalArgumentException +{ + public InvalidParameterException() + { + super(); + } + + public InvalidParameterException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/Key.java b/libjava/java/security/Key.java new file mode 100644 index 0000000..4bf32c5 --- /dev/null +++ b/libjava/java/security/Key.java @@ -0,0 +1,29 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; +import java.io.Serializable; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface Key extends Serializable +{ + // FIXME: need to set this at some point when serialization is implemented. + public static final long serialVersionUID; + + public String getAlgorithm(); + public String getFormat(); + public byte[] getEncoded(); +} diff --git a/libjava/java/security/KeyException.java b/libjava/java/security/KeyException.java new file mode 100644 index 0000000..634d8ce --- /dev/null +++ b/libjava/java/security/KeyException.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class KeyException extends GeneralSecurityException +{ + public KeyException() + { + super(); + } + + public KeyException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/KeyPair.java b/libjava/java/security/KeyPair.java new file mode 100644 index 0000000..b8b2934 --- /dev/null +++ b/libjava/java/security/KeyPair.java @@ -0,0 +1,41 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date February 9, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class KeyPair /* FIXME: implements serializable */ +{ + public KeyPair (PublicKey publicKey, PrivateKey privateKey) + { + this.publicKey = publicKey; + this.privateKey = privateKey; + } + + public PublicKey getPublic () + { + return publicKey; + } + + public PrivateKey getPrivate () + { + return privateKey; + } + + // The keys. + private PublicKey publicKey; + private PrivateKey privateKey; +} diff --git a/libjava/java/security/KeyPairGenerator.java b/libjava/java/security/KeyPairGenerator.java new file mode 100644 index 0000000..7954c32 --- /dev/null +++ b/libjava/java/security/KeyPairGenerator.java @@ -0,0 +1,86 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 10, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Partially implemented to the 1.1 spec. + * It is known not to comply with the 1.2 spec. + */ + +public abstract class KeyPairGenerator extends KeyPairGeneratorSpi +{ + protected KeyPairGenerator(String algorithm) + { + name = algorithm; + } + + public static KeyPairGenerator getInstance(String algorithm) + throws NoSuchAlgorithmException + { + String name = "KeyPairGenerator." + algorithm; + Provider[] provs = Security.getProviders(); + for (int i = 0; i < provs.length; ++i) + { + String val = provs[i].getProperty(name); + if (val != null) + { + try + { + return (KeyPairGenerator) Class.forName(val).newInstance(); + } + catch (Throwable _) + { + // We just ignore failures. + } + } + } + + throw new NoSuchAlgorithmException(algorithm); + } + + public static KeyPairGenerator getInstance(String algorithm, String provider) + throws NoSuchAlgorithmException, NoSuchProviderException + { + String name = "KeyPairGenerator." + algorithm; + Provider p = Security.getProvider(provider); + if (p == null) + throw new NoSuchProviderException(provider); + String val = p.getProperty(name); + if (val != null) + { + try + { + return (KeyPairGenerator) Class.forName(val).newInstance(); + } + catch (Throwable _) + { + // Nothing. + } + } + + throw new NoSuchAlgorithmException(algorithm); + } + + public String getAlgorithm() + { + return name; + } + + public abstract void initialize(int strength, SecureRandom random); + public abstract KeyPair generateKeyPair(); + + // Algorithm name. + private String name; +} diff --git a/libjava/java/security/KeyPairGeneratorSpi.java b/libjava/java/security/KeyPairGeneratorSpi.java new file mode 100644 index 0000000..46520b4 --- /dev/null +++ b/libjava/java/security/KeyPairGeneratorSpi.java @@ -0,0 +1,26 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 7, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Partially implemented. + */ + +// JDK1.2 +public abstract class KeyPairGeneratorSpi +{ + public abstract void initialize(int keysize, SecureRandom random); + public abstract KeyPair generateKeyPair(); +} diff --git a/libjava/java/security/MessageDigest.java b/libjava/java/security/MessageDigest.java index 67e4911..04546cd 100644 --- a/libjava/java/security/MessageDigest.java +++ b/libjava/java/security/MessageDigest.java @@ -1,6 +1,6 @@ // MessageDigest.java -/* Copyright (C) 1999 Free Software Foundation +/* Copyright (C) 2000 Free Software Foundation This file is part of libgcj. @@ -10,55 +10,135 @@ details. */ package java.security; -// FIXME: This is just a stub for a proper implementation. +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date February 11, 2000. + */ + +/** + * Written using on-line Java Platform 1.1 API Specification. + * Status: Believed complete and correct to 1.1 spec. + * It is known not to comply with the 1.2 spec. + */ + public abstract class MessageDigest { - private static final byte[] dummy = { 0 }; - - public static MessageDigest getInstance(String algorithm) - throws NoSuchAlgorithmException - { - Object obj; - - try { - obj = Class.forName(algorithm).newInstance(); - } catch (Exception e) { - throw new NoSuchAlgorithmException("algorithm " - + algorithm - + " not available."); - } - - return (MessageDigest) obj; - } - - public void update(byte input) - { - // FIXME - } - - public void update(byte[] input, int offset, int len) - { - // FIXME - } - - public void update(byte[] input) - { - // FIXME - } - - public byte[] digest() - { - return dummy; - } - - public byte[] digest(byte[] input) - { - update(input); - return digest(); - } - - public void reset() - { - // FIXME - } + protected MessageDigest (String algorithm) + { + name = algorithm; + } + + public static MessageDigest getInstance (String algorithm) + throws NoSuchAlgorithmException + { + String name = "MessageDigest." + algorithm; + Provider[] provs = Security.getProviders (); + for (int i = 0; i < provs.length; ++i) + { + String val = provs[i].getProperty (name); + if (val != null) + { + try + { + return (MessageDigest) Class.forName(val).newInstance (); + } + catch (Throwable _) + { + // We just ignore failures. + } + } + } + + throw new NoSuchAlgorithmException (algorithm); + } + + public static MessageDigest getInstance (String algorithm, String provider) + throws NoSuchAlgorithmException, NoSuchProviderException + { + String name = "MessageDigest." + algorithm; + Provider p = Security.getProvider (provider); + if (p == null) + throw new NoSuchProviderException (provider); + String val = p.getProperty (name); + if (val != null) + { + try + { + return (MessageDigest) Class.forName(val).newInstance (); + } + catch (Throwable _) + { + // Nothing. + } + } + + throw new NoSuchAlgorithmException (algorithm); + } + + public void update (byte input) + { + engineUpdate (input); + } + + public void update (byte[] input, int offset, int len) + { + engineUpdate (input, offset, len); + } + + public void update (byte[] input) + { + engineUpdate (input, 0, input.length); + } + + public byte[] digest () + { + return engineDigest (); + } + + public byte[] digest (byte[] input) + { + update (input); + return engineDigest (); + } + + public String toString () + { + // There is no spec for this. + return "[MessageDigest: " + name + "]"; + } + + public static boolean isEqual (byte[] digesta, byte[] digestb) + { + if (digesta == digestb) + return true; + if (digesta.length != digestb.length) + return false; + for (int i = digesta.length - 1; i >= 0; --i) + if (digesta[i] != digestb[i]) + return false; + return true; + } + + public void reset () + { + engineReset (); + } + + public final String getAlgorithm () + { + return name; + } + + protected abstract void engineUpdate (byte input); + protected abstract void engineUpdate (byte input[], int offset, int len); + protected abstract byte[] engineDigest (); + protected abstract void engineReset (); + + public Object clone() throws CloneNotSupportedException + { + return super.clone (); + } + + // Algorithm name. + private String name; } diff --git a/libjava/java/security/NoSuchProviderException.java b/libjava/java/security/NoSuchProviderException.java new file mode 100644 index 0000000..d7d0c85 --- /dev/null +++ b/libjava/java/security/NoSuchProviderException.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 4, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class NoSuchProviderException extends GeneralSecurityException +{ + public NoSuchProviderException() + { + super(); + } + + public NoSuchProviderException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/PrivateKey.java b/libjava/java/security/PrivateKey.java new file mode 100644 index 0000000..13b9be3 --- /dev/null +++ b/libjava/java/security/PrivateKey.java @@ -0,0 +1,24 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface PrivateKey extends Key +{ + // This interface contains no methods or constants. It merely serves + // to group (and provide type safety for) all private key interfaces. +} diff --git a/libjava/java/security/Provider.java b/libjava/java/security/Provider.java new file mode 100644 index 0000000..ac2cd78 --- /dev/null +++ b/libjava/java/security/Provider.java @@ -0,0 +1,53 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; +import java.util.Properties; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 7, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Partially implemented. + */ + +public abstract class Provider extends Properties +{ + // FIXME: Check the following property values against specs! + protected Provider(String name, double version, String info) + { + super(); + put("java.security.Provider.Name", name); + put("java.security.Provider.Version", Double.toString(version)); + put("java.security.Provider.Info", info); + } + + public String getName() + { + return getProperty("java.security.Provider.Name"); + } + + public double getVersion() + { + return Double.valueOf(getProperty("java.security.Provider.Version")).doubleValue(); + } + + public String getInfo() + { + return getProperty("java.security.Provider.Info"); + } + + public String toString() + { + // FIXME: Check this string against the spec. + return getName() + " " + getProperty("java.security.Provider.Version"); + } +} diff --git a/libjava/java/security/PublicKey.java b/libjava/java/security/PublicKey.java new file mode 100644 index 0000000..5c30c62 --- /dev/null +++ b/libjava/java/security/PublicKey.java @@ -0,0 +1,24 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface PublicKey extends Key +{ + // This interface contains no methods or constants. It merely serves + // to group (and provide type safety for) all private key interfaces. +} diff --git a/libjava/java/security/SecureClassLoader.java b/libjava/java/security/SecureClassLoader.java index 4a0b60b..f49f8ac 100644 --- a/libjava/java/security/SecureClassLoader.java +++ b/libjava/java/security/SecureClassLoader.java @@ -8,6 +8,7 @@ details. */ package java.security; +// JDK1.2 public class SecureClassLoader extends ClassLoader { public SecureClassLoader () diff --git a/libjava/java/security/SecureRandom.java b/libjava/java/security/SecureRandom.java new file mode 100644 index 0000000..6f396dc --- /dev/null +++ b/libjava/java/security/SecureRandom.java @@ -0,0 +1,25 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; +import java.util.Random; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 7, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Stubbed. + */ + +public class SecureRandom extends Random +{ + // FIXME: Stubbed. +} diff --git a/libjava/java/security/Security.java b/libjava/java/security/Security.java new file mode 100644 index 0000000..87a0088 --- /dev/null +++ b/libjava/java/security/Security.java @@ -0,0 +1,107 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +import java.util.Enumeration; +import java.util.Properties; +import java.util.Vector; + +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date February 8, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Still missing the deprecated getAlgorithmProperty method. + */ + +public final class Security +{ + public static int insertProviderAt (Provider provider, int position) + { + SecurityManager sm = System.getSecurityManager (); + if (sm != null) + { + // FIXME: need SecurityPermission. + // sm.checkSecurityAccess ("insertProvider." + provider.getName ()); + } + if (providers.indexOf (provider) != -1) + return -1; + if (position > providers.size ()) + position = providers.size (); + providers.insertElementAt (provider, position); + return providers.indexOf (provider); + } + + public static int addProvider (Provider provider) + { + return insertProviderAt (provider, providers.size ()); + } + + public static void removeProvider (String name) + { + SecurityManager sm = System.getSecurityManager (); + if (sm != null) + { + // FIXME: need SecurityPermission. + // sm.checkSecurityAccess ("removeProvider." + name); + } + Provider p = getProvider (name); + if (p != null) + providers.removeElement (p); + } + + public static Provider[] getProviders () + { + Provider[] r = new Provider[providers.size ()]; + providers.copyInto (r); + return r; + } + + public static Provider getProvider (String name) + { + Enumeration e = providers.elements (); + while (e.hasMoreElements ()) + { + Provider p = (Provider) e.nextElement (); + if (name.equals (p.getName ())) + return p; + } + return null; + } + + public static String getProperty (String key) + { + SecurityManager sm = System.getSecurityManager (); + if (sm != null) + { + // FIXME: need SecurityPermission. + // sm.checkSecurityAccess ("getProperty." + key); + } + return props.getProperty (key); + } + + public static void setProperty (String key, String value) + { + SecurityManager sm = System.getSecurityManager (); + if (sm != null) + { + // FIXME: need SecurityPermission. + // sm.checkSecurityAccess ("setProperty." + key); + } + props.setProperty (key, value); + } + + // The providers we list. + private static Vector providers = new Vector (); + + // Security propertiesl + private static Properties props = new Properties (); +} diff --git a/libjava/java/security/Signature.java b/libjava/java/security/Signature.java new file mode 100644 index 0000000..760f625 --- /dev/null +++ b/libjava/java/security/Signature.java @@ -0,0 +1,173 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date February 11, 2000. + */ + +/** + * Written using on-line Java Platform 1.1 API Specification. + * Status: Believed complete and correct to 1.1 spec. + * It is known not to comply with the 1.2 spec. + */ + +public abstract class Signature +{ + protected Signature (String name) + { + state = UNINITIALIZED; + this.name = name; + } + + public static Signature getInstance (String algorithm) + throws NoSuchAlgorithmException + { + String name = "Signature." + algorithm; + Provider[] provs = Security.getProviders (); + for (int i = 0; i < provs.length; ++i) + { + String val = provs[i].getProperty (name); + if (val != null) + { + try + { + return (Signature) Class.forName(val).newInstance (); + } + catch (Throwable _) + { + // We just ignore failures. + } + } + } + + throw new NoSuchAlgorithmException (algorithm); + } + + public static Signature getInstance (String algorithm, String provider) + throws NoSuchAlgorithmException, NoSuchProviderException + { + String name = "Signature." + algorithm; + Provider p = Security.getProvider (provider); + if (p == null) + throw new NoSuchProviderException (provider); + String val = p.getProperty (name); + if (val != null) + { + try + { + return (Signature) Class.forName(val).newInstance (); + } + catch (Throwable _) + { + // Nothing. + } + } + + throw new NoSuchAlgorithmException (algorithm); + } + + public final void initVerify (PublicKey publicKey) + throws InvalidKeyException + { + engineInitVerify (publicKey); + } + + public final void initSign (PrivateKey privateKey) + throws InvalidKeyException + { + engineInitSign (privateKey); + } + + public final byte[] sign () + throws SignatureException + { + return engineSign (); + } + + public final boolean verify (byte[] signature) + throws SignatureException + { + return engineVerify (signature); + } + + public final void update (byte b) + throws SignatureException + { + engineUpdate (b); + } + + public final void update (byte[] data) + throws SignatureException + { + engineUpdate (data, 0, data.length); + } + + public final void update (byte[] data, int off, int len) + throws SignatureException + { + engineUpdate (data, off, len); + } + + public final String getAlgorithm () + { + return name; + } + + public String toString () + { + // There is no spec for this. FIXME: this is a bad choice. + return name + "; state = " + state; + } + + public final void setParameter (String param, Object value) + throws InvalidParameterException + { + engineSetParameter (param, value); + } + + public final Object getParameter (String param) + throws InvalidParameterException + { + return engineGetParameter (param); + } + + protected abstract void engineInitVerify (PublicKey publicKey) + throws InvalidKeyException; + protected abstract void engineInitSign (PrivateKey privateKey) + throws InvalidKeyException; + protected abstract void engineUpdate (byte b) + throws SignatureException; + protected abstract void engineUpdate (byte[] b, int off, int len) + throws SignatureException; + protected abstract byte[] engineSign () + throws SignatureException; + protected abstract boolean engineVerify (byte[] sigBytes) + throws SignatureException; + protected abstract void engineSetParameter (String param, Object value) + throws InvalidParameterException; + protected abstract Object engineGetParameter (String param) + throws InvalidParameterException; + + public Object clone() throws CloneNotSupportedException + { + return super.clone (); + } + + protected static final int UNINITIALIZED = 0; + protected static final int SIGN = 2; + protected static final int VERIFY = 3; + + // Current state. + protected int state; + + // Name of this object. + private String name; +} diff --git a/libjava/java/security/SignatureException.java b/libjava/java/security/SignatureException.java new file mode 100644 index 0000000..dc1c87a --- /dev/null +++ b/libjava/java/security/SignatureException.java @@ -0,0 +1,32 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/** + * Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public class SignatureException extends GeneralSecurityException +{ + public SignatureException() + { + super(); + } + + public SignatureException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/interfaces/DSAKey.java b/libjava/java/security/interfaces/DSAKey.java new file mode 100644 index 0000000..3920d7b --- /dev/null +++ b/libjava/java/security/interfaces/DSAKey.java @@ -0,0 +1,23 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface DSAKey +{ + public DSAParams getParams(); +} diff --git a/libjava/java/security/interfaces/DSAParams.java b/libjava/java/security/interfaces/DSAParams.java new file mode 100644 index 0000000..8483bd5 --- /dev/null +++ b/libjava/java/security/interfaces/DSAParams.java @@ -0,0 +1,26 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; +import java.math.BigInteger; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface DSAParams +{ + public BigInteger getP(); + public BigInteger getQ(); + public BigInteger getG(); +} diff --git a/libjava/java/security/interfaces/DSAPrivateKey.java b/libjava/java/security/interfaces/DSAPrivateKey.java new file mode 100644 index 0000000..833ee3a --- /dev/null +++ b/libjava/java/security/interfaces/DSAPrivateKey.java @@ -0,0 +1,27 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; +import java.security.PrivateKey; +import java.math.BigInteger; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface DSAPrivateKey extends DSAKey, PrivateKey +{ + public static final long serialVersionUID; + + public BigInteger getX(); +} diff --git a/libjava/java/security/interfaces/DSAPublicKey.java b/libjava/java/security/interfaces/DSAPublicKey.java new file mode 100644 index 0000000..48949de --- /dev/null +++ b/libjava/java/security/interfaces/DSAPublicKey.java @@ -0,0 +1,27 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; +import java.security.PublicKey; +import java.math.BigInteger; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +public interface DSAPublicKey extends DSAKey, PublicKey +{ + public static final long serialVersionUID; + + public BigInteger getY(); +} diff --git a/libjava/java/security/interfaces/RSAPrivateCrtKey.java b/libjava/java/security/interfaces/RSAPrivateCrtKey.java new file mode 100644 index 0000000..cca294a --- /dev/null +++ b/libjava/java/security/interfaces/RSAPrivateCrtKey.java @@ -0,0 +1,30 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; +import java.math.BigInteger; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public interface RSAPrivateCrtKey extends RSAPrivateKey +{ + public BigInteger getPublicExponent(); + public BigInteger getPrimeP(); + public BigInteger getPrimeQ(); + public BigInteger getPrimeExponentP(); + public BigInteger getPrimeExponentQ(); + public BigInteger getCrtCoefficient(); +} diff --git a/libjava/java/security/interfaces/RSAPrivateKey.java b/libjava/java/security/interfaces/RSAPrivateKey.java new file mode 100644 index 0000000..4c16b05 --- /dev/null +++ b/libjava/java/security/interfaces/RSAPrivateKey.java @@ -0,0 +1,27 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; +import java.security.PrivateKey; +import java.math.BigInteger; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public interface RSAPrivateKey extends PrivateKey +{ + public BigInteger getModulus(); + public BigInteger getPrivateExponent(); +} diff --git a/libjava/java/security/interfaces/RSAPublicKey.java b/libjava/java/security/interfaces/RSAPublicKey.java new file mode 100644 index 0000000..0bee88d --- /dev/null +++ b/libjava/java/security/interfaces/RSAPublicKey.java @@ -0,0 +1,27 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.interfaces; +import java.security.PublicKey; +import java.math.BigInteger; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public interface RSAPublicKey extends PublicKey +{ + public BigInteger getModulus(); + public BigInteger getPublicExponent(); +} diff --git a/libjava/java/security/spec/AlgorithmParameterSpec.java b/libjava/java/security/spec/AlgorithmParameterSpec.java new file mode 100644 index 0000000..5781623 --- /dev/null +++ b/libjava/java/security/spec/AlgorithmParameterSpec.java @@ -0,0 +1,25 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public interface AlgorithmParameterSpec +{ + // This interface contains no methods or constants. Its only purpose is + // to group (and provide type safety for) all key specifications. +} diff --git a/libjava/java/security/spec/InvalidKeySpecException.java b/libjava/java/security/spec/InvalidKeySpecException.java new file mode 100644 index 0000000..632fd25 --- /dev/null +++ b/libjava/java/security/spec/InvalidKeySpecException.java @@ -0,0 +1,33 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; +import java.security.GeneralSecurityException; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public class InvalidKeySpecException extends GeneralSecurityException +{ + public InvalidKeySpecException() + { + super(); + } + + public InvalidKeySpecException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/spec/InvalidParameterSpecException.java b/libjava/java/security/spec/InvalidParameterSpecException.java new file mode 100644 index 0000000..1e2aff5 --- /dev/null +++ b/libjava/java/security/spec/InvalidParameterSpecException.java @@ -0,0 +1,33 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; +import java.security.GeneralSecurityException; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public class InvalidParameterSpecException extends GeneralSecurityException +{ + public InvalidParameterSpecException() + { + super(); + } + + public InvalidParameterSpecException(String msg) + { + super(msg); + } +} diff --git a/libjava/java/security/spec/KeySpec.java b/libjava/java/security/spec/KeySpec.java new file mode 100644 index 0000000..75e50f9 --- /dev/null +++ b/libjava/java/security/spec/KeySpec.java @@ -0,0 +1,25 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 1, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Believed complete and correct. + */ + +// JDK1.2 +public interface KeySpec +{ + // This interface contains no methods or constants. Its only purpose is + // to group (and provide type safety for) all key specifications. +} diff --git a/libjava/java/security/spec/RSAPrivateCrtKeySpec.java b/libjava/java/security/spec/RSAPrivateCrtKeySpec.java new file mode 100644 index 0000000..6a31163 --- /dev/null +++ b/libjava/java/security/spec/RSAPrivateCrtKeySpec.java @@ -0,0 +1,23 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 7, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Stubbed. + */ + +// JDK1.2 +public class RSAPrivateCrtKeySpec extends RSAPrivateKeySpec +{ +} diff --git a/libjava/java/security/spec/RSAPrivateKeySpec.java b/libjava/java/security/spec/RSAPrivateKeySpec.java new file mode 100644 index 0000000..4f38a2d --- /dev/null +++ b/libjava/java/security/spec/RSAPrivateKeySpec.java @@ -0,0 +1,23 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 7, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Stubbed. + */ + +// JDK1.2 +public class RSAPrivateKeySpec implements KeySpec +{ +} diff --git a/libjava/java/security/spec/RSAPublicKeySpec.java b/libjava/java/security/spec/RSAPublicKeySpec.java new file mode 100644 index 0000000..0bdcd22 --- /dev/null +++ b/libjava/java/security/spec/RSAPublicKeySpec.java @@ -0,0 +1,23 @@ +/* Copyright (C) 2000 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.security.spec; + +/** + * @author Warren Levy <warrenl@cygnus.com> + * @date February 10, 2000. + */ + +/* Written using on-line Java Platform 1.2 API Specification. + * Status: Stubbed. + */ + +// JDK1.2 +public class RSAPublicKeySpec implements KeySpec +{ +} |