|
From: <ls...@us...> - 2007-11-18 10:34:29
|
Revision: 3594
http://jnode.svn.sourceforge.net/jnode/?rev=3594&view=rev
Author: lsantha
Date: 2007-11-18 02:34:24 -0800 (Sun, 18 Nov 2007)
Log Message:
-----------
OpenJDK integration.
Added Paths:
-----------
trunk/core/src/openjdk/javax/javax/security/cert/
trunk/core/src/openjdk/javax/javax/security/cert/Certificate.java
trunk/core/src/openjdk/javax/javax/security/cert/CertificateEncodingException.java
trunk/core/src/openjdk/javax/javax/security/cert/CertificateException.java
trunk/core/src/openjdk/javax/javax/security/cert/CertificateExpiredException.java
trunk/core/src/openjdk/javax/javax/security/cert/CertificateNotYetValidException.java
trunk/core/src/openjdk/javax/javax/security/cert/CertificateParsingException.java
trunk/core/src/openjdk/javax/javax/security/cert/X509Certificate.java
trunk/core/src/openjdk/javax/javax/security/cert/package.html
trunk/core/src/openjdk/javax/javax/security/sasl/AuthenticationException.java
trunk/core/src/openjdk/javax/javax/security/sasl/AuthorizeCallback.java
trunk/core/src/openjdk/javax/javax/security/sasl/RealmCallback.java
trunk/core/src/openjdk/javax/javax/security/sasl/RealmChoiceCallback.java
trunk/core/src/openjdk/javax/javax/security/sasl/SaslClient.java
trunk/core/src/openjdk/javax/javax/security/sasl/SaslClientFactory.java
trunk/core/src/openjdk/javax/javax/security/sasl/SaslException.java
trunk/core/src/openjdk/javax/javax/security/sasl/SaslServer.java
trunk/core/src/openjdk/javax/javax/security/sasl/SaslServerFactory.java
trunk/core/src/openjdk/javax/javax/security/sasl/package.html
Removed Paths:
-------------
trunk/core/src/classpath/javax/javax/security/cert/
trunk/core/src/classpath/javax/javax/security/sasl/
Added: trunk/core/src/openjdk/javax/javax/security/cert/Certificate.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/Certificate.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/Certificate.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,178 @@
+/*
+ * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+import java.security.PublicKey;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.InvalidKeyException;
+import java.security.SignatureException;
+
+/**
+ * <p>Abstract class for managing a variety of identity certificates.
+ * An identity certificate is a guarantee by a principal that
+ * a public key is that of another principal. (A principal represents
+ * an entity such as an individual user, a group, or a corporation.)
+ *<p>
+ * This class is an abstraction for certificates that have different
+ * formats but important common uses. For example, different types of
+ * certificates, such as X.509 and PGP, share general certificate
+ * functionality (like encoding and verifying) and
+ * some types of information (like a public key).
+ * <p>
+ * X.509, PGP, and SDSI certificates can all be implemented by
+ * subclassing the Certificate class, even though they contain different
+ * sets of information, and they store and retrieve the information in
+ * different ways.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @since 1.4
+ * @see X509Certificate
+ *
+ * @author Hemma Prafullchandra
+ * @version 1.23
+ */
+public abstract class Certificate {
+
+ /**
+ * Compares this certificate for equality with the specified
+ * object. If the <code>other</code> object is an
+ * <code>instanceof</code> <code>Certificate</code>, then
+ * its encoded form is retrieved and compared with the
+ * encoded form of this certificate.
+ *
+ * @param other the object to test for equality with this certificate.
+ * @return true if the encoded forms of the two certificates
+ * match, false otherwise.
+ */
+ public boolean equals(Object other) {
+ if (this == other)
+ return true;
+ if (!(other instanceof Certificate))
+ return false;
+ try {
+ byte[] thisCert = this.getEncoded();
+ byte[] otherCert = ((Certificate)other).getEncoded();
+
+ if (thisCert.length != otherCert.length)
+ return false;
+ for (int i = 0; i < thisCert.length; i++)
+ if (thisCert[i] != otherCert[i])
+ return false;
+ return true;
+ } catch (CertificateException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Returns a hashcode value for this certificate from its
+ * encoded form.
+ *
+ * @return the hashcode value.
+ */
+ public int hashCode() {
+ int retval = 0;
+ try {
+ byte[] certData = this.getEncoded();
+ for (int i = 1; i < certData.length; i++) {
+ retval += certData[i] * i;
+ }
+ return (retval);
+ } catch (CertificateException e) {
+ return (retval);
+ }
+ }
+
+ /**
+ * Returns the encoded form of this certificate. It is
+ * assumed that each certificate type would have only a single
+ * form of encoding; for example, X.509 certificates would
+ * be encoded as ASN.1 DER.
+ *
+ * @return encoded form of this certificate
+ * @exception CertificateEncodingException on internal certificate
+ * encoding failure
+ */
+ public abstract byte[] getEncoded() throws CertificateEncodingException;
+
+ /**
+ * Verifies that this certificate was signed using the
+ * private key that corresponds to the specified public key.
+ *
+ * @param key the PublicKey used to carry out the verification.
+ *
+ * @exception NoSuchAlgorithmException on unsupported signature
+ * algorithms.
+ * @exception InvalidKeyException on incorrect key.
+ * @exception NoSuchProviderException if there's no default provider.
+ * @exception SignatureException on signature errors.
+ * @exception CertificateException on encoding errors.
+ */
+ public abstract void verify(PublicKey key)
+ throws CertificateException, NoSuchAlgorithmException,
+ InvalidKeyException, NoSuchProviderException,
+ SignatureException;
+
+ /**
+ * Verifies that this certificate was signed using the
+ * private key that corresponds to the specified public key.
+ * This method uses the signature verification engine
+ * supplied by the specified provider.
+ *
+ * @param key the PublicKey used to carry out the verification.
+ * @param sigProvider the name of the signature provider.
+ * @exception NoSuchAlgorithmException on unsupported signature algorithms.
+ * @exception InvalidKeyException on incorrect key.
+ * @exception NoSuchProviderException on incorrect provider.
+ * @exception SignatureException on signature errors.
+ * @exception CertificateException on encoding errors.
+ */
+ public abstract void verify(PublicKey key, String sigProvider)
+ throws CertificateException, NoSuchAlgorithmException,
+ InvalidKeyException, NoSuchProviderException,
+ SignatureException;
+
+ /**
+ * Returns a string representation of this certificate.
+ *
+ * @return a string representation of this certificate.
+ */
+ public abstract String toString();
+
+ /**
+ * Gets the public key from this certificate.
+ *
+ * @return the public key.
+ */
+ public abstract PublicKey getPublicKey();
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/CertificateEncodingException.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/CertificateEncodingException.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/CertificateEncodingException.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,64 @@
+/*
+ * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+/**
+ * Certificate Encoding Exception. This is thrown whenever an error
+ * occurs whilst attempting to encode a certificate.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @since 1.4
+ * @author Hemma Prafullchandra
+ * @version 1.14
+ */
+public class CertificateEncodingException extends CertificateException {
+
+ /**
+ * Constructs a CertificateEncodingException with no detail message. A
+ * detail message is a String that describes this particular
+ * exception.
+ */
+ public CertificateEncodingException() {
+ super();
+ }
+
+ /**
+ * Constructs a CertificateEncodingException with the specified detail
+ * message. A detail message is a String that describes this
+ * particular exception.
+ *
+ * @param message the detail message.
+ */
+ public CertificateEncodingException(String message) {
+ super(message);
+ }
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/CertificateException.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/CertificateException.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/CertificateException.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,63 @@
+/*
+ * Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+/**
+ * This exception indicates one of a variety of certificate problems.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @author Hemma Prafullchandra
+ * @version 1.36
+ * @since 1.4
+ * @see Certificate
+ */
+public class CertificateException extends Exception {
+
+ /**
+ * Constructs a certificate exception with no detail message. A detail
+ * message is a String that describes this particular exception.
+ */
+ public CertificateException() {
+ super();
+ }
+
+ /**
+ * Constructs a certificate exception with the given detail
+ * message. A detail message is a String that describes this
+ * particular exception.
+ *
+ * @param msg the detail message.
+ */
+ public CertificateException(String msg) {
+ super(msg);
+ }
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/CertificateExpiredException.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/CertificateExpiredException.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/CertificateExpiredException.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,66 @@
+/*
+ * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+/**
+ * Certificate Expired Exception. This is thrown whenever the current
+ * <code>Date</code> or the specified <code>Date</code> is after the
+ * <code>notAfter</code> date/time specified in the validity period
+ * of the certificate.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @since 1.4
+ * @author Hemma Prafullchandra
+ * @version 1.14
+ */
+public class CertificateExpiredException extends CertificateException {
+
+ /**
+ * Constructs a CertificateExpiredException with no detail message. A
+ * detail message is a String that describes this particular
+ * exception.
+ */
+ public CertificateExpiredException() {
+ super();
+ }
+
+ /**
+ * Constructs a CertificateExpiredException with the specified detail
+ * message. A detail message is a String that describes this
+ * particular exception.
+ *
+ * @param message the detail message.
+ */
+ public CertificateExpiredException(String message) {
+ super(message);
+ }
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/CertificateNotYetValidException.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/CertificateNotYetValidException.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/CertificateNotYetValidException.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,66 @@
+/*
+ * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+/**
+ * Certificate is not yet valid exception. This is thrown whenever
+ * the current <code>Date</code> or the specified <code>Date</code>
+ * is before the <code>notBefore</code> date/time in the Certificate
+ * validity period.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @since 1.4
+ * @author Hemma Prafullchandra
+ * @version 1.14
+ */
+public class CertificateNotYetValidException extends CertificateException {
+
+ /**
+ * Constructs a CertificateNotYetValidException with no detail message. A
+ * detail message is a String that describes this particular
+ * exception.
+ */
+ public CertificateNotYetValidException() {
+ super();
+ }
+
+ /**
+ * Constructs a CertificateNotYetValidException with the specified detail
+ * message. A detail message is a String that describes this
+ * particular exception.
+ *
+ * @param message the detail message.
+ */
+ public CertificateNotYetValidException(String message) {
+ super(message);
+ }
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/CertificateParsingException.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/CertificateParsingException.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/CertificateParsingException.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,65 @@
+/*
+ * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+/**
+ * Certificate Parsing Exception. This is thrown whenever
+ * invalid DER encoded certificate is parsed or unsupported DER features
+ * are found in the Certificate.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @since 1.4
+ * @author Hemma Prafullchandra
+ * @version 1.14
+ */
+public class CertificateParsingException extends CertificateException {
+
+ /**
+ * Constructs a CertificateParsingException with no detail message. A
+ * detail message is a String that describes this particular
+ * exception.
+ */
+ public CertificateParsingException() {
+ super();
+ }
+
+ /**
+ * Constructs a CertificateParsingException with the specified detail
+ * message. A detail message is a String that describes this
+ * particular exception.
+ *
+ * @param message the detail message.
+ */
+ public CertificateParsingException(String message) {
+ super(message);
+ }
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/X509Certificate.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/X509Certificate.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/X509Certificate.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,453 @@
+/*
+ * Copyright 1997-2006 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+
+package javax.security.cert;
+
+import java.io.InputStream;
+import java.lang.Class;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.security.Security;
+
+import java.math.BigInteger;
+import java.security.AccessController;
+import java.security.Principal;
+import java.security.PrivilegedAction;
+import java.security.PublicKey;
+import java.util.BitSet;
+import java.util.Date;
+
+/**
+ * Abstract class for X.509 v1 certificates. This provides a standard
+ * way to access all the version 1 attributes of an X.509 certificate.
+ * Attributes that are specific to X.509 v2 or v3 are not available
+ * through this interface. Future API evolution will provide full access to
+ * complete X.509 v3 attributes.
+ * <p>
+ * The basic X.509 format was defined by
+ * ISO/IEC and ANSI X9 and is described below in ASN.1:
+ * <pre>
+ * Certificate ::= SEQUENCE {
+ * tbsCertificate TBSCertificate,
+ * signatureAlgorithm AlgorithmIdentifier,
+ * signature BIT STRING }
+ * </pre>
+ * <p>
+ * These certificates are widely used to support authentication and
+ * other functionality in Internet security systems. Common applications
+ * include Privacy Enhanced Mail (PEM), Transport Layer Security (SSL),
+ * code signing for trusted software distribution, and Secure Electronic
+ * Transactions (SET).
+ * <p>
+ * These certificates are managed and vouched for by <em>Certificate
+ * Authorities</em> (CAs). CAs are services which create certificates by
+ * placing data in the X.509 standard format and then digitally signing
+ * that data. CAs act as trusted third parties, making introductions
+ * between principals who have no direct knowledge of each other.
+ * CA certificates are either signed by themselves, or by some other
+ * CA such as a "root" CA.
+ * <p>
+ * The ASN.1 definition of <code>tbsCertificate</code> is:
+ * <pre>
+ * TBSCertificate ::= SEQUENCE {
+ * version [0] EXPLICIT Version DEFAULT v1,
+ * serialNumber CertificateSerialNumber,
+ * signature AlgorithmIdentifier,
+ * issuer Name,
+ * validity Validity,
+ * subject Name,
+ * subjectPublicKeyInfo SubjectPublicKeyInfo,
+ * }
+ * </pre>
+ * <p>
+ * Here is sample code to instantiate an X.509 certificate:
+ * <pre>
+ * InputStream inStream = new FileInputStream("fileName-of-cert");
+ * X509Certificate cert = X509Certificate.getInstance(inStream);
+ * inStream.close();
+ * </pre>
+ * OR
+ * <pre>
+ * byte[] certData = <certificate read from a file, say>
+ * X509Certificate cert = X509Certificate.getInstance(certData);
+ * </pre>
+ * <p>
+ * In either case, the code that instantiates an X.509 certificate
+ * consults the Java security properties file to locate the actual
+ * implementation or instantiates a default implementation.
+ * <p>
+ * The Java security properties file is located in the file named
+ * <JAVA_HOME>/lib/security/java.security.
+ * <JAVA_HOME> refers to the value of the java.home system property,
+ * and specifies the directory where the JRE is installed.
+ * In the Security properties file, a default implementation
+ * for X.509 v1 may be given such as:
+ * <pre>
+ * cert.provider.x509v1=com.sun.security.cert.internal.x509.X509V1CertImpl
+ * </pre>
+ * <p>
+ * The value of this <code>cert.provider.x509v1</code> property has to be
+ * changed to instatiate another implementation. If this security
+ * property is not set, a default implementation will be used.
+ * Currently, due to possible security restrictions on access to
+ * Security properties, this value is looked up and cached at class
+ * initialization time and will fallback on a default implementation if
+ * the Security property is not accessible.
+ *
+ * <p><em>Note: The classes in the package <code>javax.security.cert</code>
+ * exist for compatibility with earlier versions of the
+ * Java Secure Sockets Extension (JSSE). New applications should instead
+ * use the standard Java SE certificate classes located in
+ * <code>java.security.cert</code>.</em></p>
+ *
+ * @author Hemma Prafullchandra
+ * @version 1.38
+ * @since 1.4
+ * @see Certificate
+ * @see java.security.cert.X509Extension
+ */
+public abstract class X509Certificate extends Certificate {
+
+ /*
+ * Constant to lookup in the Security properties file.
+ * In the Security properties file the default implementation
+ * for X.509 v3 is given as:
+ * <pre>
+ * cert.provider.x509v1=com.sun.security.cert.internal.x509.X509V1CertImpl
+ * </pre>
+ */
+ private static final String X509_PROVIDER = "cert.provider.x509v1";
+ private static String X509Provider;
+
+ static {
+ X509Provider = AccessController.doPrivileged(
+ new PrivilegedAction<String>() {
+ public String run() {
+ return Security.getProperty(X509_PROVIDER);
+ }
+ }
+ );
+ }
+
+ /**
+ * Instantiates an X509Certificate object, and initializes it with
+ * the data read from the input stream <code>inStream</code>.
+ * The implementation (X509Certificate is an abstract class) is
+ * provided by the class specified as the value of the
+ * <code>cert.provider.x509v1</code>
+ * property in the security properties file.
+ *
+ * <p>Note: Only one DER-encoded
+ * certificate is expected to be in the input stream.
+ * Also, all X509Certificate
+ * subclasses must provide a constructor of the form:
+ * <code><pre>
+ * public <subClass>(InputStream inStream) ...
+ * </pre></code>
+ *
+ * @param inStream an input stream with the data to be read to
+ * initialize the certificate.
+ * @return an X509Certificate object initialized with the data
+ * from the input stream.
+ * @exception CertificateException if a class initialization
+ * or certificate parsing error occurs.
+ */
+ public static final X509Certificate getInstance(InputStream inStream)
+ throws CertificateException {
+ return getInst((Object)inStream);
+ }
+
+ /**
+ * Instantiates an X509Certificate object, and initializes it with
+ * the specified byte array.
+ * The implementation (X509Certificate is an abstract class) is
+ * provided by the class specified as the value of the
+ * <code>cert.provider.x509v1</code>
+ * property in the security properties file.
+ *
+ * <p>Note: All X509Certificate
+ * subclasses must provide a constructor of the form:
+ * <code><pre>
+ * public <subClass>(InputStream inStream) ...
+ * </pre></code>
+ *
+ * @param certData a byte array containing the DER-encoded
+ * certificate.
+ * @return an X509Certificate object initialized with the data
+ * from <code>certData</code>.
+ * @exception CertificateException if a class initialization
+ * or certificate parsing error occurs.
+ */
+ public static final X509Certificate getInstance(byte[] certData)
+ throws CertificateException {
+ return getInst((Object)certData);
+ }
+
+ private static final X509Certificate getInst(Object value)
+ throws CertificateException {
+ /*
+ * This turns out not to work for now. To run under JDK1.2 we would
+ * need to call beginPrivileged() but we can't do that and run
+ * under JDK1.1.
+ */
+ String className = X509Provider;
+ if (className == null || className.length() == 0) {
+ // shouldn't happen, but assume corrupted properties file
+ // provide access to sun implementation
+ className = "com.sun.security.cert.internal.x509.X509V1CertImpl";
+ }
+ try {
+ Class[] params = null;
+ if (value instanceof InputStream) {
+ params = new Class[] { InputStream.class };
+ } else if (value instanceof byte[]) {
+ params = new Class[] { value.getClass() };
+ } else
+ throw new CertificateException("Unsupported argument type");
+ Class<?> certClass = Class.forName(className);
+
+ // get the appropriate constructor and instantiate it
+ Constructor<?> cons = certClass.getConstructor(params);
+
+ // get a new instance
+ Object obj = cons.newInstance(new Object[] {value});
+ return (X509Certificate)obj;
+
+ } catch (ClassNotFoundException e) {
+ throw new CertificateException("Could not find class: " + e);
+ } catch (IllegalAccessException e) {
+ throw new CertificateException("Could not access class: " + e);
+ } catch (InstantiationException e) {
+ throw new CertificateException("Problems instantiating: " + e);
+ } catch (InvocationTargetException e) {
+ throw new CertificateException("InvocationTargetException: "
+ + e.getTargetException());
+ } catch (NoSuchMethodException e) {
+ throw new CertificateException("Could not find class method: "
+ + e.getMessage());
+ }
+ }
+
+ /**
+ * Checks that the certificate is currently valid. It is if
+ * the current date and time are within the validity period given in the
+ * certificate.
+ * <p>
+ * The validity period consists of two date/time values:
+ * the first and last dates (and times) on which the certificate
+ * is valid. It is defined in
+ * ASN.1 as:
+ * <pre>
+ * validity Validity<p>
+ * Validity ::= SEQUENCE {
+ * notBefore CertificateValidityDate,
+ * notAfter CertificateValidityDate }<p>
+ * CertificateValidityDate ::= CHOICE {
+ * utcTime UTCTime,
+ * generalTime GeneralizedTime }
+ * </pre>
+ *
+ * @exception CertificateExpiredException if the certificate has expired.
+ * @exception CertificateNotYetValidException if the certificate is not
+ * yet valid.
+ */
+ public abstract void checkValidity()
+ throws CertificateExpiredException, CertificateNotYetValidException;
+
+ /**
+ * Checks that the specified date is within the certificate's
+ * validity period. In other words, this determines whether the
+ * certificate would be valid at the specified date/time.
+ *
+ * @param date the Date to check against to see if this certificate
+ * is valid at that date/time.
+ * @exception CertificateExpiredException if the certificate has expired
+ * with respect to the <code>date</code> supplied.
+ * @exception CertificateNotYetValidException if the certificate is not
+ * yet valid with respect to the <code>date</code> supplied.
+ * @see #checkValidity()
+ */
+ public abstract void checkValidity(Date date)
+ throws CertificateExpiredException, CertificateNotYetValidException;
+
+ /**
+ * Gets the <code>version</code> (version number) value from the
+ * certificate. The ASN.1 definition for this is:
+ * <pre>
+ * version [0] EXPLICIT Version DEFAULT v1<p>
+ * Version ::= INTEGER { v1(0), v2(1), v3(2) }
+ * </pre>
+ *
+ * @return the version number from the ASN.1 encoding, i.e. 0, 1 or 2.
+ */
+ public abstract int getVersion();
+
+ /**
+ * Gets the <code>serialNumber</code> value from the certificate.
+ * The serial number is an integer assigned by the certification
+ * authority to each certificate. It must be unique for each
+ * certificate issued by a given CA (i.e., the issuer name and
+ * serial number identify a unique certificate).
+ * The ASN.1 definition for this is:
+ * <pre>
+ * serialNumber CertificateSerialNumber<p>
+ *
+ * CertificateSerialNumber ::= INTEGER
+ * </pre>
+ *
+ * @return the serial number.
+ */
+ public abstract BigInteger getSerialNumber();
+
+ /**
+ * Gets the <code>issuer</code> (issuer distinguished name) value from
+ * the certificate. The issuer name identifies the entity that signed (and
+ * issued) the certificate.
+ *
+ * <p>The issuer name field contains an
+ * X.500 distinguished name (DN).
+ * The ASN.1 definition for this is:
+ * <pre>
+ * issuer Name<p>
+ *
+ * Name ::= CHOICE { RDNSequence }
+ * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+ * RelativeDistinguishedName ::=
+ * SET OF AttributeValueAssertion
+ *
+ * AttributeValueAssertion ::= SEQUENCE {
+ * AttributeType,
+ * AttributeValue }
+ * AttributeType ::= OBJECT IDENTIFIER
+ * AttributeValue ::= ANY
+ * </pre>
+ * The <code>Name</code> describes a hierarchical name composed of
+ * attributes, such as country name, and corresponding values, such as US.
+ * The type of the <code>AttributeValue</code> component is determined by
+ * the <code>AttributeType</code>; in general it will be a
+ * <code>directoryString</code>. A <code>directoryString</code> is usually
+ * one of <code>PrintableString</code>,
+ * <code>TeletexString</code> or <code>UniversalString</code>.
+ *
+ * @return a Principal whose name is the issuer distinguished name.
+ */
+ public abstract Principal getIssuerDN();
+
+ /**
+ * Gets the <code>subject</code> (subject distinguished name) value
+ * from the certificate.
+ * The ASN.1 definition for this is:
+ * <pre>
+ * subject Name
+ * </pre>
+ *
+ * <p>See <a href = "#getIssuerDN">getIssuerDN</a> for <code>Name</code>
+ * and other relevant definitions.
+ *
+ * @return a Principal whose name is the subject name.
+ * @see #getIssuerDN()
+ */
+ public abstract Principal getSubjectDN();
+
+ /**
+ * Gets the <code>notBefore</code> date from the validity period of
+ * the certificate.
+ * The relevant ASN.1 definitions are:
+ * <pre>
+ * validity Validity<p>
+ *
+ * Validity ::= SEQUENCE {
+ * notBefore CertificateValidityDate,
+ * notAfter CertificateValidityDate }<p>
+ * CertificateValidityDate ::= CHOICE {
+ * utcTime UTCTime,
+ * generalTime GeneralizedTime }
+ * </pre>
+ *
+ * @return the start date of the validity period.
+ * @see #checkValidity()
+ */
+ public abstract Date getNotBefore();
+
+ /**
+ * Gets the <code>notAfter</code> date from the validity period of
+ * the certificate. See <a href = "#getNotBefore">getNotBefore</a>
+ * for relevant ASN.1 definitions.
+ *
+ * @return the end date of the validity period.
+ * @see #checkValidity()
+ */
+ public abstract Date getNotAfter();
+
+ /**
+ * Gets the signature algorithm name for the certificate
+ * signature algorithm. An example is the string "SHA-1/DSA".
+ * The ASN.1 definition for this is:
+ * <pre>
+ * signatureAlgorithm AlgorithmIdentifier<p>
+ * AlgorithmIdentifier ::= SEQUENCE {
+ * algorithm OBJECT IDENTIFIER,
+ * parameters ANY DEFINED BY algorithm OPTIONAL }
+ * -- contains a value of the type
+ * -- registered for use with the
+ * -- algorithm object identifier value
+ * </pre>
+ *
+ * <p>The algorithm name is determined from the <code>algorithm</code>
+ * OID string.
+ *
+ * @return the signature algorithm name.
+ */
+ public abstract String getSigAlgName();
+
+ /**
+ * Gets the signature algorithm OID string from the certificate.
+ * An OID is represented by a set of positive whole numbers separated
+ * by periods.
+ * For example, the string "1.2.840.10040.4.3" identifies the SHA-1
+ * with DSA signature algorithm, as per the PKIX part I.
+ *
+ * <p>See <a href = "#getSigAlgName">getSigAlgName</a> for
+ * relevant ASN.1 definitions.
+ *
+ * @return the signature algorithm OID string.
+ */
+ public abstract String getSigAlgOID();
+
+ /**
+ * Gets the DER-encoded signature algorithm parameters from this
+ * certificate's signature algorithm. In most cases, the signature
+ * algorithm parameters are null; the parameters are usually
+ * supplied with the certificate's public key.
+ *
+ * <p>See <a href = "#getSigAlgName">getSigAlgName</a> for
+ * relevant ASN.1 definitions.
+ *
+ * @return the DER-encoded signature algorithm parameters, or
+ * null if no parameters are present.
+ */
+ public abstract byte[] getSigAlgParams();
+}
Added: trunk/core/src/openjdk/javax/javax/security/cert/package.html
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/cert/package.html (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/cert/package.html 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,65 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+Copyright 1999-2006 Sun Microsystems, Inc. All Rights Reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation. Sun designates this
+particular file as subject to the "Classpath" exception as provided
+by Sun in the LICENSE file that accompanied this code.
+
+This code 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
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+CA 95054 USA or visit www.sun.com if you need additional information or
+have any questions.
+-->
+
+</head>
+<body bgcolor="white">
+
+Provides classes for public key certificates.
+
+<P>
+
+These classes include a simplified version of the
+java.security.cert package. These classes were developed
+as part of the Java Secure Socket
+Extension (JSSE). When JSSE was added to the J2SE version 1.4, this
+package was added for backward-compatibility reasons only.
+
+<P>
+
+New applications should not use this package, but rather
+java.security.cert.
+<!--
+<h2>Package Specification</h2>
+
+##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
+<ul>
+ <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
+</ul>
+
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+<ul>
+ <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
+</ul>
+
+-->
+
+@since 1.4
+</body>
+</html>
Added: trunk/core/src/openjdk/javax/javax/security/sasl/AuthenticationException.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/sasl/AuthenticationException.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/sasl/AuthenticationException.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.security.sasl;
+
+/**
+ * This exception is thrown by a SASL mechanism implementation
+ * to indicate that the SASL
+ * exchange has failed due to reasons related to authentication, such as
+ * an invalid identity, passphrase, or key.
+ * <p>
+ * Note that the lack of an AuthenticationException does not mean that
+ * the failure was not due to an authentication error. A SASL mechanism
+ * implementation might throw the more general SaslException instead of
+ * AuthenticationException if it is unable to determine the nature
+ * of the failure, or if does not want to disclose the nature of
+ * the failure, for example, due to security reasons.
+ *
+ * @since 1.5
+ *
+ * @author Rosanna Lee
+ * @author Rob Weltman
+ */
+public class AuthenticationException extends SaslException {
+ /**
+ * Constructs a new instance of <tt>AuthenticationException</tt>.
+ * The root exception and the detailed message are null.
+ */
+ public AuthenticationException () {
+ super();
+ }
+
+ /**
+ * Constructs a new instance of <tt>AuthenticationException</tt>
+ * with a detailed message.
+ * The root exception is null.
+ * @param detail A possibly null string containing details of the exception.
+ *
+ * @see java.lang.Throwable#getMessage
+ */
+ public AuthenticationException (String detail) {
+ super(detail);
+ }
+
+ /**
+ * Constructs a new instance of <tt>AuthenticationException</tt> with a detailed message
+ * and a root exception.
+ *
+ * @param detail A possibly null string containing details of the exception.
+ * @param ex A possibly null root exception that caused this exception.
+ *
+ * @see java.lang.Throwable#getMessage
+ * @see #getCause
+ */
+ public AuthenticationException (String detail, Throwable ex) {
+ super(detail, ex);
+ }
+
+ /** Use serialVersionUID from JSR 28 RI for interoperability */
+ private static final long serialVersionUID = -3579708765071815007L;
+}
Added: trunk/core/src/openjdk/javax/javax/security/sasl/AuthorizeCallback.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/sasl/AuthorizeCallback.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/sasl/AuthorizeCallback.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2000-2004 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.security.sasl;
+
+import javax.security.auth.callback.Callback;
+
+/**
+ * This callback is used by <tt>SaslServer</tt> to determine whether
+ * one entity (identified by an authenticated authentication id)
+ * can act on
+ * behalf of another entity (identified by an authorization id).
+ *
+ * @since 1.5
+ *
+ * @author Rosanna Lee
+ * @author Rob Weltman
+ */
+public class AuthorizeCallback implements Callback, java.io.Serializable {
+ /**
+ * The (authenticated) authentication id to check.
+ * @serial
+ */
+ private String authenticationID;
+
+ /**
+ * The authorization id to check.
+ * @serial
+ */
+ private String authorizationID;
+
+ /**
+ * The id of the authorized entity. If null, the id of
+ * the authorized entity is authorizationID.
+ * @serial
+ */
+ private String authorizedID;
+
+ /**
+ * A flag indicating whether the authentication id is allowed to
+ * act on behalf of the authorization id.
+ * @serial
+ */
+ private boolean authorized;
+
+ /**
+ * Constructs an instance of <tt>AuthorizeCallback</tt>.
+ *
+ * @param authnID The (authenticated) authentication id.
+ * @param authzID The authorization id.
+ */
+ public AuthorizeCallback(String authnID, String authzID) {
+ authenticationID = authnID;
+ authorizationID = authzID;
+ }
+
+ /**
+ * Returns the authentication id to check.
+ * @return The authentication id to check.
+ */
+ public String getAuthenticationID() {
+ return authenticationID;
+ }
+
+ /**
+ * Returns the authorization id to check.
+ * @return The authentication id to check.
+ */
+ public String getAuthorizationID() {
+ return authorizationID;
+ }
+
+ /**
+ * Determines whether the authentication id is allowed to
+ * act on behalf of the authorization id.
+ *
+ * @return <tt>true</tt> if authorization is allowed; <tt>false</tt> otherwise
+ * @see #setAuthorized(boolean)
+ * @see #getAuthorizedID()
+ */
+ public boolean isAuthorized() {
+ return authorized;
+ }
+
+ /**
+ * Sets whether the authorization is allowed.
+ * @param ok <tt>true</tt> if authorization is allowed; <tt>false</tt> otherwise
+ * @see #isAuthorized
+ * @see #setAuthorizedID(java.lang.String)
+ */
+ public void setAuthorized(boolean ok) {
+ authorized = ok;
+ }
+
+ /**
+ * Returns the id of the authorized user.
+ * @return The id of the authorized user. <tt>null</tt> means the
+ * authorization failed.
+ * @see #setAuthorized(boolean)
+ * @see #setAuthorizedID(java.lang.String)
+ */
+ public String getAuthorizedID() {
+ if (!authorized) {
+ return null;
+ }
+ return (authorizedID == null) ? authorizationID : authorizedID;
+ }
+
+ /**
+ * Sets the id of the authorized entity. Called by handler only when the id
+ * is different from getAuthorizationID(). For example, the id
+ * might need to be canonicalized for the environment in which it
+ * will be used.
+ * @param id The id of the authorized user.
+ * @see #setAuthorized(boolean)
+ * @see #getAuthorizedID
+ */
+ public void setAuthorizedID(String id) {
+ authorizedID = id;
+ }
+
+ private static final long serialVersionUID = -2353344186490470805L;
+}
Added: trunk/core/src/openjdk/javax/javax/security/sasl/RealmCallback.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/sasl/RealmCallback.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/sasl/RealmCallback.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.security.sasl;
+
+import javax.security.auth.callback.TextInputCallback;
+
+/**
+ * This callback is used by <tt>SaslClient</tt> and <tt>SaslServer</tt>
+ * to retrieve realm information.
+ *
+ * @since 1.5
+ *
+ * @author Rosanna Lee
+ * @author Rob Weltman
+ */
+public class RealmCallback extends TextInputCallback {
+
+ /**
+ * Constructs a <tt>RealmCallback</tt> with a prompt.
+ *
+ * @param prompt The non-null prompt to use to request the realm information.
+ * @throws IllegalArgumentException If <tt>prompt</tt> is null or
+ * the empty string.
+ */
+ public RealmCallback(String prompt) {
+ super(prompt);
+ }
+
+ /**
+ * Constructs a <tt>RealmCallback</tt> with a prompt and default
+ * realm information.
+ *
+ * @param prompt The non-null prompt to use to request the realm information.
+ * @param defaultRealmInfo The non-null default realm information to use.
+ * @throws IllegalArgumentException If <tt>prompt</tt> is null or
+ * the empty string,
+ * or if <tt>defaultRealm</tt> is empty or null.
+ */
+ public RealmCallback(String prompt, String defaultRealmInfo) {
+ super(prompt, defaultRealmInfo);
+ }
+
+ private static final long serialVersionUID = -4342673378785456908L;
+}
Added: trunk/core/src/openjdk/javax/javax/security/sasl/RealmChoiceCallback.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/sasl/RealmChoiceCallback.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/sasl/RealmChoiceCallback.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2000-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package javax.security.sasl;
+
+import javax.security.auth.callback.ChoiceCallback;
+
+/**
+ * This callback is used by <tt>SaslClient</tt> and <tt>SaslServer</tt>
+ * to obtain a realm given a list of realm choices.
+ *
+ * @since 1.5
+ *
+ * @author Rosanna Lee
+ * @author Rob Weltman
+ */
+public class RealmChoiceCallback extends ChoiceCallback {
+
+ /**
+ * Constructs a <tt>RealmChoiceCallback</tt> with a prompt, a list of
+ * choices and a default choice.
+ *
+ * @param prompt the non-null prompt to use to request the realm.
+ * @param choices the non-null list of realms to choose from.
+ * @param defaultChoice the choice to be used as the default choice
+ * when the list of choices is displayed. It is an index into
+ * the <tt>choices</tt> arary.
+ * @param multiple true if multiple choices allowed; false otherwise
+ * @throws IllegalArgumentException If <tt>prompt</tt> is null or the empty string,
+ * if <tt>choices</tt> has a length of 0, if any element from
+ * <tt>choices</tt> is null or empty, or if <tt>defaultChoice</tt>
+ * does not fall within the array boundary of <tt>choices</tt>
+ */
+ public RealmChoiceCallback(String prompt, String[]choices,
+ int defaultChoice, boolean multiple) {
+ super(prompt, choices, defaultChoice, multiple);
+ }
+
+ private static final long serialVersionUID = -8588141348846281332L;
+}
Added: trunk/core/src/openjdk/javax/javax/security/sasl/SaslClient.java
===================================================================
--- trunk/core/src/openjdk/javax/javax/security/sasl/SaslClient.java (rev 0)
+++ trunk/core/src/openjdk/javax/javax/security/sasl/SaslClient.java 2007-11-18 10:34:24 UTC (rev 3594)
@@ -0,0 +1,225 @@
+/*
+ * Copyright 1999-2003 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code 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
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free S...
[truncated message content] |