Package org.italiangrid.voms.store.impl
Class DefaultVOMSTrustStore
- java.lang.Object
-
- org.italiangrid.voms.store.impl.DefaultVOMSTrustStore
-
- All Implemented Interfaces:
VOMSTrustStore
- Direct Known Subclasses:
DefaultUpdatingVOMSTrustStore
public class DefaultVOMSTrustStore extends java.lang.Object implements VOMSTrustStore
The default implementation for the VOMS trust store. This implementation does not refresh the trust information on a periodic basis. For an updating trust store seeDefaultUpdatingVOMSTrustStore
.
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
CERTIFICATE_FILENAME_SUFFIX
The filename suffix used to match certificates in the VOMS local trust directoriesstatic java.lang.String
DEFAULT_VOMS_DIR
The default directory where local VOMS trust information is rooted: "/etc/grid-security/vomsdir"private VOMSTrustStoreStatusListener
listener
The trust store status listener that will be notified of changes in this trust storeprotected java.lang.Object
listenerLock
A lock to guard the setting of the status listenerprivate java.util.Map<java.lang.String,java.security.cert.X509Certificate>
localAACertificatesByHash
Map of local parsed AA certificates keyed by certificate subject hashprivate java.util.Map<java.lang.String,java.util.Set<LSCInfo>>
localLSCInfo
The set of local parsed LSC information keyed by VOprivate java.util.List<java.lang.String>
localTrustedDirs
The list of local trusted directories that is searched for trust information (certs or LSC files)static java.lang.String
LSC_FILENAME_SUFFIX
The filename suffix used to match LSC files in the VOMS local trust directoriesprotected java.util.concurrent.locks.Lock
read
A reference to the read lockprotected java.util.concurrent.locks.ReadWriteLock
rwLock
The read/write lock that implements thread safety for this storeprotected java.util.concurrent.locks.Lock
write
A reference to the write lock
-
Constructor Summary
Constructors Constructor Description DefaultVOMSTrustStore()
Default constructor.DefaultVOMSTrustStore(java.util.List<java.lang.String> localTrustDirs)
DefaultVOMSTrustStore(java.util.List<java.lang.String> localTrustDirs, VOMSTrustStoreStatusListener listener)
DefaultVOMSTrustStore(VOMSTrustStoreStatusListener listener)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static java.util.List<java.lang.String>
buildDefaultTrustedDirs()
Builds a list of trusted directories containing onlyDEFAULT_VOMS_DIR
.private void
certificateFileSanityChecks(java.io.File certFile)
Performs basic sanity checks performed on a file supposed to hold a VOMS AA certificate.private void
cleanupStores()
private void
directorySanityChecks(java.io.File directory)
Performs basic sanity checks on a directory that is supposed to contain VOMS AA certificates and LSC files.java.security.cert.X509Certificate
getAACertificateBySubject(javax.security.auth.x500.X500Principal aaCertSubject)
Returns the VOMS Attribute Authority certificate held in thisVOMSTrustStore
whose subject matches the subject passed as argument.java.util.Map<java.lang.String,java.util.Set<LSCInfo>>
getAllLSCInfo()
Returns all the LSC information held in thisVOMSTrustStore
.java.util.List<java.security.cert.X509Certificate>
getLocalAACertificates()
Returns the list of VOMS Attribute Authority certificates held in thisVOMSTrustStore
.java.util.List<java.lang.String>
getLocalTrustedDirectories()
Returns the locally trusted directories where VOMS trust information (being VOMS server certificates or LSC files) are searched for.LSCInfo
getLSC(java.lang.String voName, java.lang.String hostname)
Returns the LSC information held in thisVOMSTrustStore
for the vo and hostname passed as arguments.private java.lang.String
getOpensslCAHash(javax.security.auth.x500.X500Principal principal)
private void
loadCertificateFromFile(java.io.File file)
Loads a VOMS AA certificate from a given file and stores this certificate in the local map of trusted VOMS AA certificate.private void
loadCertificatesFromDirectory(java.io.File directory)
Loads all the certificates in the local directory.private void
loadLSCFromDirectory(java.io.File directory)
void
loadTrustInformation()
Loads trust information from the sources configured for this trust store.void
setStatusListener(VOMSTrustStoreStatusListener statusListener)
Sets aVOMSTrustStoreStatusListener
that is notified of events related to this VOMS trust store
-
-
-
Field Detail
-
DEFAULT_VOMS_DIR
public static final java.lang.String DEFAULT_VOMS_DIR
The default directory where local VOMS trust information is rooted: "/etc/grid-security/vomsdir"- See Also:
- Constant Field Values
-
CERTIFICATE_FILENAME_SUFFIX
public static final java.lang.String CERTIFICATE_FILENAME_SUFFIX
The filename suffix used to match certificates in the VOMS local trust directories- See Also:
- Constant Field Values
-
LSC_FILENAME_SUFFIX
public static final java.lang.String LSC_FILENAME_SUFFIX
The filename suffix used to match LSC files in the VOMS local trust directories- See Also:
- Constant Field Values
-
localTrustedDirs
private final java.util.List<java.lang.String> localTrustedDirs
The list of local trusted directories that is searched for trust information (certs or LSC files)
-
localAACertificatesByHash
private java.util.Map<java.lang.String,java.security.cert.X509Certificate> localAACertificatesByHash
Map of local parsed AA certificates keyed by certificate subject hash
-
localLSCInfo
private java.util.Map<java.lang.String,java.util.Set<LSCInfo>> localLSCInfo
The set of local parsed LSC information keyed by VO
-
listener
private VOMSTrustStoreStatusListener listener
The trust store status listener that will be notified of changes in this trust store
-
rwLock
protected final java.util.concurrent.locks.ReadWriteLock rwLock
The read/write lock that implements thread safety for this store
-
read
protected final java.util.concurrent.locks.Lock read
A reference to the read lock
-
write
protected final java.util.concurrent.locks.Lock write
A reference to the write lock
-
listenerLock
protected final java.lang.Object listenerLock
A lock to guard the setting of the status listener
-
-
Constructor Detail
-
DefaultVOMSTrustStore
public DefaultVOMSTrustStore(java.util.List<java.lang.String> localTrustDirs, VOMSTrustStoreStatusListener listener)
- Parameters:
localTrustDirs
- a non-null list of local trust directorieslistener
- theVOMSTrustStoreStatusListener
to use for this trust store- Throws:
java.lang.IllegalArgumentException
- when the list passed as argument is null
-
DefaultVOMSTrustStore
public DefaultVOMSTrustStore(VOMSTrustStoreStatusListener listener)
-
DefaultVOMSTrustStore
public DefaultVOMSTrustStore(java.util.List<java.lang.String> localTrustDirs)
-
DefaultVOMSTrustStore
public DefaultVOMSTrustStore()
Default constructor. Sets the local trusted directories to the default of "/etc/grid-security/vomsdir".
-
-
Method Detail
-
buildDefaultTrustedDirs
protected static java.util.List<java.lang.String> buildDefaultTrustedDirs()
Builds a list of trusted directories containing onlyDEFAULT_VOMS_DIR
.- Returns:
- a list of default trusted directory containing the
DEFAULT_VOMS_DIR
-
getLocalTrustedDirectories
public java.util.List<java.lang.String> getLocalTrustedDirectories()
Description copied from interface:VOMSTrustStore
Returns the locally trusted directories where VOMS trust information (being VOMS server certificates or LSC files) are searched for.- Specified by:
getLocalTrustedDirectories
in interfaceVOMSTrustStore
- Returns:
- a
List
of local paths
-
getLocalAACertificates
public java.util.List<java.security.cert.X509Certificate> getLocalAACertificates()
Description copied from interface:VOMSTrustStore
Returns the list of VOMS Attribute Authority certificates held in thisVOMSTrustStore
.- Specified by:
getLocalAACertificates
in interfaceVOMSTrustStore
- Returns:
- the collection of VOMS Attribute Authority certificates held in
this
VOMSTrustStore
, an empty list if no certificate was found.
-
getLSC
public LSCInfo getLSC(java.lang.String voName, java.lang.String hostname)
Description copied from interface:VOMSTrustStore
Returns the LSC information held in thisVOMSTrustStore
for the vo and hostname passed as arguments.- Specified by:
getLSC
in interfaceVOMSTrustStore
- Parameters:
voName
- the name of the VO for which the LSC applieshostname
- the name of the host for which the LSC applies- Returns:
- a
LSCInfo
object, or null if no LSC matching the arguments was found
-
loadCertificatesFromDirectory
private void loadCertificatesFromDirectory(java.io.File directory)
Loads all the certificates in the local directory. Only files with the extension matching the#CERTIFICATE_FILENAME_PATTERN
are considered.- Parameters:
directory
-
-
loadCertificateFromFile
private void loadCertificateFromFile(java.io.File file)
Loads a VOMS AA certificate from a given file and stores this certificate in the local map of trusted VOMS AA certificate.- Parameters:
file
-
-
loadLSCFromDirectory
private void loadLSCFromDirectory(java.io.File directory)
- Parameters:
directory
-
-
certificateFileSanityChecks
private void certificateFileSanityChecks(java.io.File certFile)
Performs basic sanity checks performed on a file supposed to hold a VOMS AA certificate.- Parameters:
certFile
-
-
directorySanityChecks
private void directorySanityChecks(java.io.File directory)
Performs basic sanity checks on a directory that is supposed to contain VOMS AA certificates and LSC files.- Parameters:
directory
-
-
cleanupStores
private void cleanupStores()
-
loadTrustInformation
public void loadTrustInformation()
Description copied from interface:VOMSTrustStore
Loads trust information from the sources configured for this trust store.- Specified by:
loadTrustInformation
in interfaceVOMSTrustStore
-
getOpensslCAHash
private java.lang.String getOpensslCAHash(javax.security.auth.x500.X500Principal principal)
-
getAACertificateBySubject
public java.security.cert.X509Certificate getAACertificateBySubject(javax.security.auth.x500.X500Principal aaCertSubject)
Description copied from interface:VOMSTrustStore
Returns the VOMS Attribute Authority certificate held in thisVOMSTrustStore
whose subject matches the subject passed as argument.- Specified by:
getAACertificateBySubject
in interfaceVOMSTrustStore
- Parameters:
aaCertSubject
- a certificate subject- Returns:
- the VOMS AA
X509Certificate
that matches the subject passed as argument or null if no matching certificate is found in this store
-
getAllLSCInfo
public java.util.Map<java.lang.String,java.util.Set<LSCInfo>> getAllLSCInfo()
Description copied from interface:VOMSTrustStore
Returns all the LSC information held in thisVOMSTrustStore
. The returnedMap
is keyed by VO name.- Specified by:
getAllLSCInfo
in interfaceVOMSTrustStore
- Returns:
- a possibly empty map
LSCInfo
objects
-
setStatusListener
public void setStatusListener(VOMSTrustStoreStatusListener statusListener)
Description copied from interface:VOMSTrustStore
Sets aVOMSTrustStoreStatusListener
that is notified of events related to this VOMS trust store- Specified by:
setStatusListener
in interfaceVOMSTrustStore
- Parameters:
statusListener
- the status listener that will be notified
-
-