feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
408
jdkSrc/jdk8/sun/security/jgss/spi/GSSContextSpi.java
Normal file
408
jdkSrc/jdk8/sun/security/jgss/spi/GSSContextSpi.java
Normal file
@@ -0,0 +1,408 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
*
|
||||
* (C) Copyright IBM Corp. 1999 All Rights Reserved.
|
||||
* Copyright 1997 The Open Group Research Institute. All rights reserved.
|
||||
*/
|
||||
package sun.security.jgss.spi;
|
||||
|
||||
import org.ietf.jgss.*;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.security.Provider;
|
||||
import com.sun.security.jgss.*;
|
||||
|
||||
/**
|
||||
* This interface is implemented by a mechanism specific instance of a GSS
|
||||
* security context.
|
||||
* A GSSContextSpi object can be thought of having 3 states:
|
||||
* -before initialization
|
||||
* -during initialization with its peer
|
||||
* -after it is established
|
||||
* <p>
|
||||
* The context options can only be requested in state 1. In state 3,
|
||||
* the per message operations are available to the callers. The get
|
||||
* methods for the context options will return the requested options
|
||||
* while in state 1 and 2, and the established values in state 3.
|
||||
* Some mechanisms may allow the access to the per-message operations
|
||||
* and the context flags before the context is fully established. The
|
||||
* isProtReady method is used to indicate that these services are
|
||||
* available.
|
||||
* <p>
|
||||
* <strong>
|
||||
* Context establishment tokens are defined in a mechanism independent
|
||||
* format in section 3.1 of RFC 2743. The GSS-Framework will add
|
||||
* and remove the mechanism independent header portion of this token format
|
||||
* depending on whether a token is received or is being sent. The mechanism
|
||||
* should only generate or expect to read the inner-context token portion.
|
||||
* <br>
|
||||
* On the other hands, tokens used for per-message calls are generated
|
||||
* entirely by the mechanism. It is possible that the mechanism chooses to
|
||||
* encase inner-level per-message tokens in a header similar to that used
|
||||
* for initial tokens, however, this is upto the mechanism to do. The token
|
||||
* to/from the per-message calls are opaque to the GSS-Framework.
|
||||
* </strong>
|
||||
* <p>
|
||||
* An attempt has been made to allow for reading the peer's tokens from an
|
||||
* InputStream and writing tokens for the peer to an OutputStream. This
|
||||
* allows applications to pass in streams that are obtained from their network
|
||||
* connections and thus minimize the buffer copies that will happen. This
|
||||
* is especially important for tokens generated by wrap() which are
|
||||
* proportional in size to the length of the application data being
|
||||
* wrapped, and are probably also the most frequently used type of tokens.
|
||||
* <p>
|
||||
* It is anticipated that most applications will want to use wrap() in a
|
||||
* fashion where they obtain the application bytes to wrap from a byte[]
|
||||
* but want to output the wrap token straight to an
|
||||
* OutputStream. Similarly, they will want to use unwrap() where they read
|
||||
* the token directly form an InputStream but output it to some byte[] for
|
||||
* the application to process. Unfortunately the high level GSS bindings
|
||||
* do not contain overloaded forms of wrap() and unwrap() that do just
|
||||
* this, however we have accomodated those cases here with the expectation
|
||||
* that this will be rolled into the high level bindings sooner or later.
|
||||
*
|
||||
* @author Mayank Upadhyay
|
||||
*/
|
||||
|
||||
public interface GSSContextSpi {
|
||||
|
||||
public Provider getProvider();
|
||||
|
||||
// The specification for the following methods mirrors the
|
||||
// specification of the same methods in the GSSContext interface, as
|
||||
// defined in RFC 2853.
|
||||
|
||||
public void requestLifetime(int lifetime) throws GSSException;
|
||||
|
||||
public void requestMutualAuth(boolean state) throws GSSException;
|
||||
|
||||
public void requestReplayDet(boolean state) throws GSSException;
|
||||
|
||||
public void requestSequenceDet(boolean state) throws GSSException;
|
||||
|
||||
public void requestCredDeleg(boolean state) throws GSSException;
|
||||
|
||||
public void requestAnonymity(boolean state) throws GSSException;
|
||||
|
||||
public void requestConf(boolean state) throws GSSException;
|
||||
|
||||
public void requestInteg(boolean state) throws GSSException;
|
||||
|
||||
public void requestDelegPolicy(boolean state) throws GSSException;
|
||||
|
||||
public void setChannelBinding(ChannelBinding cb) throws GSSException;
|
||||
|
||||
public boolean getCredDelegState();
|
||||
|
||||
public boolean getMutualAuthState();
|
||||
|
||||
public boolean getReplayDetState();
|
||||
|
||||
public boolean getSequenceDetState();
|
||||
|
||||
public boolean getAnonymityState();
|
||||
|
||||
public boolean getDelegPolicyState();
|
||||
|
||||
public boolean isTransferable() throws GSSException;
|
||||
|
||||
public boolean isProtReady();
|
||||
|
||||
public boolean isInitiator();
|
||||
|
||||
public boolean getConfState();
|
||||
|
||||
public boolean getIntegState();
|
||||
|
||||
public int getLifetime();
|
||||
|
||||
public boolean isEstablished();
|
||||
|
||||
public GSSNameSpi getSrcName() throws GSSException;
|
||||
|
||||
public GSSNameSpi getTargName() throws GSSException;
|
||||
|
||||
public Oid getMech() throws GSSException;
|
||||
|
||||
public GSSCredentialSpi getDelegCred() throws GSSException;
|
||||
|
||||
/**
|
||||
* Initiator context establishment call. This method may be
|
||||
* required to be called several times. A CONTINUE_NEEDED return
|
||||
* call indicates that more calls are needed after the next token
|
||||
* is received from the peer.
|
||||
* <p>
|
||||
* This method is called by the GSS-Framework when the application
|
||||
* calls the initSecContext method on the GSSContext implementation
|
||||
* that it has a reference to.
|
||||
* <p>
|
||||
* All overloaded forms of GSSContext.initSecContext() can be handled
|
||||
* with this mechanism level initSecContext. Since the output token
|
||||
* from this method is a fixed size, not exeedingly large, and a one
|
||||
* time deal, an overloaded form that takes an OutputStream has not
|
||||
* been defined. The GSS-Framwork can write the returned byte[] to any
|
||||
* application provided OutputStream. Similarly, any application input
|
||||
* int he form of byte arrays will be wrapped in an input stream by the
|
||||
* GSS-Framework and then passed here.
|
||||
* <p>
|
||||
* <strong>
|
||||
* The GSS-Framework will strip off the leading mechanism independent
|
||||
* GSS-API header. In other words, only the mechanism specific
|
||||
* inner-context token of RFC 2743 section 3.1 will be available on the
|
||||
* InputStream.
|
||||
* </strong>
|
||||
*
|
||||
* @param is contains the inner context token portion of the GSS token
|
||||
* received from the peer. On the first call to initSecContext, there
|
||||
* will be no token hence it will be ignored.
|
||||
* @param mechTokenSize the size of the inner context token as read by
|
||||
* the GSS-Framework from the mechanism independent GSS-API level
|
||||
* header.
|
||||
* @return any inner-context token required to be sent to the peer as
|
||||
* part of a GSS token. The mechanism should not add the mechanism
|
||||
* independent part of the token. The GSS-Framework will add that on
|
||||
* the way out.
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public byte[] initSecContext(InputStream is, int mechTokenSize)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* Acceptor's context establishment call. This method may be
|
||||
* required to be called several times. A CONTINUE_NEEDED return
|
||||
* call indicates that more calls are needed after the next token
|
||||
* is received from the peer.
|
||||
* <p>
|
||||
* This method is called by the GSS-Framework when the application
|
||||
* calls the acceptSecContext method on the GSSContext implementation
|
||||
* that it has a reference to.
|
||||
* <p>
|
||||
* All overloaded forms of GSSContext.acceptSecContext() can be handled
|
||||
* with this mechanism level acceptSecContext. Since the output token
|
||||
* from this method is a fixed size, not exeedingly large, and a one
|
||||
* time deal, an overloaded form that takes an OutputStream has not
|
||||
* been defined. The GSS-Framwork can write the returned byte[] to any
|
||||
* application provided OutputStream. Similarly, any application input
|
||||
* int he form of byte arrays will be wrapped in an input stream by the
|
||||
* GSS-Framework and then passed here.
|
||||
* <p>
|
||||
* <strong>
|
||||
* The GSS-Framework will strip off the leading mechanism independent
|
||||
* GSS-API header. In other words, only the mechanism specific
|
||||
* inner-context token of RFC 2743 section 3.1 will be available on the
|
||||
* InputStream.
|
||||
* </strong>
|
||||
*
|
||||
* @param is contains the inner context token portion of the GSS token
|
||||
* received from the peer.
|
||||
* @param mechTokenSize the size of the inner context token as read by
|
||||
* the GSS-Framework from the mechanism independent GSS-API level
|
||||
* header.
|
||||
* @return any inner-context token required to be sent to the peer as
|
||||
* part of a GSS token. The mechanism should not add the mechanism
|
||||
* independent part of the token. The GSS-Framework will add that on
|
||||
* the way out.
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public byte[] acceptSecContext(InputStream is, int mechTokenSize)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* Queries the context for largest data size to accommodate
|
||||
* the specified protection and for the token to remain less then
|
||||
* maxTokSize.
|
||||
*
|
||||
* @param qop the quality of protection that the context will be
|
||||
* asked to provide.
|
||||
* @param confReq a flag indicating whether confidentiality will be
|
||||
* requested or not
|
||||
* @param maxTokSize the maximum size of the output token
|
||||
* @return the maximum size for the input message that can be
|
||||
* provided to the wrap() method in order to guarantee that these
|
||||
* requirements are met.
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public int getWrapSizeLimit(int qop, boolean confReq, int maxTokSize)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* Provides per-message token encapsulation.
|
||||
*
|
||||
* @param is the user-provided message to be protected
|
||||
* @param os the token to be sent to the peer. It includes
|
||||
* the message from <i>is</i> with the requested protection.
|
||||
* @param msgProp on input it contains the requested qop and
|
||||
* confidentiality state, on output, the applied values
|
||||
* @exception GSSException may be thrown
|
||||
* @see unwrap
|
||||
*/
|
||||
public void wrap(InputStream is, OutputStream os, MessageProp msgProp)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* For apps that want simplicity and don't care about buffer copies.
|
||||
*/
|
||||
public byte[] wrap(byte inBuf[], int offset, int len,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
/**
|
||||
* For apps that care about buffer copies but either cannot use streams
|
||||
* or want to avoid them for whatever reason. (Say, they are using
|
||||
* block ciphers.)
|
||||
*
|
||||
* NOTE: This method is not defined in public class org.ietf.jgss.GSSContext
|
||||
*
|
||||
public int wrap(byte inBuf[], int inOffset, int len,
|
||||
byte[] outBuf, int outOffset,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* For apps that want to read from a specific application provided
|
||||
* buffer but want to write directly to the network stream.
|
||||
*/
|
||||
/*
|
||||
* Can be achieved by converting the input buffer to a
|
||||
* ByteInputStream. Provided to keep the API consistent
|
||||
* with unwrap.
|
||||
*
|
||||
* NOTE: This method is not defined in public class org.ietf.jgss.GSSContext
|
||||
*
|
||||
public void wrap(byte inBuf[], int offset, int len,
|
||||
OutputStream os, MessageProp msgProp)
|
||||
throws GSSException;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Retrieves the message token previously encapsulated in the wrap
|
||||
* call.
|
||||
*
|
||||
* @param is the token from the peer
|
||||
* @param os unprotected message data
|
||||
* @param msgProp will contain the applied qop and confidentiality
|
||||
* of the input token and any informatory status values
|
||||
* @exception GSSException may be thrown
|
||||
* @see wrap
|
||||
*/
|
||||
public void unwrap(InputStream is, OutputStream os,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
/**
|
||||
* For apps that want simplicity and don't care about buffer copies.
|
||||
*/
|
||||
public byte[] unwrap(byte inBuf[], int offset, int len,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
/**
|
||||
* For apps that care about buffer copies but either cannot use streams
|
||||
* or want to avoid them for whatever reason. (Say, they are using
|
||||
* block ciphers.)
|
||||
*
|
||||
* NOTE: This method is not defined in public class org.ietf.jgss.GSSContext
|
||||
*
|
||||
public int unwrap(byte inBuf[], int inOffset, int len,
|
||||
byte[] outBuf, int outOffset,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* For apps that care about buffer copies and want to read
|
||||
* straight from the network, but also want the output in a specific
|
||||
* application provided buffer, say to reduce buffer allocation or
|
||||
* subsequent copy.
|
||||
*
|
||||
* NOTE: This method is not defined in public class org.ietf.jgss.GSSContext
|
||||
*
|
||||
public int unwrap(InputStream is,
|
||||
byte[] outBuf, int outOffset,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
*/
|
||||
|
||||
/**
|
||||
* Applies per-message integrity services.
|
||||
*
|
||||
* @param is the user-provided message
|
||||
* @param os the token to be sent to the peer along with the
|
||||
* message token. The message token <b>is not</b> encapsulated.
|
||||
* @param msgProp on input the desired QOP and output the applied QOP
|
||||
* @exception GSSException
|
||||
*/
|
||||
public void getMIC(InputStream is, OutputStream os,
|
||||
MessageProp msgProp)
|
||||
throws GSSException;
|
||||
|
||||
public byte[] getMIC(byte []inMsg, int offset, int len,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
/**
|
||||
* Checks the integrity of the supplied tokens.
|
||||
* This token was previously generated by getMIC.
|
||||
*
|
||||
* @param is token generated by getMIC
|
||||
* @param msgStr the message to check integrity for
|
||||
* @param mProp will contain the applied QOP and confidentiality
|
||||
* states of the token as well as any informatory status codes
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public void verifyMIC(InputStream is, InputStream msgStr,
|
||||
MessageProp mProp) throws GSSException;
|
||||
|
||||
public void verifyMIC(byte []inTok, int tokOffset, int tokLen,
|
||||
byte[] inMsg, int msgOffset, int msgLen,
|
||||
MessageProp msgProp) throws GSSException;
|
||||
|
||||
/**
|
||||
* Produces a token representing this context. After this call
|
||||
* the context will no longer be usable until an import is
|
||||
* performed on the returned token.
|
||||
*
|
||||
* @return exported context token
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public byte[] export() throws GSSException;
|
||||
|
||||
/**
|
||||
* Releases context resources and terminates the
|
||||
* context between 2 peer.
|
||||
*
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public void dispose() throws GSSException;
|
||||
|
||||
/**
|
||||
* Return the mechanism-specific attribute associated with (@code type}.
|
||||
*
|
||||
* @param type the type of the attribute requested
|
||||
* @return the attribute
|
||||
* @throws GSSException see {@link ExtendedGSSContext#inquireSecContext}
|
||||
* for details
|
||||
*/
|
||||
public Object inquireSecContext(InquireType type)
|
||||
throws GSSException;
|
||||
}
|
108
jdkSrc/jdk8/sun/security/jgss/spi/GSSCredentialSpi.java
Normal file
108
jdkSrc/jdk8/sun/security/jgss/spi/GSSCredentialSpi.java
Normal file
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.security.jgss.spi;
|
||||
|
||||
import org.ietf.jgss.*;
|
||||
import java.security.Provider;
|
||||
|
||||
/**
|
||||
* This interface is implemented by a mechanism specific credential
|
||||
* element. A GSSCredential is conceptually a container class of several
|
||||
* credential elements from different mechanisms.
|
||||
*
|
||||
* @author Mayank Upadhyay
|
||||
*/
|
||||
public interface GSSCredentialSpi {
|
||||
|
||||
public Provider getProvider();
|
||||
|
||||
/**
|
||||
* Called to invalidate this credential element and release
|
||||
* any system recourses and cryptographic information owned
|
||||
* by the credential.
|
||||
*
|
||||
* @exception GSSException with major codes NO_CRED and FAILURE
|
||||
*/
|
||||
public void dispose() throws GSSException;
|
||||
|
||||
/**
|
||||
* Returns the principal name for this credential. The name
|
||||
* is in mechanism specific format.
|
||||
*
|
||||
* @return GSSNameSpi representing principal name of this credential
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public GSSNameSpi getName() throws GSSException;
|
||||
|
||||
/**
|
||||
* Returns the init lifetime remaining.
|
||||
*
|
||||
* @return the init lifetime remaining in seconds
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public int getInitLifetime() throws GSSException;
|
||||
|
||||
|
||||
/**
|
||||
* Returns the accept lifetime remaining.
|
||||
*
|
||||
* @return the accept lifetime remaining in seconds
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public int getAcceptLifetime() throws GSSException;
|
||||
|
||||
/**
|
||||
* Determines if this credential element can be used by a context
|
||||
* initiator.
|
||||
* @return true if it can be used for initiating contexts
|
||||
*/
|
||||
public boolean isInitiatorCredential() throws GSSException;
|
||||
|
||||
/**
|
||||
* Determines if this credential element can be used by a context
|
||||
* acceptor.
|
||||
* @return true if it can be used for accepting contexts
|
||||
*/
|
||||
public boolean isAcceptorCredential() throws GSSException;
|
||||
|
||||
/**
|
||||
* Returns the oid representing the underlying credential
|
||||
* mechanism oid.
|
||||
*
|
||||
* @return the Oid for this credential mechanism
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public Oid getMechanism();
|
||||
|
||||
/**
|
||||
* Impersonates another client.
|
||||
*
|
||||
* @param name the client to impersonate
|
||||
* @return the new credential
|
||||
* @exception GSSException may be thrown
|
||||
*/
|
||||
public GSSCredentialSpi impersonate(GSSNameSpi name) throws GSSException;
|
||||
}
|
115
jdkSrc/jdk8/sun/security/jgss/spi/GSSNameSpi.java
Normal file
115
jdkSrc/jdk8/sun/security/jgss/spi/GSSNameSpi.java
Normal file
@@ -0,0 +1,115 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2005, Oracle and/or its affiliates. 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.security.jgss.spi;
|
||||
|
||||
import org.ietf.jgss.*;
|
||||
import java.security.Provider;
|
||||
|
||||
/**
|
||||
* This interface is implemented by a mechanism specific name element. A
|
||||
* GSSName is conceptually a container class of several name elements from
|
||||
* different mechanisms.
|
||||
*
|
||||
* @author Mayank Upadhyay
|
||||
*/
|
||||
|
||||
public interface GSSNameSpi {
|
||||
|
||||
public Provider getProvider();
|
||||
|
||||
/**
|
||||
* Equals method for the GSSNameSpi objects.
|
||||
* If either name denotes an anonymous principal, the call should
|
||||
* return false.
|
||||
*
|
||||
* @param name to be compared with
|
||||
* @return true if they both refer to the same entity, else false
|
||||
* @exception GSSException with major codes of BAD_NAMETYPE,
|
||||
* BAD_NAME, FAILURE
|
||||
*/
|
||||
public boolean equals(GSSNameSpi name) throws GSSException;
|
||||
|
||||
/**
|
||||
* Compares this <code>GSSNameSpi</code> object to another Object
|
||||
* that might be a <code>GSSNameSpi</code>. The behaviour is exactly
|
||||
* the same as in {@link #equals(GSSNameSpi) equals} except that
|
||||
* no GSSException is thrown; instead, false will be returned in the
|
||||
* situation where an error occurs.
|
||||
*
|
||||
* @param another the object to be compared to
|
||||
* @return true if they both refer to the same entity, else false
|
||||
* @see #equals(GSSNameSpi)
|
||||
*/
|
||||
public boolean equals(Object another);
|
||||
|
||||
/**
|
||||
* Returns a hashcode value for this GSSNameSpi.
|
||||
*
|
||||
* @return a hashCode value
|
||||
*/
|
||||
public int hashCode();
|
||||
|
||||
/**
|
||||
* Returns a flat name representation for this object. The name
|
||||
* format is defined in RFC 2078.
|
||||
*
|
||||
* @return the flat name representation for this object
|
||||
* @exception GSSException with major codes NAME_NOT_MN, BAD_NAME,
|
||||
* BAD_NAME, FAILURE.
|
||||
*/
|
||||
public byte[] export() throws GSSException;
|
||||
|
||||
|
||||
/**
|
||||
* Get the mechanism type that this NameElement corresponds to.
|
||||
*
|
||||
* @return the Oid of the mechanism type
|
||||
*/
|
||||
public Oid getMechanism();
|
||||
|
||||
/**
|
||||
* Returns a string representation for this name. The printed
|
||||
* name type can be obtained by calling getStringNameType().
|
||||
*
|
||||
* @return string form of this name
|
||||
* @see #getStringNameType()
|
||||
* @overrides Object#toString
|
||||
*/
|
||||
public String toString();
|
||||
|
||||
|
||||
/**
|
||||
* Returns the oid describing the format of the printable name.
|
||||
*
|
||||
* @return the Oid for the format of the printed name
|
||||
*/
|
||||
public Oid getStringNameType();
|
||||
|
||||
/**
|
||||
* Indicates if this name object represents an Anonymous name.
|
||||
*/
|
||||
public boolean isAnonymousName();
|
||||
}
|
214
jdkSrc/jdk8/sun/security/jgss/spi/MechanismFactory.java
Normal file
214
jdkSrc/jdk8/sun/security/jgss/spi/MechanismFactory.java
Normal file
@@ -0,0 +1,214 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2006, Oracle and/or its affiliates. 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. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.security.jgss.spi;
|
||||
|
||||
import org.ietf.jgss.*;
|
||||
import java.security.Provider;
|
||||
|
||||
/**
|
||||
* This interface is implemented by the factory class for every
|
||||
* plugin mechanism. The GSSManager locates an implementation of this
|
||||
* interface by querying the security providers installed on the
|
||||
* system. For a provider to support a mechanism defined by Oid x.y.z,
|
||||
* the provider master file would have to contain a mapping from the
|
||||
* property "GssApiMechanism.x.y.z" to an implementation class that serves
|
||||
* as the factory for that mechanism.
|
||||
* <p>
|
||||
* e.g., If a provider master file contained the a mapping from the
|
||||
* property "GssApiMechanism.1.2.840.113554.1.2.2" to the class name
|
||||
* "com.foo.krb5.Krb5GssFactory", then the GSS-API framework would assume
|
||||
* that com.foo.krb5.Krb5GssFactory implements the MechanismFactory
|
||||
* interface and that it can be used to obtain elements required by for
|
||||
* supporting this mechanism.
|
||||
*
|
||||
* @author Mayank Upadhyay
|
||||
*/
|
||||
|
||||
public interface MechanismFactory {
|
||||
|
||||
/**
|
||||
* Returns the Oid of the mechanism that this factory supports.
|
||||
* @return the Oid
|
||||
*/
|
||||
public Oid getMechanismOid();
|
||||
|
||||
/**
|
||||
* Returns the provider that this factory came from.
|
||||
* @return the provider
|
||||
*/
|
||||
public Provider getProvider();
|
||||
|
||||
/**
|
||||
* Returns the GSS-API nametypes that this mechanism can
|
||||
* support. Having this method helps the GSS-Framework decide quickly
|
||||
* if a certain mechanism can be skipped when importing a name.
|
||||
* @return an array of the Oid's corresponding to the different GSS-API
|
||||
* nametypes supported
|
||||
* @see org.ietf.jgss.GSSName
|
||||
*/
|
||||
public Oid[] getNameTypes() throws GSSException;
|
||||
|
||||
/**
|
||||
* Creates a credential element for this mechanism to be included as
|
||||
* part of a GSSCredential implementation. A GSSCredential is
|
||||
* conceptually a container class of several credential elements from
|
||||
* different mechanisms. A GSS-API credential can be used either for
|
||||
* initiating GSS security contexts or for accepting them. This method
|
||||
* also accepts parameters that indicate what usage is expected and how
|
||||
* long the life of the credential should be. It is not necessary that
|
||||
* the mechanism honor the request for lifetime. An application will
|
||||
* always query an acquired GSSCredential to determine what lifetime it
|
||||
* got back.<p>
|
||||
*
|
||||
* <b>Not all mechanisms support the concept of one credential element
|
||||
* that can be used for both initiating and accepting a context. In the
|
||||
* event that an application requests usage INITIATE_AND_ACCEPT for a
|
||||
* credential from such a mechanism, the GSS framework will need to
|
||||
* obtain two different credential elements from the mechanism, one
|
||||
* that will have usage INITIATE_ONLY and another that will have usage
|
||||
* ACCEPT_ONLY. The mechanism will help the GSS-API realize this by
|
||||
* returning a credential element with usage INITIATE_ONLY or
|
||||
* ACCEPT_ONLY prompting it to make another call to
|
||||
* getCredentialElement, this time with the other usage mode. The
|
||||
* mechanism indicates the missing mode by returning a 0 lifetime for
|
||||
* it.</b>
|
||||
*
|
||||
* @param name the mechanism level name element for the entity whose
|
||||
* credential is desired. A null value indicates that a mechanism
|
||||
* dependent default choice is to be made.
|
||||
* @param initLifetime indicates the lifetime (in seconds) that is
|
||||
* requested for this credential to be used at the context initiator's
|
||||
* end. This value should be ignored if the usage is
|
||||
* ACCEPT_ONLY. Predefined contants are available in the
|
||||
* org.ietf.jgss.GSSCredential interface.
|
||||
* @param acceptLifetime indicates the lifetime (in seconds) that is
|
||||
* requested for this credential to be used at the context acceptor's
|
||||
* end. This value should be ignored if the usage is
|
||||
* INITIATE_ONLY. Predefined contants are available in the
|
||||
* org.ietf.jgss.GSSCredential interface.
|
||||
* @param usage One of the values GSSCredential.INIATE_ONLY,
|
||||
* GSSCredential.ACCEPT_ONLY, and GSSCredential.INITIATE_AND_ACCEPT.
|
||||
* @see org.ietf.jgss.GSSCredential
|
||||
* @throws GSSException if one of the error situations described in RFC
|
||||
* 2743 with the GSS_Acquire_Cred or GSS_Add_Cred calls occurs.
|
||||
*/
|
||||
public GSSCredentialSpi getCredentialElement(GSSNameSpi name,
|
||||
int initLifetime, int acceptLifetime, int usage) throws GSSException;
|
||||
|
||||
/**
|
||||
* Creates a name element for this mechanism to be included as part of
|
||||
* a GSSName implementation. A GSSName is conceptually a container
|
||||
* class of several name elements from different mechanisms. A GSSName
|
||||
* can be created either with a String or with a sequence of
|
||||
* bytes. This factory method accepts the name in a String. Such a name
|
||||
* can generally be assumed to be printable and may be returned from
|
||||
* the name element's toString() method.
|
||||
*
|
||||
* @param nameStr a string containing the characters describing this
|
||||
* entity to the mechanism
|
||||
* @param nameType an Oid serving as a clue as to how the mechanism should
|
||||
* interpret the nameStr
|
||||
* @throws GSSException if any of the errors described in RFC 2743 for
|
||||
* the GSS_Import_Name or GSS_Canonicalize_Name calls occur.
|
||||
*/
|
||||
public GSSNameSpi getNameElement(String nameStr, Oid nameType)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* This is a variation of the factory method that accepts a String for
|
||||
* the characters that make up the name. Usually the String characters
|
||||
* are assumed to be printable. The bytes passed in to this method have
|
||||
* to be converted to characters using some encoding of the mechanism's
|
||||
* choice. It is recommended that UTF-8 be used. (Note that UTF-8
|
||||
* preserves the encoding for 7-bit ASCII characters.)
|
||||
* <p>
|
||||
* An exported name will generally be passed in using this method.
|
||||
*
|
||||
* @param name the bytes describing this entity to the mechanism
|
||||
* @param nameType an Oid serving as a clue as to how the mechanism should
|
||||
* interpret the nameStr
|
||||
* @throws GSSException if any of the errors described in RFC 2743 for
|
||||
* the GSS_Import_Name or GSS_Canonicalize_Name calls occur.
|
||||
*/
|
||||
public GSSNameSpi getNameElement(byte[] name, Oid nameType)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* Creates a security context for this mechanism so that it can be used
|
||||
* on the context initiator's side.
|
||||
*
|
||||
* @param peer the name element from this mechanism that represents the
|
||||
* peer
|
||||
* @param myInitiatorCred a credential element for the context
|
||||
* initiator obtained previously from this mechanism. The identity of
|
||||
* the context initiator can be obtained from this credential. Passing
|
||||
* a value of null here indicates that a default entity of the
|
||||
* mechanism's choice should be assumed to be the context initiator and
|
||||
* that default credentials should be applied.
|
||||
* @param lifetime the requested lifetime (in seconds) for the security
|
||||
* context. Predefined contants are available in the
|
||||
* org.ietf.jgss.GSSContext interface.
|
||||
* @throws GSSException if any of the errors described in RFC 2743 in
|
||||
* the GSS_Init_Sec_Context call occur.
|
||||
*/
|
||||
public GSSContextSpi getMechanismContext(GSSNameSpi peer,
|
||||
GSSCredentialSpi myInitiatorCred,
|
||||
int lifetime) throws GSSException;
|
||||
|
||||
/**
|
||||
* Creates a security context for this mechanism so thatit can be used
|
||||
* on the context acceptor's side.
|
||||
*
|
||||
* @param myAcceptorCred a credential element for the context acceptor
|
||||
* obtained previously from this mechanism. The identity of the context
|
||||
* acceptor cna be obtained from this credential. Passing a value of
|
||||
* null here indicates that tha default entity of the mechanism's
|
||||
* choice should be assumed to be the context acceptor and default
|
||||
* credentials should be applied.
|
||||
*
|
||||
* @throws GSSException if any of the errors described in RFC 2743 in
|
||||
* the GSS_Accept_Sec_Context call occur.
|
||||
*/
|
||||
public GSSContextSpi getMechanismContext(GSSCredentialSpi myAcceptorCred)
|
||||
throws GSSException;
|
||||
|
||||
/**
|
||||
* Creates a security context from a previously exported (serialized)
|
||||
* security context. Note that this is different from Java
|
||||
* serialization and is defined at a mechanism level to interoperate
|
||||
* over the wire with non-Java implementations. Either the initiator or
|
||||
* the acceptor can export and then import a security context.
|
||||
* Implementations of mechanism contexts are not required to implement
|
||||
* exporting and importing.
|
||||
*
|
||||
* @param exportedContext the bytes representing this security context
|
||||
* @throws GSSException is any of the errors described in RFC 2743 in
|
||||
* the GSS_Import_Sec_Context call occur.
|
||||
*/
|
||||
public GSSContextSpi getMechanismContext(byte[] exportedContext)
|
||||
throws GSSException;
|
||||
|
||||
}
|
Reference in New Issue
Block a user