Skip to content

JGlobus 2.0 changes

bbockelm edited this page Mar 19, 2013 · 1 revision

jGlobus 2.0.0

jGlobus 2.0.0

Each table lists the package name, current usage in the library, and the class status in the new library. Last column provides internal notes on port to new library.

Class name Use in current library Status Comments for new library port
ChainedCertificateException Used in org.globus.gsi.bc.BouncyCastleUtil. Deprecate Ported Deprecated
ChainedException Relict from Java 1.3- where there were no chained exceptions (Throwable with a Throwable as cause). Used in many packages: org.globus.gatekeeper, org.globus.gram, org.globus.gsi, org.globus.io, org.globus.mds, org.globus.myproxy. Deprecate Ported Deprecated
ChainedGeneralSecurityException Used in org.globus.common, org.globus.proxy and org.globus.ptls. Deprecate Ported Deprecated
ChainedIOException Used in many packages: org.globus.gsi, org.globus.io.streams, org.globus.net. Deprecate Ported. Java 1.5 does not support chained IOExceptions, but Java 1.6 does. Ported and not deprecated for now.
CoGProperties Responsible for managing the properties file ~/.globus/cog.properties, which holds information about various properties needed by the security classes.

These properties include:

  • the location of the user certificate file
  • the location of the user key file
  • the location of the CA certificates
  • the location of the proxy file
  • the tcp port range
<li>the local ip address for DHCP systems</li>
<li>the socket timeout when connecting to a myproxy host <br class="atl-forced-newline">

Command-line tools and e.g. the GridFTP API e.g. make use of this mechanism to e.g. indicate that a non-default CA cert directory should be used?

Port Ported. Removed deprecated and MDS-related methods.
ConditionVariable Unused. Discontinue. Removed
ConstrainedMVHashtable Unused. Discontinue Removed
MVHashtable Used in org.globus.mds. Discontinue Removed
ResourceManagerContact Used in org.globus.gram.Gram. Port Ported. Should be moved into org.globus.gram.
Version Version information of the JGlobus module, composed as MAJOR.MINOR.PATCH. Port Ported
Class name Use in current library Status Comments for new library port
CertificateRevocationLists Used in org.globus.gsi.GlobusCredential, org.globus.gsi.gssapi.GlobusGSSContextImpl, org.globus.gsi.proxy.ProxyPathValidator Deprecate Ported. Deprecated. Has been refactored to use a CertStore from the GlobusProvider.
CertUtil Used a lot in org.globus.gsi and sub-packages, and org.globus.tools Deprecate Ported. Deprecated. Has been refactored to use the new certificate utils org.globus.gsi.util.CertificateIOUtil, org.globus.gsi.util.CertificateLoadUtil, org.globus.gsi.util.CertificateUtil, org.globus.gsi.util.ProxyCertificateUtil.
These new utility classes should be used instead.
GSIConstants Used all over the place. Port Ported. Deprecated proxy type and delegation mode integer constants, and added enums CredentialType and DelegationType.
GlobusCredential Used in org.globus.gsi, org.globus.myproxy, org.globus.tools Deprecate Ported. Deprecated. Has been refactored to use X509Credential internally. X509Credential should be used instead.
GlobusCredentialException Only in org.globus.gsi.GlobusCredential and org.globus.gsi.gssapi.GlobusGSSManagerImpl Deprecate Ported. Deprecated.
OldCertUtil Not used. Discontinue Removed
OpenSSLKey Used in org.globus.gsi, org.globus.gsi.bc, org.globus.myproxy, org.globus.tools Port Ported.
SigningPolicy Used in org.globus.gsi.TrustedCertificates, org.globus.gsi.proxy.ProxyPathValidator, org.globus.gsi.ptls.PureTLSTrustedCertificates and tests Port Ported. Has been replaced by a new SigningPolicy class, which is not backwards-compatible to the old one.
SigningPolicyParser Used in org.globus.gsi.SigningPolicy and org.globus.gsi.TrustedCertificates and tests. Deprecate. Ported. Has been replaced by a new SigningPolicyParser which is not backwards-compatible to the old one.
SigningPolicyParserException Used in org.globus.gsi.SigningPolicy and org.globus.gsi.TrustedCertificates and tests. Discontinue Has been replaced by org.globus.security.SigningPolicyException
TrustedCertificates Used in org.globus.gsi and sub-packages and org.globus.tools Deprecate Ported. Deprecated. Has been refactored to use a KeyStore from the GlobusProvider.
X509Extension Used in org.globus.gsi and sub-packages and org.globus.tools Port Ported. Maybe move to using BC API. (org.bouncycastle.asn1.x509.X509Extension).
X509ExtensionSet Used in org.globus.gsi, org.globus.gsi.bc and org.globus.tools Port Ported.

