| sun.security.mule.jgss.spi.GSSContextSpi |
Known Indirect Subclasses
| Krb5Context |
Implements the mechanism specific context class for the Kerberos v5
GSS-API mechanism. |
| SpNegoContext |
Implements the mechanism specific context class for SPNEGO
GSS-API mechanism |
|
Class Overview
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
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.
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..
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.
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.
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.
Summary
| Public Methods |
|
abstract
byte[]
|
acceptSecContext(InputStream is, int mechTokenSize)
Acceptor's context establishment call.
|
|
abstract
void
|
dispose()
Releases context resources and terminates the
context between 2 peer.
|
|
abstract
byte[]
|
export()
Produces a token representing this context.
|
|
abstract
boolean
|
getAnonymityState()
|
|
abstract
boolean
|
getConfState()
|
|
abstract
boolean
|
getCredDelegState()
|
|
abstract
GSSCredentialSpi
|
getDelegCred()
|
|
abstract
boolean
|
getIntegState()
|
|
abstract
int
|
getLifetime()
|
|
abstract
byte[]
|
getMIC(byte[] inMsg, int offset, int len, MessageProp msgProp)
|
|
abstract
void
|
getMIC(InputStream is, OutputStream os, MessageProp msgProp)
Applies per-message integrity services.
|
|
abstract
Oid
|
getMech()
|
|
abstract
boolean
|
getMutualAuthState()
|
|
abstract
Provider
|
getProvider()
|
|
abstract
boolean
|
getReplayDetState()
|
|
abstract
boolean
|
getSequenceDetState()
|
|
abstract
GSSNameSpi
|
getSrcName()
|
|
abstract
GSSNameSpi
|
getTargName()
|
|
abstract
int
|
getWrapSizeLimit(int qop, boolean confReq, int maxTokSize)
Queries the context for largest data size to accomodate
the specified protection and for the token to remain less then
maxTokSize.
|
|
abstract
byte[]
|
initSecContext(InputStream is, int mechTokenSize)
Initiator context establishment call.
|
|
abstract
boolean
|
isEstablished()
|
|
abstract
boolean
|
isInitiator()
|
|
abstract
boolean
|
isProtReady()
|
|
abstract
boolean
|
isTransferable()
|
|
abstract
void
|
requestAnonymity(boolean state)
|
|
abstract
void
|
requestConf(boolean state)
|
|
abstract
void
|
requestCredDeleg(boolean state)
|
|
abstract
void
|
requestInteg(boolean state)
|
|
abstract
void
|
requestLifetime(int lifetime)
|
|
abstract
void
|
requestMutualAuth(boolean state)
|
|
abstract
void
|
requestReplayDet(boolean state)
|
|
abstract
void
|
requestSequenceDet(boolean state)
|
|
abstract
void
|
setChannelBinding(ChannelBinding cb)
|
|
abstract
byte[]
|
unwrap(byte[] inBuf, int offset, int len, MessageProp msgProp)
For apps that want simplicity and dont care about buffer copies.
|
|
abstract
void
|
unwrap(InputStream is, OutputStream os, MessageProp msgProp)
Retrieves the message token previously encapsulated in the wrap
call.
|
|
abstract
void
|
verifyMIC(InputStream is, InputStream msgStr, MessageProp mProp)
Checks the integrity of the supplied tokens.
|
|
abstract
void
|
verifyMIC(byte[] inTok, int tokOffset, int tokLen, byte[] inMsg, int msgOffset, int msgLen, MessageProp msgProp)
|
|
abstract
byte[]
|
wrap(byte[] inBuf, int offset, int len, MessageProp msgProp)
For apps that want simplicity and don't care about buffer copies.
|
|
abstract
void
|
wrap(InputStream is, OutputStream os, MessageProp msgProp)
Provides per-message token encapsulation.
|
Public Methods
public
abstract
byte[]
acceptSecContext
(InputStream is, int mechTokenSize)
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.
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.
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.
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.
Parameters
| is
| Contains the inner context token portion of the GSS token
received from the peer. |
| mechTokenSize
| The size of the inner context token as read by
the GSS-Framework from the mechanism independent GSS-API level
header. |
Returns
- 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.
Throws
| GSSException
| may be thrown
|
public
abstract
void
dispose
()
Releases context resources and terminates the
context between 2 peer.
Throws
| GSSException
| may be thrown
|
public
abstract
byte[]
export
()
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.
Throws
| GSSException
| may be thrown
|
public
abstract
boolean
getAnonymityState
()
public
abstract
boolean
getConfState
()
public
abstract
boolean
getCredDelegState
()
public
abstract
boolean
getIntegState
()
public
abstract
int
getLifetime
()
public
abstract
byte[]
getMIC
(byte[] inMsg, int offset, int len, MessageProp msgProp)
public
abstract
void
getMIC
(InputStream is, OutputStream os, MessageProp msgProp)
Applies per-message integrity services.
Parameters
| is
| The user-provided message |
| os
| The token to be sent to the peer along with the
message token. The message token is not encapsulated. |
| msgProp
| On input the desired QOP and output the applied QOP |
public
abstract
Oid
getMech
()
public
abstract
boolean
getMutualAuthState
()
public
abstract
Provider
getProvider
()
public
abstract
boolean
getReplayDetState
()
public
abstract
boolean
getSequenceDetState
()
public
abstract
int
getWrapSizeLimit
(int qop, boolean confReq, int maxTokSize)
Queries the context for largest data size to accomodate
the specified protection and for the token to remain less then
maxTokSize.
Parameters
| qop
| The quality of protection that the context will be
asked to provide. |
| confReq
| A flag indicating whether confidentiality will be
requested or not |
| maxTokSize
| |
Returns
- the maximum size for the input message that can be
provided to the wrap() method in order to guarantee that these
requirements are met.
Throws
| GSSException
| may be thrown
|
public
abstract
byte[]
initSecContext
(InputStream is, int mechTokenSize)
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.
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.
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.
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.
Parameters
| 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. |
| mechTokenSize
| The size of the inner context token as read by
the GSS-Framework from the mechanism independent GSS-API level
header. |
Returns
- 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.
Throws
| GSSException
| may be thrown
|
public
abstract
boolean
isEstablished
()
public
abstract
boolean
isInitiator
()
public
abstract
boolean
isProtReady
()
public
abstract
boolean
isTransferable
()
public
abstract
void
requestAnonymity
(boolean state)
public
abstract
void
requestConf
(boolean state)
public
abstract
void
requestCredDeleg
(boolean state)
public
abstract
void
requestInteg
(boolean state)
public
abstract
void
requestLifetime
(int lifetime)
public
abstract
void
requestMutualAuth
(boolean state)
public
abstract
void
requestReplayDet
(boolean state)
public
abstract
void
requestSequenceDet
(boolean state)
public
abstract
void
setChannelBinding
(ChannelBinding cb)
public
abstract
byte[]
unwrap
(byte[] inBuf, int offset, int len, MessageProp msgProp)
For apps that want simplicity and dont care about buffer copies.
public
abstract
void
unwrap
(InputStream is, OutputStream os, MessageProp msgProp)
Retrieves the message token previously encapsulated in the wrap
call.
Parameters
| is
| The token from the peer |
| os
| Unprotected message data |
| msgProp
| Will contain the applied qop and confidentiality
of the input token and any informatory status values |
Throws
| GSSException
| may be thrown |
public
abstract
void
verifyMIC
(InputStream is, InputStream msgStr, MessageProp mProp)
Checks the integrity of the supplied tokens.
This token was previously generated by getMIC.
Parameters
| is
| Token generated by getMIC |
| msgStr
| The message to check integrity for |
| mProp
| |
Throws
| GSSException
| may be thrown
|
public
abstract
void
verifyMIC
(byte[] inTok, int tokOffset, int tokLen, byte[] inMsg, int msgOffset, int msgLen, MessageProp msgProp)
Parameters
| inTok
| |
| tokOffset
| |
| tokLen
| |
| inMsg
| |
| msgOffset
| |
| msgLen
| |
| msgProp
| |
public
abstract
byte[]
wrap
(byte[] inBuf, int offset, int len, MessageProp msgProp)
For apps that want simplicity and don't care about buffer copies.
public
abstract
void
wrap
(InputStream is, OutputStream os, MessageProp msgProp)
Provides per-message token encapsulation.
Parameters
| is
| The user-provided message to be protected |
| os
| The token to be sent to the peer. It includes
the message from is with the requested protection. |
| msgProp
| |
Throws
| GSSException
| may be thrown |