org.globus.gsi.stores.CertKeyCredential Maven / Gradle / Ivy
/*
* Copyright 1999-2010 University of Chicago
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied.
*
* See the License for the specific language governing permissions and limitations under the License.
*/
package org.globus.gsi.stores;
import org.globus.gsi.CredentialException;
import org.globus.gsi.X509Credential;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.cert.CertificateEncodingException;
import org.apache.commons.io.FileUtils;
import org.globus.util.GlobusResource;
/**
* Fill Me
*/
public class CertKeyCredential implements SecurityObjectWrapper, Storable, CredentialWrapper {
protected GlobusResource globusCertFile;
protected GlobusResource globusKeyFile;
private long certLastModified = -1;
private long keyLastModified = -1;
private X509Credential credential;
private boolean changed;
public CertKeyCredential(GlobusResource certResource, GlobusResource keyResource) throws ResourceStoreException {
init(certResource, keyResource);
}
public CertKeyCredential(GlobusResource certResource, GlobusResource keyResource, X509Credential credential)
throws ResourceStoreException {
this.globusCertFile = certResource;
try {
if (!certResource.exists()) {
FileUtils.touch(certResource.getFile());
this.certLastModified = certResource.lastModified();
}
this.globusKeyFile = keyResource;
if (!keyResource.exists()) {
FileUtils.touch(keyResource.getFile());
this.keyLastModified = keyResource.lastModified();
}
} catch (IOException e) {
throw new ResourceStoreException(e);
}
this.credential = credential;
}
protected void init(GlobusResource initCertResource, GlobusResource initKeyResource) throws ResourceStoreException {
if ((initCertResource == null) || (initKeyResource == null)) {
throw new IllegalArgumentException();
}
this.globusCertFile = initCertResource;
this.globusKeyFile = initKeyResource;
this.credential = createObject(this.globusCertFile, this.globusKeyFile);
try {
this.certLastModified = this.globusCertFile.lastModified();
this.keyLastModified = this.globusKeyFile.lastModified();
} catch (IOException ioe) {
throw new ResourceStoreException(ioe);
}
}
protected void init(GlobusResource initCertFile, GlobusResource keyResource, X509Credential initCredential)
throws ResourceStoreException {
if (initCredential == null) {
// JGLOBUS-88 : better exception?
throw new IllegalArgumentException("Object cannot be null");
}
this.credential = initCredential;
this.globusCertFile = initCertFile;
this.globusKeyFile = keyResource;
}
public void refresh() throws ResourceStoreException {
long cLatestLastModified;
long kLatestLastModified;
this.changed = false;
try {
cLatestLastModified = this.globusCertFile.lastModified();
kLatestLastModified = this.globusKeyFile.lastModified();
} catch (IOException ioe) {
throw new ResourceStoreException(ioe);
}
if ((this.certLastModified < cLatestLastModified) || (this.keyLastModified < kLatestLastModified)) {
this.credential = createObject(this.globusCertFile, this.globusKeyFile);
this.certLastModified = cLatestLastModified;
this.keyLastModified = kLatestLastModified;
this.changed = true;
}
}
public GlobusResource getCertificateFile() {
return this.globusCertFile;
}
public GlobusResource getKeyFile() {
return this.globusKeyFile;
}
// for creation of credential from a file
protected X509Credential createObject(GlobusResource certSource, GlobusResource keySource)
throws ResourceStoreException {
InputStream certIns;
InputStream keyIns;
try {
certIns = certSource.getInputStream();
keyIns = keySource.getInputStream();
return new X509Credential(certIns, keyIns);
} catch (FileNotFoundException e) {
throw new ResourceStoreException(e);
} catch (CredentialException e) {
throw new ResourceStoreException(e);
} catch (IOException ioe) {
throw new ResourceStoreException(ioe);
}
}
public X509Credential getSecurityObject() throws ResourceStoreException {
refresh();
return credential;
}
public boolean hasChanged() {
return this.changed;
}
public X509Credential getCredential() throws ResourceStoreException {
return getSecurityObject();
}
public void store() throws ResourceStoreException {
try {
this.credential.writeToFile(this.globusCertFile.getFile(), this.globusKeyFile.getFile());
} catch (IOException e) {
throw new ResourceStoreException(e);
} catch (CertificateEncodingException e) {
throw new ResourceStoreException(e);
}
}
public String getAlias() {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy