|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
org.globus.gsi.gssapi
Class GlobusGSSContextImpl
java.lang.Object | +--org.globus.gsi.gssapi.GlobusGSSContextImpl
- All Implemented Interfaces:
- ExtendedGSSContext, GSSContext
- public class GlobusGSSContextImpl
- extends Object
- implements ExtendedGSSContext
- extends Object
Implementation of SSL/GSI mechanism for Java GSS-API. The implementation
is based on the PureTLS library
(for SSL API) and the
BouncyCastle library
(for certificate processing API).
The implementation is not designed to be thread-safe.
| Field Summary | |
protected boolean |
anonymity
|
protected BouncyCastleCertProcessingFactory |
certFactory
|
protected Boolean |
checkContextExpiration
|
protected COM.claymoresystems.ptls.SSLConn |
conn
|
protected PureTLSContext |
context
|
protected boolean |
credentialDelegation
|
protected GlobusGSSCredentialImpl |
ctxCred
Credential of this context. |
protected ExtendedGSSCredential |
delegatedCred
Credential delegated using delegation API |
protected boolean |
delegationFinished
Delegation finished indicator |
protected int |
delegationState
Delegation state |
protected Integer |
delegationType
|
protected ExtendedGSSCredential |
delegCred
Credential delegated during context establishment |
protected boolean |
encryption
|
protected boolean |
established
|
protected GSSName |
expectedTargetName
Expected target name. |
protected Date |
goodUntil
Context expiration date. |
protected ProxyPolicyHandler |
grimPolicyHandler
|
static int |
GSI_WRAP
Used to distinguish between a token created by wrap with GSSConstants.GSI_BIG
QoP and a regular token created by wrap. |
protected Integer |
gssMode
|
protected TokenInputStream |
in
|
protected KeyPair |
keyPair
Used during delegation |
protected ByteArrayOutputStream |
out
|
protected COM.claymoresystems.sslg.SSLPolicyInt |
policy
|
protected Boolean |
rejectLimitedProxy
|
protected Boolean |
requireClientAuth
|
protected int |
role
Context role |
protected GSSName |
sourceName
The name of the context initiator |
protected int |
state
Handshake state |
protected GSSName |
targetName
The name of the context acceptor |
protected TrustedCertificates |
tc
|
| Fields inherited from interface org.ietf.jgss.GSSContext |
DEFAULT_LIFETIME, INDEFINITE_LIFETIME |
| Constructor Summary | |
GlobusGSSContextImpl(GSSName target,
GlobusGSSCredentialImpl cred)
|
|
| Method Summary | |
byte[] |
acceptDelegation(int lifetime,
byte[] buf,
int off,
int len)
Accept a delegated credential. |
byte[] |
acceptSecContext(byte[] inBuff,
int off,
int len)
This function drives the accepting side of the context establishment process. |
void |
acceptSecContext(InputStream in,
OutputStream out)
It works just like acceptSecContext
method. |
protected void |
checkContext()
|
void |
dispose()
|
byte[] |
export()
Currently not implemented. |
protected byte[] |
generateCertRequest(X509Certificate cert)
|
boolean |
getAnonymityState()
|
boolean |
getConfState()
|
boolean |
getCredDelegState()
|
GSSCredential |
getDelegatedCredential()
Returns the delegated credential that was delegated using the initDelegation and acceptDelegation
functions. |
protected int |
getDelegationType(X509Certificate issuer)
|
GSSCredential |
getDelegCred()
|
boolean |
getIntegState()
|
int |
getLifetime()
|
Oid |
getMech()
|
byte[] |
getMIC(byte[] inBuf,
int off,
int len,
MessageProp prop)
Returns a cryptographic MIC (message integrity check) of a specified message. |
void |
getMIC(InputStream inStream,
OutputStream outStream,
MessageProp msgProp)
Currently not implemented. |
boolean |
getMutualAuthState()
|
Object |
getOption(Oid option)
Gets a context option. |
boolean |
getReplayDetState()
|
boolean |
getSequenceDetState()
|
GSSName |
getSrcName()
|
GSSName |
getTargName()
|
int |
getWrapSizeLimit(int qop,
boolean confReq,
int maxTokenSize)
Currently not implemented. |
byte[] |
initDelegation(GSSCredential credential,
Oid mechanism,
int lifetime,
byte[] buf,
int off,
int len)
Initiate the delegation of a credential. |
byte[] |
initSecContext(byte[] inBuff,
int off,
int len)
This function drives the initiating side of the context establishment process. |
int |
initSecContext(InputStream in,
OutputStream out)
It works just like initSecContext method. |
boolean |
isDelegationFinished()
Used during delegation to determine the state of the delegation. |
boolean |
isEstablished()
|
boolean |
isInitiator()
|
boolean |
isProtReady()
|
boolean |
isTransferable()
Currently not implemented. |
void |
requestAnonymity(boolean state)
|
void |
requestConf(boolean state)
|
void |
requestCredDeleg(boolean state)
|
void |
requestInteg(boolean state)
|
void |
requestLifetime(int lifetime)
|
void |
requestMutualAuth(boolean state)
|
void |
requestReplayDet(boolean state)
|
void |
requestSequenceDet(boolean state)
|
void |
setChannelBinding(ChannelBinding cb)
Currently not implemented. |
protected void |
setCheckContextExpired(Object value)
|
protected void |
setDelegationType(Object value)
|
protected void |
setGrimPolicyHandler(Object value)
|
protected void |
setGssMode(Object value)
|
void |
setOption(Oid option,
Object value)
Sets a context option. |
protected void |
setRejectLimitedProxy(Object value)
|
protected void |
setRequireClientAuth(Object value)
|
protected void |
setTrustedCertificates(Object value)
|
byte[] |
unwrap(byte[] inBuf,
int off,
int len,
MessageProp prop)
Unwraps a token generated by wrap method on the other side of the context. |
void |
unwrap(InputStream inStream,
OutputStream outStream,
MessageProp msgProp)
Currently not implemented. |
protected void |
verifyDelegatedCert(X509Certificate certificate)
|
void |
verifyMIC(byte[] inTok,
int tokOff,
int tokLen,
byte[] inMsg,
int msgOff,
int msgLen,
MessageProp prop)
Verifies a cryptographic MIC (message integrity check) of a specified message. |
void |
verifyMIC(InputStream tokStream,
InputStream msgStream,
MessageProp msgProp)
Currently not implemented. |
byte[] |
wrap(byte[] inBuf,
int off,
int len,
MessageProp prop)
Wraps a message for integrity and protection. |
void |
wrap(InputStream inStream,
OutputStream outStream,
MessageProp msgProp)
Currently not implemented. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
GSI_WRAP
public static final int GSI_WRAP
- Used to distinguish between a token created by
wrapwithGSSConstants.GSI_BIGQoP and a regular token created bywrap.
state
protected int state
- Handshake state
delegationState
protected int delegationState
- Delegation state
delegatedCred
protected ExtendedGSSCredential delegatedCred
- Credential delegated using delegation API
delegationFinished
protected boolean delegationFinished
- Delegation finished indicator
credentialDelegation
protected boolean credentialDelegation
anonymity
protected boolean anonymity
encryption
protected boolean encryption
established
protected boolean established
sourceName
protected GSSName sourceName
- The name of the context initiator
targetName
protected GSSName targetName
- The name of the context acceptor
role
protected int role
- Context role
delegCred
protected ExtendedGSSCredential delegCred
- Credential delegated during context establishment
delegationType
protected Integer delegationType
gssMode
protected Integer gssMode
checkContextExpiration
protected Boolean checkContextExpiration
rejectLimitedProxy
protected Boolean rejectLimitedProxy
requireClientAuth
protected Boolean requireClientAuth
ctxCred
protected GlobusGSSCredentialImpl ctxCred
- Credential of this context. Might be anonymous
expectedTargetName
protected GSSName expectedTargetName
- Expected target name. Used for authorization in initiator
goodUntil
protected Date goodUntil
- Context expiration date.
conn
protected COM.claymoresystems.ptls.SSLConn conn
context
protected PureTLSContext context
policy
protected COM.claymoresystems.sslg.SSLPolicyInt policy
in
protected TokenInputStream in
out
protected ByteArrayOutputStream out
certFactory
protected BouncyCastleCertProcessingFactory certFactory
keyPair
protected KeyPair keyPair
- Used during delegation
tc
protected TrustedCertificates tc
grimPolicyHandler
protected ProxyPolicyHandler grimPolicyHandler
| Constructor Detail |
GlobusGSSContextImpl
public GlobusGSSContextImpl(GSSName target, GlobusGSSCredentialImpl cred) throws GSSException
- Parameters:
target- expected target name. Can be null.cred- credential. Cannot be null. Might be anonymous.
| Method Detail |
acceptSecContext
public byte[] acceptSecContext(byte[] inBuff,
int off,
int len)
throws GSSException
- This function drives the accepting side of the context establishment
process. It is expected to be called in tandem with the
initSecContextfunction.
The behavior of context establishment process can be modified byGSSConstants.GSS_MODEandGSSConstants.REJECT_LIMITED_PROXYcontext options. If theGSSConstants.GSS_MODEoption is set toGSIConstants.MODE_SSLthe context establishment process will be compatible with regular SSL (no credential delegation support). If the option is set toGSIConstants.MODE_GSIcredential delegation during context establishment process will be accepted. If theGSSConstants.REJECT_LIMITED_PROXYoption is enabled, a peer presenting limited proxy credential will be automatically rejected and the context establishment process will be aborted.- Specified by:
acceptSecContextin interfaceGSSContext
- Returns:
- a byte[] containing the token to be sent to the peer. null indicates that no token is generated (needs more data)
initSecContext
public byte[] initSecContext(byte[] inBuff,
int off,
int len)
throws GSSException
- This function drives the initiating side of the context establishment
process. It is expected to be called in tandem with the
acceptSecContextfunction.
The behavior of context establishment process can be modified byGSSConstants.GSS_MODE,GSSConstants.DELEGATION_TYPE, andGSSConstants.REJECT_LIMITED_PROXYcontext options. If theGSSConstants.GSS_MODEoption is set toGSIConstants.MODE_SSLthe context establishment process will be compatible with regular SSL (no credential delegation support). If the option is set toGSIConstants.GSS_MODE_GSIcredential delegation during context establishment process will performed. The delegation type to be performed can be set using theGSSConstants.DELEGATION_TYPEcontext option. If theGSSConstants.REJECT_LIMITED_PROXYoption is enabled, a peer presenting limited proxy credential will be automatically rejected and the context establishment process will be aborted.- Specified by:
initSecContextin interfaceGSSContext
- Returns:
- a byte[] containing the token to be sent to the peer. null indicates that no token is generated (needs more data).
wrap
public byte[] wrap(byte[] inBuf,
int off,
int len,
MessageProp prop)
throws GSSException
- Wraps a message for integrity and protection.
Returns a GSI-wrapped token when privacy is not requested and
QOP requested is set to
GSSConstants.GSI_BIG. Otherwise a regular SSL-wrapped token is returned.- Specified by:
wrapin interfaceGSSContext
unwrap
public byte[] unwrap(byte[] inBuf,
int off,
int len,
MessageProp prop)
throws GSSException
- Unwraps a token generated by
wrapmethod on the other side of the context. The input token can either be a regular SSL-wrapped token or GSI-wrapped token. Upon return from the method theMessagePropobject will contain the applied QOP and privacy state of the message. In case of GSI-wrapped token the applied QOP will be set toGSSConstants.GSI_BIG- Specified by:
unwrapin interfaceGSSContext
dispose
public void dispose()
throws GSSException
- Specified by:
disposein interfaceGSSContext
isEstablished
public boolean isEstablished()
- Specified by:
isEstablishedin interfaceGSSContext
requestCredDeleg
public void requestCredDeleg(boolean state)
throws GSSException
- Specified by:
requestCredDelegin interfaceGSSContext
getCredDelegState
public boolean getCredDelegState()
- Specified by:
getCredDelegStatein interfaceGSSContext
isInitiator
public boolean isInitiator()
throws GSSException
- Specified by:
isInitiatorin interfaceGSSContext
isProtReady
public boolean isProtReady()
- Specified by:
isProtReadyin interfaceGSSContext
requestLifetime
public void requestLifetime(int lifetime)
throws GSSException
- Specified by:
requestLifetimein interfaceGSSContext
getLifetime
public int getLifetime()
- Specified by:
getLifetimein interfaceGSSContext
getMech
public Oid getMech() throws GSSException
- Specified by:
getMechin interfaceGSSContext
getDelegCred
public GSSCredential getDelegCred() throws GSSException
- Specified by:
getDelegCredin interfaceGSSContext
requestConf
public void requestConf(boolean state)
throws GSSException
- Specified by:
requestConfin interfaceGSSContext
getConfState
public boolean getConfState()
- Specified by:
getConfStatein interfaceGSSContext
getMIC
public byte[] getMIC(byte[] inBuf,
int off,
int len,
MessageProp prop)
throws GSSException
- Returns a cryptographic MIC (message integrity check)
of a specified message.
- Specified by:
getMICin interfaceGSSContext
verifyMIC
public void verifyMIC(byte[] inTok,
int tokOff,
int tokLen,
byte[] inMsg,
int msgOff,
int msgLen,
MessageProp prop)
throws GSSException
- Verifies a cryptographic MIC (message integrity check)
of a specified message.
- Specified by:
verifyMICin interfaceGSSContext
initSecContext
public int initSecContext(InputStream in, OutputStream out) throws GSSException
- It works just like
initSecContextmethod. It reads one SSL token from input stream, callsacceptSecContextmethod and writes the output token to the output stream (if any) SSL token is not read on the initial call.- Specified by:
initSecContextin interfaceGSSContext
acceptSecContext
public void acceptSecContext(InputStream in, OutputStream out) throws GSSException
- It works just like
acceptSecContextmethod. It reads one SSL token from input stream, callsacceptSecContextmethod and writes the output token to the output stream (if any)- Specified by:
acceptSecContextin interfaceGSSContext
getSrcName
public GSSName getSrcName() throws GSSException
- Specified by:
getSrcNamein interfaceGSSContext
getTargName
public GSSName getTargName() throws GSSException
- Specified by:
getTargNamein interfaceGSSContext
requestInteg
public void requestInteg(boolean state)
throws GSSException
- Specified by:
requestIntegin interfaceGSSContext
getIntegState
public boolean getIntegState()
- Specified by:
getIntegStatein interfaceGSSContext
requestSequenceDet
public void requestSequenceDet(boolean state)
throws GSSException
- Specified by:
requestSequenceDetin interfaceGSSContext
getSequenceDetState
public boolean getSequenceDetState()
- Specified by:
getSequenceDetStatein interfaceGSSContext
requestReplayDet
public void requestReplayDet(boolean state)
throws GSSException
- Specified by:
requestReplayDetin interfaceGSSContext
getReplayDetState
public boolean getReplayDetState()
- Specified by:
getReplayDetStatein interfaceGSSContext
requestAnonymity
public void requestAnonymity(boolean state)
throws GSSException
- Specified by:
requestAnonymityin interfaceGSSContext
getAnonymityState
public boolean getAnonymityState()
- Specified by:
getAnonymityStatein interfaceGSSContext
requestMutualAuth
public void requestMutualAuth(boolean state)
throws GSSException
- Specified by:
requestMutualAuthin interfaceGSSContext
getMutualAuthState
public boolean getMutualAuthState()
- Specified by:
getMutualAuthStatein interfaceGSSContext
generateCertRequest
protected byte[] generateCertRequest(X509Certificate cert) throws GeneralSecurityException
verifyDelegatedCert
protected void verifyDelegatedCert(X509Certificate certificate) throws GeneralSecurityException
checkContext
protected void checkContext()
throws GSSException
getDelegationType
protected int getDelegationType(X509Certificate issuer) throws GeneralSecurityException, GSSException
setGssMode
protected void setGssMode(Object value) throws GSSException
setDelegationType
protected void setDelegationType(Object value) throws GSSException
setCheckContextExpired
protected void setCheckContextExpired(Object value) throws GSSException
setRejectLimitedProxy
protected void setRejectLimitedProxy(Object value) throws GSSException
setRequireClientAuth
protected void setRequireClientAuth(Object value) throws GSSException
setGrimPolicyHandler
protected void setGrimPolicyHandler(Object value) throws GSSException
setTrustedCertificates
protected void setTrustedCertificates(Object value) throws GSSException
setOption
public void setOption(Oid option, Object value) throws GSSException
- Description copied from interface:
ExtendedGSSContext - Sets a context option. It can be called by context initiator or acceptor
but prior to the first call to initSecContext, acceptSecContext, initDelegation
or acceptDelegation.
- Specified by:
setOptionin interfaceExtendedGSSContext
- Following copied from interface:
org.gridforum.jgss.ExtendedGSSContext- Parameters:
option- option type.value- option value.- Throws:
GSSException- containing the following major error codes:GSSException.FAILURE
getOption
public Object getOption(Oid option) throws GSSException
- Description copied from interface:
ExtendedGSSContext - Gets a context option. It can be called by context initiator or acceptor.
- Specified by:
getOptionin interfaceExtendedGSSContext
- Following copied from interface:
org.gridforum.jgss.ExtendedGSSContext- Parameters:
option- option type.- Returns:
- value option value. Maybe be null.
- Throws:
GSSException- containing the following major error codes:GSSException.FAILURE
initDelegation
public byte[] initDelegation(GSSCredential credential, Oid mechanism, int lifetime, byte[] buf, int off, int len) throws GSSException
- Initiate the delegation of a credential.
This function drives the initiating side of the credential
delegation process. It is expected to be called in tandem with the
acceptDelegationfunction.
The behavior of this function can be modified byGSSConstants.DELEGATION_TYPEandGSSConstants.GSS_MODEcontext options. TheGSSConstants.DELEGATION_TYPEoption controls delegation type to be performed. TheGSSConstants.GSS_MODEoption if set toGSIConstants.MODE_SSLresults in tokens that are not wrapped.- Specified by:
initDelegationin interfaceExtendedGSSContext
- Parameters:
cred- The credential to be delegated. May be null in which case the credential associated with the security context is used.mechanism- The desired security mechanism. May be null.lifetime- The requested period of validity (seconds) of the delegated credential.- Returns:
- A token that should be passed to
acceptDelegationifisDelegationFinishedreturns false. May be null. - Throws:
GSSException- containing the following major error codes:GSSException.FAILURE
acceptDelegation
public byte[] acceptDelegation(int lifetime,
byte[] buf,
int off,
int len)
throws GSSException
- Accept a delegated credential.
This function drives the accepting side of the credential
delegation process. It is expected to be called in tandem with the
initDelegationfunction.
The behavior of this function can be modified byGSSConstants.GSS_MODEcontext option. TheGSSConstants.GSS_MODEoption if set toGSIConstants.MODE_SSLresults in tokens that are not wrapped.- Specified by:
acceptDelegationin interfaceExtendedGSSContext
- Parameters:
lifetime- The requested period of validity (seconds) of the delegated credential.- Returns:
- A token that should be passed to
initDelegationifisDelegationFinishedreturns false. May be null. - Throws:
GSSException- containing the following major error codes:GSSException.FAILURE
getDelegatedCredential
public GSSCredential getDelegatedCredential()
- Description copied from interface:
ExtendedGSSContext - Returns the delegated credential that was delegated using
the
initDelegationandacceptDelegationfunctions. This is to be called on the delegation accepting side once onceisDelegationFinishedreturns true.- Specified by:
getDelegatedCredentialin interfaceExtendedGSSContext
- Following copied from interface:
org.gridforum.jgss.ExtendedGSSContext- Returns:
- The delegated credential. Might be null if credential delegation is not finished.
isDelegationFinished
public boolean isDelegationFinished()
- Description copied from interface:
ExtendedGSSContext - Used during delegation to determine the state of the delegation.
- Specified by:
isDelegationFinishedin interfaceExtendedGSSContext
- Following copied from interface:
org.gridforum.jgss.ExtendedGSSContext- Returns:
- true if delegation was completed, false otherwise.
getWrapSizeLimit
public int getWrapSizeLimit(int qop,
boolean confReq,
int maxTokenSize)
throws GSSException
- Currently not implemented.
- Specified by:
getWrapSizeLimitin interfaceGSSContext
wrap
public void wrap(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
- Currently not implemented.
- Specified by:
wrapin interfaceGSSContext
unwrap
public void unwrap(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
- Currently not implemented.
- Specified by:
unwrapin interfaceGSSContext
getMIC
public void getMIC(InputStream inStream, OutputStream outStream, MessageProp msgProp) throws GSSException
- Currently not implemented.
- Specified by:
getMICin interfaceGSSContext
verifyMIC
public void verifyMIC(InputStream tokStream, InputStream msgStream, MessageProp msgProp) throws GSSException
- Currently not implemented.
- Specified by:
verifyMICin interfaceGSSContext
setChannelBinding
public void setChannelBinding(ChannelBinding cb) throws GSSException
- Currently not implemented.
- Specified by:
setChannelBindingin interfaceGSSContext
isTransferable
public boolean isTransferable()
throws GSSException
- Currently not implemented.
- Specified by:
isTransferablein interfaceGSSContext
export
public byte[] export()
throws GSSException
- Currently not implemented.
- Specified by:
exportin interfaceGSSContext
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||