diff options
| author | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-08-14 23:12:35 +0000 |
|---|---|---|
| committer | mark <mark@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-08-14 23:12:35 +0000 |
| commit | ffde862e033a0825e1e9972a89c0f1f80b261a8e (patch) | |
| tree | 97037d2c09c8384d80531f67ec36a01205df6bdb /libjava/classpath/gnu/javax/crypto/jce/keyring | |
| parent | b415ff10527e977c3758234fd930e2c027bfa17d (diff) | |
| download | ppe42-gcc-ffde862e033a0825e1e9972a89c0f1f80b261a8e.tar.gz ppe42-gcc-ffde862e033a0825e1e9972a89c0f1f80b261a8e.zip | |
2006-08-14 Mark Wielaard <mark@klomp.org>
Imported GNU Classpath 0.92
* HACKING: Add more importing hints. Update automake version
requirement.
* configure.ac (gconf-peer): New enable AC argument.
Add --disable-gconf-peer and --enable-default-preferences-peer
to classpath configure when gconf is disabled.
* scripts/makemake.tcl: Set gnu/java/util/prefs/gconf and
gnu/java/awt/dnd/peer/gtk to bc. Classify
gnu/java/security/Configuration.java as generated source file.
* gnu/java/lang/management/VMGarbageCollectorMXBeanImpl.java,
gnu/java/lang/management/VMMemoryPoolMXBeanImpl.java,
gnu/java/lang/management/VMClassLoadingMXBeanImpl.java,
gnu/java/lang/management/VMRuntimeMXBeanImpl.java,
gnu/java/lang/management/VMMemoryManagerMXBeanImpl.java,
gnu/java/lang/management/VMThreadMXBeanImpl.java,
gnu/java/lang/management/VMMemoryMXBeanImpl.java,
gnu/java/lang/management/VMCompilationMXBeanImpl.java: New VM stub
classes.
* java/lang/management/VMManagementFactory.java: Likewise.
* java/net/VMURLConnection.java: Likewise.
* gnu/java/nio/VMChannel.java: Likewise.
* java/lang/Thread.java (getState): Add stub implementation.
* java/lang/Class.java (isEnum): Likewise.
* java/lang/Class.h (isEnum): Likewise.
* gnu/awt/xlib/XToolkit.java (getClasspathTextLayoutPeer): Removed.
* javax/naming/spi/NamingManager.java: New override for StackWalker
functionality.
* configure, sources.am, Makefile.in, gcj/Makefile.in,
include/Makefile.in, testsuite/Makefile.in: Regenerated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116139 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/classpath/gnu/javax/crypto/jce/keyring')
| -rw-r--r-- | libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java | 266 |
1 files changed, 162 insertions, 104 deletions
diff --git a/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java b/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java index d2501f89374..4fcf2fde78b 100644 --- a/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java +++ b/libjava/classpath/gnu/javax/crypto/jce/keyring/GnuKeyring.java @@ -38,6 +38,7 @@ exception statement from your version. */ package gnu.javax.crypto.jce.keyring; +import gnu.java.security.Configuration; import gnu.java.security.Registry; import gnu.javax.crypto.keyring.GnuPrivateKeyring; import gnu.javax.crypto.keyring.GnuPublicKeyring; @@ -90,79 +91,100 @@ public class GnuKeyring public Enumeration engineAliases() { + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineAliases"); ensureLoaded(); Enumeration result; if (privateKR == null) result = Collections.enumeration(Collections.EMPTY_SET); - else - { - Set aliases = new HashSet(); - for (Enumeration e = privateKR.aliases(); e.hasMoreElements();) - { - String alias = (String) e.nextElement(); - if (alias != null) - aliases.add(alias); - } - - for (Enumeration e = publicKR.aliases(); e.hasMoreElements();) - { - String alias = (String) e.nextElement(); - if (alias != null) - aliases.add(alias); - } - - result = Collections.enumeration(aliases); - } - + else + { + Set aliases = new HashSet(); + for (Enumeration e = privateKR.aliases(); e.hasMoreElements();) + { + String alias = (String) e.nextElement(); + if (alias != null) + { + alias = alias.trim(); + if (alias.length() > 0) + { + if (Configuration.DEBUG) + log.fine("Adding alias (from private keyring): " + alias); + aliases.add(alias); + } + } + } + for (Enumeration e = publicKR.aliases(); e.hasMoreElements();) + { + String alias = (String) e.nextElement(); + if (alias != null) + { + alias = alias.trim(); + if (alias.length() > 0) + { + if (Configuration.DEBUG) + log.fine("Adding alias (from public keyring): " + alias); + aliases.add(alias); + } + } + } + if (Configuration.DEBUG) + log.fine("Will enumerate: " + aliases); + result = Collections.enumeration(aliases); + } + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineAliases"); return result; } public boolean engineContainsAlias(String alias) { - log.entering(this.getClass().getName(), "engineContainsAlias", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineContainsAlias", alias); ensureLoaded(); boolean inPrivateKR = privateKR.containsAlias(alias); - log.finest("inPrivateKR=" + inPrivateKR); + if (Configuration.DEBUG) + log.fine("inPrivateKR=" + inPrivateKR); boolean inPublicKR = publicKR.containsAlias(alias); - log.finest("inPublicKR=" + inPublicKR); + if (Configuration.DEBUG) + log.fine("inPublicKR=" + inPublicKR); boolean result = inPrivateKR || inPublicKR; - - log.exiting(this.getClass().getName(), "engineContainsAlias", - Boolean.valueOf(result)); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineContainsAlias", + Boolean.valueOf(result)); return result; } public void engineDeleteEntry(String alias) { - log.entering(this.getClass().getName(), "engineDeleteEntry", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineDeleteEntry", alias); ensureLoaded(); if (privateKR.containsAlias(alias)) privateKR.remove(alias); else if (publicKR.containsAlias(alias)) publicKR.remove(alias); - else - log.finer("Unknwon alias: " + alias); - - log.exiting(this.getClass().getName(), "engineDeleteEntry"); + else if (Configuration.DEBUG) + log.fine("Unknwon alias: " + alias); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineDeleteEntry"); } public Certificate engineGetCertificate(String alias) { - log.entering(this.getClass().getName(), "engineGetCertificate", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineGetCertificate", alias); ensureLoaded(); Certificate result = publicKR.getCertificate(alias); - - log.exiting(this.getClass().getName(), "engineGetCertificate", result); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineGetCertificate", result); return result; } public String engineGetCertificateAlias(Certificate cert) { - log.entering(this.getClass().getName(), "engineGetCertificateAlias", cert); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineGetCertificateAlias", cert); ensureLoaded(); String result = null; for (Enumeration aliases = publicKR.aliases(); aliases.hasMoreElements();) @@ -175,52 +197,64 @@ public class GnuKeyring break; } } - - log.exiting(this.getClass().getName(), "engineGetCertificateAlias", result); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineGetCertificateAlias", result); return result; } public void engineSetCertificateEntry(String alias, Certificate cert) + throws KeyStoreException { - log.entering(this.getClass().getName(), "engineSetCertificateEntry", - new Object[] { alias, cert }); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineSetCertificateEntry", + new Object[] { alias, cert }); ensureLoaded(); + if (privateKR.containsAlias(alias)) + throw new KeyStoreException("Alias [" + alias + + "] already exists and DOES NOT identify a " + + "Trusted Certificate Entry"); + if (publicKR.containsCertificate(alias)) + { + if (Configuration.DEBUG) + log.fine("Public keyring already contains Alias [" + alias + + "]. Will remove it"); + publicKR.remove(alias); + } publicKR.putCertificate(alias, cert); - - log.exiting(this.getClass().getName(), "engineSetCertificateEntry"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineSetCertificateEntry"); } public Certificate[] engineGetCertificateChain(String alias) { - log.entering(this.getClass().getName(), "engineGetCertificateChain", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineGetCertificateChain", alias); ensureLoaded(); Certificate[] result = privateKR.getCertPath(alias); - - log.exiting(this.getClass().getName(), "engineGetCertificateChain", result); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineGetCertificateChain", result); return result; } public Date engineGetCreationDate(String alias) { - log.entering(this.getClass().getName(), "engineGetCreationDate", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineGetCreationDate", alias); ensureLoaded(); Date result = getCreationDate(alias, privateKR); if (result == null) result = getCreationDate(alias, publicKR); - log.exiting(this.getClass().getName(), "engineGetCreationDate", result); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineGetCreationDate", result); return result; } public Key engineGetKey(String alias, char[] password) throws UnrecoverableKeyException { - log.entering(this.getClass().getName(), "engineGetKey", - String.valueOf(password)); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineGetKey", alias); ensureLoaded(); Key result = null; if (password == null) @@ -231,7 +265,9 @@ public class GnuKeyring else if (privateKR.containsPrivateKey(alias)) result = privateKR.getPrivateKey(alias, password); - log.exiting(this.getClass().getName(), "engineGetKey", result); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineGetKey", + result == null ? "null" : result.getClass().getName()); return result; } @@ -239,60 +275,73 @@ public class GnuKeyring Certificate[] chain) throws KeyStoreException { - log.entering(this.getClass().getName(), "engineSetKeyEntry", - new Object[] { alias, key, password, chain }); + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineSetKeyEntry", + new Object[] { alias, key.getClass().getName(), chain }); ensureLoaded(); + if (publicKR.containsAlias(alias)) + throw new KeyStoreException("Alias [" + alias + + "] already exists and DOES NOT identify a " + + "Key Entry"); if (key instanceof PublicKey) - privateKR.putPublicKey(alias, (PublicKey) key); + { + privateKR.remove(alias); + PublicKey pk = (PublicKey) key; + privateKR.putPublicKey(alias, pk); + } else { if (! (key instanceof PrivateKey) && ! (key instanceof SecretKey)) throw new KeyStoreException("cannot store keys of type " + key.getClass().getName()); + privateKR.remove(alias); privateKR.putCertPath(alias, chain); - log.finest("About to put private key in keyring..."); + if (Configuration.DEBUG) + log.fine("About to put private key in keyring..."); privateKR.putPrivateKey(alias, key, password); } - - log.exiting(this.getClass().getName(), "engineSetKeyEntry"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineSetKeyEntry"); } public void engineSetKeyEntry(String alias, byte[] key, Certificate[] chain) throws KeyStoreException { KeyStoreException x = new KeyStoreException("method not supported"); - log.throwing(this.getClass().getName(), "engineSetKeyEntry(3)", x); + if (Configuration.DEBUG) + log.throwing(this.getClass().getName(), "engineSetKeyEntry(3)", x); throw x; } public boolean engineIsCertificateEntry(String alias) { - log.entering(this.getClass().getName(), "engineIsCertificateEntry", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineIsCertificateEntry", alias); ensureLoaded(); boolean result = publicKR.containsCertificate(alias); - - log.exiting(this.getClass().getName(), "engineIsCertificateEntry", - Boolean.valueOf(result)); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineIsCertificateEntry", + Boolean.valueOf(result)); return result; } public boolean engineIsKeyEntry(String alias) { - log.entering(this.getClass().getName(), "engineIsKeyEntry", alias); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineIsKeyEntry", alias); ensureLoaded(); boolean result = privateKR.containsPublicKey(alias) || privateKR.containsPrivateKey(alias); - - log.exiting(this.getClass().getName(), "engineIsKeyEntry", - Boolean.valueOf(result)); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineIsKeyEntry", + Boolean.valueOf(result)); return result; } public void engineLoad(InputStream in, char[] password) throws IOException { - log.entering(this.getClass().getName(), "engineLoad", String.valueOf(password)); + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineLoad"); if (in != null) { if (! in.markSupported()) @@ -305,14 +354,14 @@ public class GnuKeyring createNewKeyrings(); loaded = true; - - log.exiting(this.getClass().getName(), "engineLoad"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineLoad"); } public void engineStore(OutputStream out, char[] password) throws IOException { - log.entering(this.getClass().getName(), "engineStore", String.valueOf(password)); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineStore"); ensureLoaded(); HashMap attr = new HashMap(); attr.put(IKeyring.KEYRING_DATA_OUT, out); @@ -320,14 +369,21 @@ public class GnuKeyring privateKR.store(attr); publicKR.store(attr); - - log.exiting(this.getClass().getName(), "engineStore"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineStore"); } public int engineSize() { - ensureLoaded(); - return privateKR.size() + publicKR.size(); + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "engineSize"); + int result = 0; + for (Enumeration e = engineAliases(); e.hasMoreElements(); result++) + e.nextElement(); + + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "engineSize", Integer.valueOf(result)); + return result; } /** @@ -353,8 +409,8 @@ public class GnuKeyring private void loadPrivateKeyring(InputStream in, char[] password) throws MalformedKeyringException, IOException { - log.entering(this.getClass().getName(), "loadPrivateKeyring"); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "loadPrivateKeyring"); in.mark(5); for (int i = 0; i < 4; i++) if (in.read() != Registry.GKR_MAGIC[i]) @@ -363,15 +419,16 @@ public class GnuKeyring int usage = in.read(); in.reset(); if (usage != GnuPrivateKeyring.USAGE) - throw new MalformedKeyringException("Was expecting a private keyring but got a wrong USAGE: " - + Integer.toBinaryString(usage)); + throw new MalformedKeyringException( + "Was expecting a private keyring but got a wrong USAGE: " + + Integer.toBinaryString(usage)); HashMap attr = new HashMap(); attr.put(IKeyring.KEYRING_DATA_IN, in); attr.put(IKeyring.KEYRING_PASSWORD, password); privateKR = new GnuPrivateKeyring(); privateKR.load(attr); - - log.exiting(this.getClass().getName(), "loadPrivateKeyring"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "loadPrivateKeyring"); } /** @@ -385,8 +442,8 @@ public class GnuKeyring private void loadPublicKeyring(InputStream in, char[] password) throws MalformedKeyringException, IOException { - log.entering(this.getClass().getName(), "loadPublicKeyring"); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "loadPublicKeyring"); in.mark(5); for (int i = 0; i < 4; i++) if (in.read() != Registry.GKR_MAGIC[i]) @@ -395,15 +452,16 @@ public class GnuKeyring int usage = in.read(); in.reset(); if (usage != GnuPublicKeyring.USAGE) - throw new MalformedKeyringException("Was expecting a public keyring but got a wrong USAGE: " - + Integer.toBinaryString(usage)); + throw new MalformedKeyringException( + "Was expecting a public keyring but got a wrong USAGE: " + + Integer.toBinaryString(usage)); HashMap attr = new HashMap(); attr.put(IKeyring.KEYRING_DATA_IN, in); attr.put(IKeyring.KEYRING_PASSWORD, password); publicKR = new GnuPublicKeyring(); publicKR.load(attr); - - log.exiting(this.getClass().getName(), "loadPublicKeyring"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "loadPublicKeyring"); } /** @@ -417,9 +475,9 @@ public class GnuKeyring */ private Date getCreationDate(String alias, IKeyring keyring) { - log.entering(this.getClass().getName(), "getCreationDate", - new Object[] { alias, keyring }); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "getCreationDate", + new Object[] { alias, keyring }); Date result = null; if (keyring != null) for (Iterator it = keyring.get(alias).iterator(); it.hasNext();) @@ -431,19 +489,19 @@ public class GnuKeyring break; } } - - log.exiting(this.getClass().getName(), "getCreationDate", result); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "getCreationDate", result); return result; } /** Create empty keyrings. */ private void createNewKeyrings() { - log.entering(this.getClass().getName(), "createNewKeyrings"); - + if (Configuration.DEBUG) + log.entering(this.getClass().getName(), "createNewKeyrings"); privateKR = new GnuPrivateKeyring("HMAC-SHA-1", 20, "AES", "OFB", 16); publicKR = new GnuPublicKeyring("HMAC-SHA-1", 20); - - log.exiting(this.getClass().getName(), "createNewKeyrings"); + if (Configuration.DEBUG) + log.exiting(this.getClass().getName(), "createNewKeyrings"); } } |