Check if we can use BouncyCastle features directly, instead of providing BouncyCastle utils.

Used in org.globus.gsi, org.globus.myproxy, org.globus.tools

Class name Use in current library Status Comments for new library port
BouncyCastleCertProcessingFactory Used in org.globus.gsi.bc, org.globus.gsi.gssapi, org.globus.myproxy, org.globus.tools Port Ported. Removed deprecated methods. Not backwards-compatible: Instead of an integer variable, a CertificateType enum is expected in various methods.
BouncyCastleOpenSSLKey   Port Ported. Overwritten with new class from crux-security-core (org.globus.security.bc.BouncyCastleOpenSSLKey) (same functionality)
BouncyCastleUtil   Port Ported. Not backwards-compatible: removed methods getCertificateType(...) that took a TBSCertificateStructure as parameter. Methods getCertificateType(...) return a CredentialType enum instead of an integer.
BouncyCastleX509Extension Used in org.globus.gsi.proxy.ext and a test Port Ported. Seems useful to keep, but depends on the BC extension implementation and its use. I don't think this needs to be ported, if it is replaced by BC functionality - can't see this being used directly.
X509NameHelper   Port Ported. (Moved org.globus.security.util.X509NameHelper back to org.globus.gsi.bc and added old methods (toString(), constructor))

This package and its sub-packages are used all over the place.

CHANGES:

getMIC() and verifyMIC() are no longer available because of the underlying JSSE constraints.

GSI_BIG QOP no longer available. wrap/unwrap can no longer switch between encrypted and unencrypted communication.

setOption(GSSConstants.TRUSTED_CERTIFICATES, TrustedCertificates) and the corresponding getOption no longer supported. Standard GSI mechanisms can be used to specify the Trusted Certificate folder, etc.

Previously deprecated setOption(GSSConstants.GRIM_POLICY_HANDLER, value) deleted.

GlobusGSSCredentialImpl.getGlobusCredential replaced with GlobusGSSCredentialImpl.getX509Credential

The "value" Object parameter to setOption(GSSConstants.DELEGATION_TYPE, value) should be of type GSIConstants.DelegationType, while Integer is supported as

well for backward compatibility.

Confidentiality service fixes:

RFC definition:

Only initiator can invoke requestConf. No default specified by Java-bindings RFC; per C-bindings (and also implied by the name requestConf) default is taken to be "false".

Acceptor can only check if the established context provides confidentiality by checking the result of getConfState().

Ability to selectively apply confidentiality via MessageProp.setPrivacy() object passed to wrap().

GSI C GSSAPI behavior:

Only Initiator can request confidentiality since only init_sec_context() has the request_flags parameter. Confidentiality off by default causing the null cipher suites to be added at the front of the platform's default SSL cipher suites. If confidentiality is requested, the platform's default SSL cipher suite is used, which in most cases excludes the null ciphers.
Acceptor and Initiator can check if the established context provides confidentiality by checking the return_flags parameter to accept_sec_context().
Ability to selectively apply confidentiality, but only by requesting confidentiality at context establishment time and later selectively negating confidentiality by use of GSI_BIG QOP.

OLD JGlobus behavior:

Initiator as well as Acceptor able to request confidentiality using requestConf() but this isn't guaranteed for the initiator since the null cipher suite TLS_RSA_WITH_NULL_MD5 is always added at the end. Confidentiality is on by default but even when confidentiality is on, TLS_RSA_WITH_NULL_MD5 is added at the end resulting in confidentiality not being guaranteed. If confidentiality is turned off, then only the null cipher suite TLS_RSA_WITH_NULL_MD5 is enabled.

Acceptor and Initiator can check if the established context provides confidentiality by checking getConfState().

Ability to selectively apply confidentiality, but only by requesting confidentiality at context establishment time and later selectively negating

confidentiality by use of GSI_BIG QOP.

NEW JGlobus behavior:

Initiator as well as Acceptor able to request confidentiality using requestConf() in which case only the non-null cipher suites supported by JSSE are enabled. Confidentiality is off by default causing all the null cipher suites to be enabled and placed in front of any cipher suites enabled by default by JSSE which are usually non-null cipher suites. In other words:

Setting requestConf(true) will cause:

  • all non-NULL cipher suites to be enabled
<li>all NULL cipher suites to be disabled</li>
<li>SSLPolicyInt.TLS_RSA_WITH_NULL_MD5 to no longer be added at the end of<br>

enabled cipher suites.

Setting requestConf(false) will cause:

  • all NULL cipher suites to be enabled including

    SSLPolicyInt.TLS_RSA_WITH_NULL_MD5

  • all the default enabled cipher suites (including non-NULL) to then be
    added.

