diff options
Diffstat (limited to 'libjava/classpath/gnu/javax/crypto/pad/PadFactory.java')
-rw-r--r-- | libjava/classpath/gnu/javax/crypto/pad/PadFactory.java | 87 |
1 files changed, 35 insertions, 52 deletions
diff --git a/libjava/classpath/gnu/javax/crypto/pad/PadFactory.java b/libjava/classpath/gnu/javax/crypto/pad/PadFactory.java index 913d69dcbaf..eaa78112e09 100644 --- a/libjava/classpath/gnu/javax/crypto/pad/PadFactory.java +++ b/libjava/classpath/gnu/javax/crypto/pad/PadFactory.java @@ -45,16 +45,13 @@ import java.util.HashSet; import java.util.Set; /** - * <p>A Factory to instantiate padding schemes.</p> + * A Factory to instantiate padding schemes. */ -public class PadFactory implements Registry +public class PadFactory + implements Registry { - - // Constants and variables - // ------------------------------------------------------------------------- - - // Constructor(s) - // ------------------------------------------------------------------------- + /** Collection of padding algorithm names --cached for speed. */ + private static Set names; /** Trivial constructor to enforce Singleton pattern. */ private PadFactory() @@ -62,76 +59,62 @@ public class PadFactory implements Registry super(); } - // Class methods - // ------------------------------------------------------------------------- - /** - * <p>Returns an instance of a padding algorithm given its name.</p> - * + * Returns an instance of a padding algorithm given its name. + * * @param pad the case-insensitive name of the padding algorithm. - * @return an instance of the padding algorithm, operating with a given - * block size, or <code>null</code> if none found. + * @return an instance of the padding algorithm, operating with a given block + * size, or <code>null</code> if none found. * @throws InternalError if the implementation does not pass its self-test. */ public static final IPad getInstance(String pad) { if (pad == null) - { - return null; - } + return null; pad = pad.trim().toLowerCase(); if (pad.endsWith("padding")) pad = pad.substring(0, pad.length() - "padding".length()); IPad result = null; if (pad.equals(PKCS7_PAD) || pad.equals(PKCS5_PAD)) - { - result = new PKCS7(); - } + result = new PKCS7(); else if (pad.equals(TBC_PAD)) - { - result = new TBC(); - } + result = new TBC(); else if (pad.equals(EME_PKCS1_V1_5_PAD)) - { - result = new PKCS1_V1_5(); - } + result = new PKCS1_V1_5(); else if (pad.equals(SSL3_PAD)) - { - result = new SSL3(); - } + result = new SSL3(); else if (pad.equals(TLS1_PAD)) - { - result = new TLS1(); - } + result = new TLS1(); + else if (pad.equals(ISO10126_PAD)) + result = new ISO10126(); - if (result != null && !result.selfTest()) - { - throw new InternalError(result.name()); - } + if (result != null && ! result.selfTest()) + throw new InternalError(result.name()); return result; } /** - * <p>Returns a {@link java.util.Set} of names of padding algorithms - * supported by this <i>Factory</i>.</p> - * + * Returns a {@link Set} of names of padding algorithms supported by this + * <i>Factory</i>. + * * @return a {@link Set} of padding algorithm names (Strings). */ public static final Set getNames() { - HashSet hs = new HashSet(); - hs.add(PKCS5_PAD); - hs.add(PKCS7_PAD); - hs.add(TBC_PAD); - hs.add(EME_PKCS1_V1_5_PAD); - hs.add(SSL3_PAD); - hs.add(TLS1_PAD); - - return Collections.unmodifiableSet(hs); + if (names == null) + { + HashSet hs = new HashSet(); + hs.add(PKCS5_PAD); + hs.add(PKCS7_PAD); + hs.add(TBC_PAD); + hs.add(EME_PKCS1_V1_5_PAD); + hs.add(SSL3_PAD); + hs.add(TLS1_PAD); + hs.add(ISO10126_PAD); + names = Collections.unmodifiableSet(hs); + } + return names; } - - // Instance methods - // ------------------------------------------------------------------------- } |