summaryrefslogtreecommitdiff
path: root/gnu/java/security/util/FormatUtil.java
diff options
context:
space:
mode:
authorRaif S. Naffah <raif@swiftdsl.com.au>2006-02-19 01:45:42 +0000
committerRaif S. Naffah <raif@swiftdsl.com.au>2006-02-19 01:45:42 +0000
commit70be1e6d568d0e673204711d4546585901c1303c (patch)
treeb4ce6af9b5d310c4e5962a840146900ca3cb43b4 /gnu/java/security/util/FormatUtil.java
parentc368cf0534aaddd5a3f26a76611650081dca9273 (diff)
downloadclasspath-70be1e6d568d0e673204711d4546585901c1303c.tar.gz
2006-02-19 Raif S. Naffah <raif@swiftdsl.com.au>
* gnu/javax/crypto/key/OutgoingMessage.java (writePublicKey): Handle new internal format. (writePrivateKey): Likewise. (writeKey): New method. (getKeyType): Likewise. * gnu/javax/crypto/key/IncomingMessage.java (readPublicKey): Handle new internal format. (readPrivateKey): Likewise. (getKeyPairCodec): New method. * gnu/javax/crypto/key/srp6/SRPKey.java (getFormat): Always return Raw. * gnu/javax/crypto/key/dh/GnuDHKey.java (getFormat): Use FormatUtil. * gnu/java/security/Registry.java (RSA_SIG_PREFIX): New constant. (RSA_PSS_ENCODING): Likewise.. (RSA_PKCS1_V1_5_ENCODING): Likewise. (RSA_PSS_SIG): Redefined using other constants. (RSA_PKCS1_V1_5_SIG): Likewise. (MAGIC_RAW_RSA_PKCS1V1_5_SIGNATURE): New constant. * gnu/java/security/util/FormatUtil.java: New file. * gnu/java/security/sig/SignatureFactory.java (names): New field. (getInstance): Let RSASignatureFactory handle RSA signature names. (getNames): Handle new RSA signature (with format) names. * gnu/java/security/sig/SignatureCodecFactory.java: New file. * gnu/java/security/sig/BaseSignature.java (BaseSignature): Add check for null md. (name): Include hash algorithm name. * gnu/java/security/sig/rsa/RSASignatureFactory.java: New file. * gnu/java/security/sig/rsa/RSAPSSSignature.java (RSAPSSSignature): Call constructor with IMessageDigest. (RSAPSSSignature(ImessageDigest,int)): New constructor. * gnu/java/security/sig/rsa/RSAPKCS1V1_5SignatureRawCodec.java: New file. * gnu/java/security/sig/rsa/RSAPKCS1V1_5SignatureX509Codec.java: Likewise. * gnu/java/security/sig/rsa/RSAPKCS1V1_5Signature.java (RSAPKCS1V1_5Signature(String)): Call constructor with IMessageDigest. (RSAPKCS1V1_5Signature(IMessageDigest)): New constructor. * gnu/java/security/sig/rsa/EMSA_PKCS1_V1_5.java (getInstance): Added hash algorithm name to exception. * gnu/java/security/sig/dss/DSSSignatureX509Codec.java: New file. * gnu/java/security/key/KeyPairCodecFactory.java (names): New class field. (getInstance(Sitrng)): Deconstruct and call getInstance(String,String). (getInstance(String,String)): New method. (getInstance(String,int)): New method. (getInstance(byte[])): Removed. (getInstance(Key)): Handle new formats. (getNames): Likewise. (getEncodingName(int)): Moved to FormatUtil. (getEncodingShortName(int)): Likewise. (getRawCodec(String)): New method. (getX509Codec(String)): Likewise. (getPKCS8Codec(String)): Likewise. (getRawCodec(Key)): Likewise. (getX509Codec(Key)): Likewise. (getPKCS8Codec(Key)): Likewise. * gnu/java/security/key/dss/DSSKey.java (getFormat): Use FormatUtil. * gnu/java/security/key/rsa/GnuRSAKey.java (getFormat): Likewise. * gnu/java/security/jce/sig/SHA512withRSA.java: New File. * gnu/java/security/jce/sig/SHA384withRSA.java: Likewise. * gnu/java/security/jce/sig/SHA256withRSA.java: Likewise. * gnu/java/security/jce/sig/SHA160withRSA.java: Likewise. * gnu/java/security/jce/sig/SHA160withDSS.java: Likewsie. * gnu/java/security/jce/sig/MD5withRSA.java: Likewise. * gnu/java/security/jce/sig/MD2withRSA.java: Likewise.
Diffstat (limited to 'gnu/java/security/util/FormatUtil.java')
-rw-r--r--gnu/java/security/util/FormatUtil.java140
1 files changed, 140 insertions, 0 deletions
diff --git a/gnu/java/security/util/FormatUtil.java b/gnu/java/security/util/FormatUtil.java
new file mode 100644
index 000000000..eed669cc3
--- /dev/null
+++ b/gnu/java/security/util/FormatUtil.java
@@ -0,0 +1,140 @@
+/* FormatUtil.java -- Encoding and decoding format utility methods
+ Copyright (C) 2006 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., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 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.util;
+
+import gnu.java.security.Registry;
+
+/**
+ * Encoding and decoding format utility methods.
+ */
+public class FormatUtil
+{
+ /** Trivial constructor to enforce Singleton pattern. */
+ private FormatUtil()
+ {
+ super();
+ }
+
+ /**
+ * Returns the fully qualified name of the designated encoding ID.
+ *
+ * @param formatID the unique identifier of the encoding format.
+ * @return the fully qualified name of the designated format. Returns
+ * <code>null</code> if no such encoding format is known.
+ */
+ public static final String getEncodingName(int formatID)
+ {
+ String result = null;
+ switch (formatID)
+ {
+ case Registry.RAW_ENCODING_ID:
+ result = Registry.RAW_ENCODING;
+ break;
+ case Registry.X509_ENCODING_ID:
+ result = Registry.X509_ENCODING;
+ break;
+ case Registry.PKCS8_ENCODING_ID:
+ result = Registry.PKCS8_ENCODING;
+ break;
+ case Registry.ASN1_ENCODING_ID:
+ result = Registry.ASN1_ENCODING;
+ break;
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the short name of the designated encoding ID. This is used by the
+ * JCE Adapters.
+ *
+ * @param formatID the unique identifier of the encoding format.
+ * @return the short name of the designated format. Returns <code>null</code>
+ * if no such encoding format is known.
+ */
+ public static final String getEncodingShortName(int formatID)
+ {
+ String result = null;
+ switch (formatID)
+ {
+ case Registry.RAW_ENCODING_ID:
+ result = Registry.RAW_ENCODING_SHORT_NAME;
+ break;
+ case Registry.X509_ENCODING_ID:
+ result = Registry.X509_ENCODING_SORT_NAME;
+ break;
+ case Registry.PKCS8_ENCODING_ID:
+ result = Registry.PKCS8_ENCODING_SHORT_NAME;
+ break;
+ case Registry.ASN1_ENCODING_ID:
+ result = Registry.ASN1_ENCODING_SHORT_NAME;
+ break;
+ }
+
+ return result;
+ }
+
+ /**
+ * Returns the identifier of the encoding format given its short name.
+ *
+ * @param name the case-insensitive canonical short name of an encoding
+ * format.
+ * @return the identifier of the designated encoding format, or <code>0</code>
+ * if the name does not correspond to any known format.
+ */
+ public static final int getFormatID(String name)
+ {
+ if (name == null)
+ return 0;
+
+ name = name.trim();
+ if (name.length() == 0)
+ return 0;
+
+ int result = 0;
+ if (name.equalsIgnoreCase(Registry.RAW_ENCODING_SHORT_NAME))
+ result = Registry.RAW_ENCODING_ID;
+ else if (name.equalsIgnoreCase(Registry.X509_ENCODING_SORT_NAME))
+ result = Registry.X509_ENCODING_ID;
+ else if (name.equalsIgnoreCase(Registry.PKCS8_ENCODING_SHORT_NAME))
+ result = Registry.PKCS8_ENCODING_ID;
+
+ return result;
+ }
+}