Acceptor and Initiator can check if the established context provides confidentiality by checking getConfState().

Ability to selectively apply confidentiality no longer available as GSI_BIG QOP is no longer supported.

WARNING: Applications ithat require confidentiality are supposed to check GSSContext.getConfState() after context establishment to make sure the confidentiality service is in fact available but none of them in jGlobus appear to do so!

CLARIFICATION:

setOption(GSSConstants.REQUIRE_CLIENT_AUTH, true) and setOption(GSSConstants.ACCEPT_NO_CLIENT_CERTS, true) will cause the former setting to take precedence; in other words client authentication will be "required".

setOption(GSSConstants.REQUIRE_CLIENT_AUTH, false) will cause the setting setOption(GSSConstants.ACCEPT_NO_CLIENT_CERTS, Boolean) to take precedence; "true" will cause client authentication to be "requested" but not required and "false" will cause client authentication to be not desired.

This package is only used within org.globus.gsi.gssapi.

Class name Use in current library Status Comments for new library port
GlobusPrincipal   Port Ported (Removed org.globus.security.jaas.GlobusPrincipal)
GlobusSubject   Port Ported (Removed org.globus.security.jaas.GlobusSubject)
JaasGssUtil A utility class for handling JAAS Subject with GSSCredential. Port Moved to gss module, because it depends on classes from this module.
JaasSubject   Port Ported (Removed org.globus.security.jaas.JaasSubject)
PasswordCredential   Port Ported (Removed org.globus.security.jaas.PasswordCredential)
SimplePrincipal   Port Ported (Removed org.globus.security.jaas.SimplePrincipal)
StandardSubject   Port Ported (Removed org.globus.security.jaas.StandardSubject)
UserNamePrincipal   Port Ported (Removed org.globus.security.jaas.UserNamePrincipal)
Class name Use in current library Status Comments for new library port
IgnoreProxyPolicyHandler Not used in jglobus Port Ported. Not backwards-compatible: implements new ProxyPolicyHandler).
ProxyPathValidator Used in several packages in org.globus.gsi and in org.globus.gsi.tools Deprecate Ported. Deprecated. Refactored to use org.globus.gsi.trustmanager.X509ProxyCertPathValidator internally. Not fully backwards-compatible, because ProxyPathValidatorException that is being thrown by various methods does not contain various error codes but just a single error code ProxyPathValidatorException.FAILURE for all errors that happen. This is because the new code does not throw exceptions with error types.
ProxyPathValidatorException Used in some packages in org.globus.gsi and in org.globus.gsi.tools Deprecate Ported Deprecated
ProxyPolicyHandler Used in some packages in org.globus.gsi and in org.globus.gsi.tools Port Ported. Interface change. Not backwards-compatible.
Class name Use in current library Status Comments for new library port
GlobusProxyCertInfoExtension Used in org.globus.gsi.bc and in org.globus.tools Port Ported
ProxyCertInfo Used a lot in org.globus.gsi and in org.globus.tools Port Ported. (Moved org.globus.security.proxyExtension.ProxyCertInfo into org.globus.gsi.proxy.ext)
ProxyCertInfoExtension Used in org.globus.gsi.bc, org.globus.gsi.proxy.ext and in org.globus.tools Port Ported
ProxyPolicy Used in org.globus.gsi, org.globus.gsi.bc, org.globus.gsi.proxy and in org.globus.tools Port Ported. (Moved (org.globus.security.proxyExtension) into org.globus.gsi.proxy.ext)
Comment Status in new jGlobus Comment
New jGlobus won't rely on the PureTLS library anymore Discontinue Moved to gss module, because this module has not bee refactored yet and still relies on PureTLS
Comment Status in new jGlobus
This package provides an API for communicating with MyProxy servers. Will be maintained by NCSA.  

org.globus.ftp, org.globus.gatekeeper, org.globus.gram, org.globus.io depends on some of these classes.
Depends on GSS-API. Moved to gss module for now.

Class name Use in current library Status Comments for new library port
BaseServer Used in org.globus.gatekeeper, org.globus.gram, org.globus.io Evaluate  
DatagramSocketFactory Not used. Evaluate  
GSIHttpURLConnection Used in org.globus.net.protocol.httpg.Handler Evaluate  
GSIURLConnection Used in org.globus.net.GSIHttpURLConnection Evaluate  
GlobusURLStreamHandlerFactory Not used, except in a test (GSIHttpURLConnectionTest) Evaluate  
PortRange Used in org.globus.net itself. Evaluate  
ServerSocketFactory Used in org.globus.ftp, org.globus.gsi.gssapi and org.globus.net Evaluate  
SocketFactory Used in org.globus.net Evaluate  
WrappedSocket Used in org.globus.gsi.gssapi and org.globus.net Evaluate  

Moved to gss module for now.

Class name Use in current library Status Comments for new library port
Handler Used in org.globus.net.GlobusURLStreamHandlerFactory Evaluate Ported. Discontinue if GRAM doesn't require it

Moved to gss module for now.

Class name Use in current library Status Comments for new library port
Handler Not used in jglobus Port Ported
Class name Use in current library Status Comments for new library port
GridMap Used only by org.globus.gatekeeper package Port Ported
GridMapLocal Unused Port Ported

Various command-line clients.

Class name Use in current library Status Comments for new library port
CertInfo Displays certificate information, both for proxy and regular certs Port Ported
ChangePassPhrase Changes the passphrase that protects the private key. Port Ported
GassServer Controls a GASS Server. Evaluate  
GassServerShutdown Allows the user to shut down a (remotely) running GASS server, started with client-shutdown permissions Evaluate  
GlobusRun GlobusRun command-line tool implementation in Java. Evaluate  
GlobusUrlCopy globus-url-copy command line tool. Evaluate  
GridCertRequest Create a grid certificate request. Port Ported
GridInfoSearch MDS2 tool. Performs an LDAP search. Discontinue Removed
KeyStoreConvert Converts Globus credentials (user key and certificate) into Java keystore format (JKS format supported by Sun) Port Ported
MyProxy MyProxy command line client Evaluate NCSA  
ProxyDestroy Destroys a proxy certificate file. Port Ported
ProxyInfo Displays information about a proxy certificate. Port Ported
ProxyInit Initializes/creates a new globus proxy certificate. Port Ported. Move away from ProxyPathValidator.
Class name Use in current library Status Comments for new library port
Base64 Used by org.glous.ftp, org.globus.gsi, org.globus.myproxy, org.globus.tools. Discontinue Removed. Replaced by using org.bouncycastle.util.encoders.Base64.
CircularBuffer Used only in org.globus.ftp package Evaluate Ported. Move to org.globus.ftp.
ClassLoaderUtils Used only by org.globus.util.I18n Port Ported
ConfigUtil Used in org.globus.common, org.globus.ftp.test, org.globus.security, org.globus.tools, org.globus.util Port Ported
GlobusURL Used in org.globus.util Evaluate Ported. Removed deprecated methods
I18n Used all over the place in org.globus.gsi and sub-packages and org.globus.security.gridmap Port Ported
PEMUtils Used in org.globus.gsi and in org.globus.tools Port Ported
QuotedStringTokenizer Used in org.globus.gatekeeper.GateKeeperServer and org.globus.security.gridmap.GridMap Evaluate Ported
SortedVector Unused Discontinue Removed
Tail Used by org.globus.gatekeeper.AbstractJobManager Evaluate Depends on GRAM  
TestUtil Convenience util to load and deal with properties. Used in various junit test classes Discontinue Removed
TimestampEntry Used in org.globus.gsi.CertificateRevocationLists and org.globus.gsi.TrustedCertificates to document when a file was last modified Evaluate Ported. Might have to deprecate
Util Used in org.globus.tools, org.globus.net, org.globus.gsi.gssapi. Port Ported. Internal API, change as needed.

If at all, it will be managed by NCSA

Class name Use in current library Status Comments for new library port
ExtendedGSSContext      
ExtendedGSSCredential      
ExtendedGSSManager      

Proposed package list to discontinue

org.globus.mds*

Comment Status in new jGlobus Comments for new library port
MDS2 client API. Will not be included in new jGlobus library. Discontinue Removed

org.globus.gatekeeper*

Comment Status in new jGlobus
Seems to be an implementation of the GateKeeper and JobManager (server-side GRAM2). Check with Stu if this should make it into a gram module. Evaluate

org.globus.tools.proxy

Comment Status in new jGlobus Comments for new library port
GUI to generate a proxy certificate (AWT, Swing) including MyProxy support. Not used anywhere in jglobus. Discontinue Removed

org.globus.tools.ui*

Comment Status in new jGlobus Comments for new library port
Helper classes for GUI to generate a proxy certificate in org.globus.tools.proxy. Only used by org.globus.tools.proxy Discontinue Removed

org.globus.util.debug

Comment Status in new jGlobus Comments for new library port
Pre-Log4j logging. Discontinue Removed

org.globus.util.log4j

Comment Status in new jGlobus Comments for new library port
Log4j related classes. Will not be included in new jGlobus library, because log4j won't be used for logging. Discontinue Evaluate Removed for now.

org.globus.example

Comment Status in new jGlobus Comments for new library port
Nothing in here. Discontinue Removed