912 lines
40 KiB
Java
912 lines
40 KiB
Java
/*
|
|
* Decompiled with CFR 0.152.
|
|
*
|
|
* Could not load the following classes:
|
|
* com.tridium.crypto.core.cert.CertUtils
|
|
* com.tridium.crypto.core.cert.NHostExemption
|
|
* com.tridium.crypto.core.cert.NKey
|
|
* com.tridium.crypto.core.cert.NPKCS10CertificationRequest
|
|
* com.tridium.crypto.core.cert.NX509Certificate
|
|
* com.tridium.crypto.core.cert.NX509CertificateEntry
|
|
* com.tridium.crypto.core.io.CoreCryptoManager
|
|
* com.tridium.crypto.core.io.ICoreCryptoManager
|
|
* com.tridium.crypto.core.io.ICoreExemptionStore
|
|
* com.tridium.crypto.core.io.ICoreKeyStore
|
|
* com.tridium.crypto.core.provider.IProvider
|
|
* com.tridium.crypto.core.provider.NProvider
|
|
* com.tridium.fox.session.FoxRequest
|
|
* com.tridium.fox.session.FoxResponse
|
|
* com.tridium.fox.session.InvalidCommandException
|
|
* com.tridium.fox.sys.BFoxChannel
|
|
* com.tridium.fox.sys.BFoxSession
|
|
* com.tridium.nre.security.ISecurityInfoProvider
|
|
* com.tridium.nre.util.LegacyStorageUtil
|
|
* com.tridium.sys.Nre
|
|
* javax.baja.file.BFileSystem
|
|
* javax.baja.file.FilePath
|
|
* javax.baja.log.Log
|
|
* javax.baja.naming.BISession
|
|
* javax.baja.naming.BLocalHost
|
|
* javax.baja.naming.BOrd
|
|
* javax.baja.naming.OrdQuery
|
|
* javax.baja.nre.util.Array
|
|
* javax.baja.sys.BComponent
|
|
* javax.baja.sys.Sys
|
|
* javax.baja.sys.Type
|
|
* org.bouncycastle.jce.PrincipalUtil
|
|
* org.bouncycastle.jce.X509Principal
|
|
*/
|
|
package com.tridium.platcrypto.fox;
|
|
|
|
import com.tridium.crypto.core.cert.CertUtils;
|
|
import com.tridium.crypto.core.cert.NHostExemption;
|
|
import com.tridium.crypto.core.cert.NKey;
|
|
import com.tridium.crypto.core.cert.NPKCS10CertificationRequest;
|
|
import com.tridium.crypto.core.cert.NX509Certificate;
|
|
import com.tridium.crypto.core.cert.NX509CertificateEntry;
|
|
import com.tridium.crypto.core.io.CoreCryptoManager;
|
|
import com.tridium.crypto.core.io.ICoreCryptoManager;
|
|
import com.tridium.crypto.core.io.ICoreExemptionStore;
|
|
import com.tridium.crypto.core.io.ICoreKeyStore;
|
|
import com.tridium.crypto.core.provider.IProvider;
|
|
import com.tridium.crypto.core.provider.NProvider;
|
|
import com.tridium.fox.session.FoxRequest;
|
|
import com.tridium.fox.session.FoxResponse;
|
|
import com.tridium.fox.session.InvalidCommandException;
|
|
import com.tridium.fox.sys.BFoxChannel;
|
|
import com.tridium.fox.sys.BFoxSession;
|
|
import com.tridium.nre.security.ISecurityInfoProvider;
|
|
import com.tridium.nre.util.LegacyStorageUtil;
|
|
import com.tridium.platcrypto.fox.ChannelCryptoManager;
|
|
import com.tridium.sys.Nre;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.security.Key;
|
|
import java.security.UnrecoverableKeyException;
|
|
import java.security.cert.X509Certificate;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.Enumeration;
|
|
import java.util.List;
|
|
import java.util.Vector;
|
|
import javax.baja.file.BFileSystem;
|
|
import javax.baja.file.FilePath;
|
|
import javax.baja.log.Log;
|
|
import javax.baja.naming.BISession;
|
|
import javax.baja.naming.BLocalHost;
|
|
import javax.baja.naming.BOrd;
|
|
import javax.baja.naming.OrdQuery;
|
|
import javax.baja.nre.util.Array;
|
|
import javax.baja.sys.BComponent;
|
|
import javax.baja.sys.Sys;
|
|
import javax.baja.sys.Type;
|
|
import org.bouncycastle.jce.PrincipalUtil;
|
|
import org.bouncycastle.jce.X509Principal;
|
|
|
|
/*
|
|
* Illegal identifiers - consider using --renameillegalidents true
|
|
*/
|
|
public class BCryptoChannel
|
|
extends BFoxChannel {
|
|
public static final Type TYPE;
|
|
private static Log log;
|
|
private ICoreCryptoManager service;
|
|
private boolean validChannel;
|
|
static /* synthetic */ Class class$com$tridium$platcrypto$fox$BCryptoChannel;
|
|
static /* synthetic */ Class class$com$tridium$crypto$core$cert$NX509CertificateEntry;
|
|
static /* synthetic */ Class class$com$tridium$crypto$core$cert$NHostExemption;
|
|
|
|
public Type getType() {
|
|
return TYPE;
|
|
}
|
|
|
|
public void sessionOpened() throws Exception {
|
|
if (this.isRunning()) {
|
|
Log.getLog((String)"crypto").trace("pairing CertManagerService with CryptoChannel");
|
|
BISession bISession = this.getSession();
|
|
if (bISession instanceof BLocalHost) {
|
|
this.service = CoreCryptoManager.get((ISecurityInfoProvider)Nre.getSecurityInfoProvider());
|
|
} else if (bISession instanceof BFoxSession) {
|
|
this.service = new ChannelCryptoManager((BComponent)this);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void sessionClosed(Throwable throwable) throws Exception {
|
|
Log.getLog((String)"crypto").trace("unpairing CertManagerService with CryptoChannel");
|
|
}
|
|
|
|
public FoxResponse process(FoxRequest foxRequest) throws Throwable {
|
|
String string = foxRequest.command;
|
|
if (string == "keystore.serverAliases") {
|
|
return this.keyStoreServerAliases(foxRequest);
|
|
}
|
|
if (string == "keystore.aliases") {
|
|
return this.keyStoreAliases(foxRequest);
|
|
}
|
|
if (string == "keystore.containsAlias") {
|
|
return this.keyStoreContainsAlias(foxRequest);
|
|
}
|
|
if (string == "keystore.deleteEntry") {
|
|
return this.keyStoreDeleteEntry(foxRequest);
|
|
}
|
|
if (string == "keystore.getCertificate") {
|
|
return this.keyStoreGetCertificate(foxRequest);
|
|
}
|
|
if (string == "keystore.getCertificateAlias") {
|
|
return this.keyStoreGetCertificateAlias(foxRequest);
|
|
}
|
|
if (string == "keystore.getCertificateChain") {
|
|
return this.keyStoreGetCertificateChain(foxRequest);
|
|
}
|
|
if (string == "keystore.getCreationDate") {
|
|
return this.keyStoreGetCreationDate(foxRequest);
|
|
}
|
|
if (string == "keystore.getKey") {
|
|
return this.keyStoreGetKey(foxRequest);
|
|
}
|
|
if (string == "keystore.isCertificateEntry") {
|
|
return this.keyStoreIsCertificateEntry(foxRequest);
|
|
}
|
|
if (string == "keystore.isKeyEntry") {
|
|
return this.keyStoreIsKeyEntry(foxRequest);
|
|
}
|
|
if (string == "keystore.setCertificateEntry") {
|
|
return this.keyStoreSetCertificateEntry(foxRequest);
|
|
}
|
|
if (string == "keystore.setKeyEntry0") {
|
|
return this.keyStoreSetKeyEntry0(foxRequest);
|
|
}
|
|
if (string == "keystore.setKeyEntry1") {
|
|
return this.keyStoreSetKeyEntry1(foxRequest);
|
|
}
|
|
if (string == "keystore.size") {
|
|
return this.keyStoreSize(foxRequest);
|
|
}
|
|
if (string == "keystore.save") {
|
|
return this.keyStoreSave(foxRequest);
|
|
}
|
|
if (string == "keystore.getCertificates") {
|
|
return this.keyStoreGetCertificates(foxRequest);
|
|
}
|
|
if (string == "keystore.deleteEntries") {
|
|
return this.keyStoreDeleteEntries(foxRequest);
|
|
}
|
|
if (string == "keystore.findCertificate") {
|
|
return this.keyStoreFindCertificate(foxRequest);
|
|
}
|
|
if (string == "keystore.generateSelfSignedCert") {
|
|
return this.keyStoreGenerateSelfSignedCert(foxRequest);
|
|
}
|
|
if (string == "keystore.getCertGenerationStatus") {
|
|
return this.keyGetCertGenerationStatus(foxRequest);
|
|
}
|
|
if (string == "keystore.generateCSR") {
|
|
return this.keyStoreGenerateCSR(foxRequest);
|
|
}
|
|
if (string == "provider.Providers") {
|
|
return this.providerProviders(foxRequest);
|
|
}
|
|
if (string == "provider.getProvider") {
|
|
return this.providerGetProvider(foxRequest);
|
|
}
|
|
if (string == "exemption.exemptions") {
|
|
return this.exemptionExemptions(foxRequest);
|
|
}
|
|
if (string == "exemption.setExemption") {
|
|
return this.exemptionSetExemption(foxRequest);
|
|
}
|
|
if (string == "exemption.deleteExemption") {
|
|
return this.exemptionDeleteExemption(foxRequest);
|
|
}
|
|
if (string == "exemption.getExemption") {
|
|
return this.exemptionGetExemption(foxRequest);
|
|
}
|
|
if (string == "exemption.save") {
|
|
return this.exemptionSave(foxRequest);
|
|
}
|
|
throw new InvalidCommandException(string);
|
|
}
|
|
|
|
public Enumeration keyStoreServerAliases() throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.serverAliases");
|
|
foxRequest.add("useTrustStore", false);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String[] stringArray = foxResponse.listStrings("alias");
|
|
List<String> list = Arrays.asList(stringArray);
|
|
Enumeration<String> enumeration = Collections.enumeration(list);
|
|
return enumeration;
|
|
}
|
|
|
|
private final FoxResponse keyStoreServerAliases(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
Enumeration enumeration = iCoreKeyStore.aliases();
|
|
while (enumeration.hasMoreElements()) {
|
|
String string = (String)enumeration.nextElement();
|
|
if (!CertUtils.isValidServerCert((String)string, (ICoreKeyStore)iCoreKeyStore)) continue;
|
|
foxResponse.add("alias", string);
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public Enumeration keyStoreAliases(boolean bl) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.aliases");
|
|
foxRequest.add("useTrustStore", bl);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String[] stringArray = foxResponse.listStrings("alias");
|
|
List<String> list = Arrays.asList(stringArray);
|
|
Enumeration<String> enumeration = Collections.enumeration(list);
|
|
return enumeration;
|
|
}
|
|
|
|
private final FoxResponse keyStoreAliases(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
Enumeration enumeration = iCoreKeyStore.aliases();
|
|
while (enumeration.hasMoreElements()) {
|
|
String string = (String)enumeration.nextElement();
|
|
foxResponse.add("alias", string);
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public boolean keyStoreContainsAlias(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.containsAlias");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getBoolean("containsAlias");
|
|
}
|
|
|
|
private final FoxResponse keyStoreContainsAlias(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
foxResponse.add("containsAlias", iCoreKeyStore.containsAlias(foxRequest.getString("alias")));
|
|
return foxResponse;
|
|
}
|
|
|
|
public void keyStoreDeleteEntry(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.deleteEntry");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse keyStoreDeleteEntry(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
iCoreKeyStore.deleteEntry(foxRequest.getString("alias"));
|
|
return foxResponse;
|
|
}
|
|
|
|
public X509Certificate keyStoreGetCertificate(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getCertificate");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String string2 = foxResponse.getString("certificate", null);
|
|
if (string2 != null) {
|
|
X509Certificate x509Certificate = NX509Certificate.decodeFromString((String)string2);
|
|
return x509Certificate;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private final FoxResponse keyStoreGetCertificate(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
X509Certificate x509Certificate = iCoreKeyStore.getCertificate(foxRequest.getString("alias"));
|
|
if (x509Certificate != null) {
|
|
foxResponse.add("certificate", NX509Certificate.encodeToString((X509Certificate)x509Certificate));
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public String keyStoreGetCertificateAlias(boolean bl, X509Certificate x509Certificate) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getCertificateAlias");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("certificate", NX509Certificate.encodeToString((X509Certificate)x509Certificate));
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getString("alias", null);
|
|
}
|
|
|
|
private final FoxResponse keyStoreGetCertificateAlias(FoxRequest foxRequest) throws Exception {
|
|
X509Certificate x509Certificate;
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
String string = iCoreKeyStore.getCertificateAlias(x509Certificate = NX509Certificate.decodeFromString((String)foxRequest.getString("certificate")));
|
|
if (string != null) {
|
|
foxResponse.add("alias", string);
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public X509Certificate[] keyStoreGetCertificateChain(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getCertificateChain");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String[] stringArray = foxResponse.listStrings("certificateChain");
|
|
X509Certificate[] x509CertificateArray = null;
|
|
if (stringArray.length > 0) {
|
|
x509CertificateArray = new X509Certificate[stringArray.length];
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
x509CertificateArray[n] = NX509Certificate.decodeFromString((String)stringArray[n]);
|
|
++n;
|
|
}
|
|
}
|
|
return x509CertificateArray;
|
|
}
|
|
|
|
private final FoxResponse keyStoreGetCertificateChain(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
X509Certificate[] x509CertificateArray = iCoreKeyStore.getCertificateChain(foxRequest.getString("alias"));
|
|
if (x509CertificateArray != null) {
|
|
int n = 0;
|
|
while (n < x509CertificateArray.length) {
|
|
foxResponse.add("certificateChain", NX509Certificate.encodeToString((X509Certificate)x509CertificateArray[n]));
|
|
++n;
|
|
}
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public Date keyStoreGetCreationDate(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getCreationDate");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
Date date = new Date(foxResponse.getTime("creationDate"));
|
|
return date;
|
|
}
|
|
|
|
private final FoxResponse keyStoreGetCreationDate(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
Date date = iCoreKeyStore.getCreationDate(foxRequest.getString("alias"));
|
|
foxResponse.add("creationDate", date.getTime());
|
|
return foxResponse;
|
|
}
|
|
|
|
public Key keyStoreGetKey(boolean bl, String string, char[] cArray) throws Exception {
|
|
Object object;
|
|
Object object2;
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getKey");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
if (cArray != null) {
|
|
object2 = new String(cArray);
|
|
object = LegacyStorageUtil.encode((String)object2);
|
|
foxRequest.add("password", (String)object);
|
|
}
|
|
object2 = this.sendSync(foxRequest);
|
|
object = null;
|
|
boolean bl2 = object2.getBoolean("success", false);
|
|
if (bl2) {
|
|
String string2 = object2.getString("key", null);
|
|
if (string2 != null) {
|
|
object = NKey.decodeFromString((String)string2);
|
|
}
|
|
return object;
|
|
}
|
|
throw new UnrecoverableKeyException("unable to recover key");
|
|
}
|
|
|
|
private final FoxResponse keyStoreGetKey(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
try {
|
|
Key key;
|
|
char[] cArray = null;
|
|
if (foxRequest.getString("password", null) != null) {
|
|
cArray = LegacyStorageUtil.decode((String)foxRequest.getString("password")).toCharArray();
|
|
}
|
|
if ((key = iCoreKeyStore.getKey(foxRequest.getString("alias"), cArray)) != null) {
|
|
foxResponse.add("success", true);
|
|
foxResponse.add("key", NKey.encodeToString((Key)key));
|
|
} else {
|
|
foxResponse.add("success", false);
|
|
}
|
|
return foxResponse;
|
|
}
|
|
catch (UnrecoverableKeyException unrecoverableKeyException) {
|
|
foxResponse.add("success", false);
|
|
return foxResponse;
|
|
}
|
|
}
|
|
|
|
public boolean keyStoreIsCertificateEntry(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.isCertificateEntry");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getBoolean("isCertificateEntry");
|
|
}
|
|
|
|
private final FoxResponse keyStoreIsCertificateEntry(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
foxResponse.add("isCertificateEntry", iCoreKeyStore.isCertificateEntry(foxRequest.getString("alias")));
|
|
return foxResponse;
|
|
}
|
|
|
|
public boolean keyStoreIsKeyEntry(boolean bl, String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.isKeyEntry");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getBoolean("isKeyEntry");
|
|
}
|
|
|
|
private final FoxResponse keyStoreIsKeyEntry(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
foxResponse.add("isKeyEntry", iCoreKeyStore.isKeyEntry(foxRequest.getString("alias")));
|
|
return foxResponse;
|
|
}
|
|
|
|
public void keyStoreSetCertificateEntry(boolean bl, String string, X509Certificate x509Certificate) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.setCertificateEntry");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
foxRequest.add("certificate", NX509Certificate.encodeToString((X509Certificate)x509Certificate));
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse keyStoreSetCertificateEntry(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
X509Certificate x509Certificate = NX509Certificate.decodeFromString((String)foxRequest.getString("certificate"));
|
|
iCoreKeyStore.setCertificateEntry(foxRequest.getString("alias"), x509Certificate);
|
|
return foxResponse;
|
|
}
|
|
|
|
public void keyStoreSetKeyEntry0(boolean bl, String string, byte[] byArray, X509Certificate[] x509CertificateArray) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.setKeyEntry0");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
foxRequest.add("key", byArray);
|
|
if (x509CertificateArray != null) {
|
|
int n = 0;
|
|
while (n < x509CertificateArray.length) {
|
|
foxRequest.add("chain", NX509Certificate.encodeToString((X509Certificate)x509CertificateArray[n]));
|
|
++n;
|
|
}
|
|
}
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse keyStoreSetKeyEntry0(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
byte[] byArray = foxRequest.getBlob("key");
|
|
X509Certificate[] x509CertificateArray = null;
|
|
String[] stringArray = null;
|
|
try {
|
|
stringArray = foxRequest.listStrings("chain");
|
|
x509CertificateArray = new X509Certificate[stringArray.length];
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
x509CertificateArray[n] = NX509Certificate.decodeFromString((String)stringArray[n]);
|
|
++n;
|
|
}
|
|
}
|
|
catch (IOException iOException) {}
|
|
iCoreKeyStore.setKeyEntry(foxRequest.getString("alias"), byArray, x509CertificateArray);
|
|
return foxResponse;
|
|
}
|
|
|
|
public void keyStoreSetKeyEntry1(boolean bl, String string, Key key, char[] cArray, X509Certificate[] x509CertificateArray) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.setKeyEntry1");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
foxRequest.add("key", NKey.encodeToString((Key)key));
|
|
if (cArray != null) {
|
|
String string2 = new String(cArray);
|
|
String string3 = LegacyStorageUtil.encode((String)string2);
|
|
foxRequest.add("password", string3);
|
|
}
|
|
if (x509CertificateArray != null) {
|
|
int n = 0;
|
|
while (n < x509CertificateArray.length) {
|
|
foxRequest.add("chain", NX509Certificate.encodeToString((X509Certificate)x509CertificateArray[n]));
|
|
++n;
|
|
}
|
|
}
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse keyStoreSetKeyEntry1(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
Key key = NKey.decodeFromString((String)foxRequest.getString("key"));
|
|
char[] cArray = null;
|
|
if (foxRequest.getString("password", null) != null) {
|
|
cArray = LegacyStorageUtil.decode((String)foxRequest.getString("password")).toCharArray();
|
|
}
|
|
X509Certificate[] x509CertificateArray = null;
|
|
String[] stringArray = null;
|
|
try {
|
|
stringArray = foxRequest.listStrings("chain");
|
|
x509CertificateArray = new X509Certificate[stringArray.length];
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
x509CertificateArray[n] = NX509Certificate.decodeFromString((String)stringArray[n]);
|
|
++n;
|
|
}
|
|
}
|
|
catch (IOException iOException) {}
|
|
iCoreKeyStore.setKeyEntry(foxRequest.getString("alias"), key, cArray, x509CertificateArray);
|
|
return foxResponse;
|
|
}
|
|
|
|
public int keyStoreSize(boolean bl) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.size");
|
|
foxRequest.add("useTrustStore", bl);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getInt("size");
|
|
}
|
|
|
|
private final FoxResponse keyStoreSize(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
foxResponse.add("size", iCoreKeyStore.size());
|
|
return foxResponse;
|
|
}
|
|
|
|
public void keyStoreSave(boolean bl) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.save");
|
|
foxRequest.add("useTrustStore", bl);
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse keyStoreSave(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
iCoreKeyStore.save();
|
|
return foxResponse;
|
|
}
|
|
|
|
public Enumeration keyStoreGetCertificates(boolean bl) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getCertificates");
|
|
foxRequest.add("useTrustStore", bl);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String[] stringArray = foxResponse.listStrings("cert");
|
|
Class clazz = class$com$tridium$crypto$core$cert$NX509CertificateEntry;
|
|
if (clazz == null) {
|
|
clazz = class$com$tridium$crypto$core$cert$NX509CertificateEntry = BCryptoChannel.class("[Lcom.tridium.crypto.core.cert.NX509CertificateEntry;", false);
|
|
}
|
|
Array array = new Array(clazz);
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
NX509CertificateEntry nX509CertificateEntry = NX509CertificateEntry.decodeFromString((String)stringArray[n]);
|
|
array.add((Object)nX509CertificateEntry);
|
|
++n;
|
|
}
|
|
Enumeration enumeration = Collections.enumeration(array.list());
|
|
return enumeration;
|
|
}
|
|
|
|
private final FoxResponse keyStoreGetCertificates(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
Enumeration enumeration = iCoreKeyStore.getCertificates();
|
|
while (enumeration.hasMoreElements()) {
|
|
NX509CertificateEntry nX509CertificateEntry = (NX509CertificateEntry)enumeration.nextElement();
|
|
foxResponse.add("cert", nX509CertificateEntry.encodeToString());
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public String keyStoreFindCertificate(boolean bl, X509Certificate x509Certificate) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.findCertificate");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("certificate", NX509Certificate.encodeToString((X509Certificate)x509Certificate));
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getString("alias", null);
|
|
}
|
|
|
|
private final FoxResponse keyStoreFindCertificate(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
X509Certificate x509Certificate = NX509Certificate.decodeFromString((String)foxRequest.getString("certificate"));
|
|
X509Principal x509Principal = PrincipalUtil.getSubjectX509Principal((X509Certificate)x509Certificate);
|
|
Enumeration enumeration = iCoreKeyStore.aliases();
|
|
while (enumeration.hasMoreElements()) {
|
|
String string = (String)enumeration.nextElement();
|
|
X509Certificate x509Certificate2 = iCoreKeyStore.getCertificate(string);
|
|
if (!x509Certificate2.getType().equals("X.509")) continue;
|
|
X509Certificate x509Certificate3 = x509Certificate2;
|
|
X509Principal x509Principal2 = PrincipalUtil.getSubjectX509Principal((X509Certificate)x509Certificate3);
|
|
if (!x509Principal.equals((Object)x509Principal2)) break;
|
|
foxResponse.add("alias", string);
|
|
break;
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public void keyStoreDeleteEntries(boolean bl, String[] stringArray) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.deleteEntries");
|
|
foxRequest.add("useTrustStore", bl);
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
foxRequest.add("alias", stringArray[n]);
|
|
++n;
|
|
}
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse keyStoreDeleteEntries(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
String[] stringArray = foxRequest.listStrings("alias");
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
log.trace("deleting entry " + stringArray[n]);
|
|
iCoreKeyStore.deleteEntry(stringArray[n]);
|
|
++n;
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public int keyStoreGenerateSelfSignedCert(boolean bl, String string, String string2, Date date, Date date2, int n, int n2, String string3, String string4) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.generateSelfSignedCert");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
foxRequest.add("dn", string2);
|
|
foxRequest.add("notBefore", date.getTime());
|
|
foxRequest.add("notAfter", date2.getTime());
|
|
foxRequest.add("keySize", n);
|
|
foxRequest.add("keyUsage", n2);
|
|
foxRequest.add("email", string3);
|
|
foxRequest.add("password", string4);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getInt("requestId", -1);
|
|
}
|
|
|
|
private final FoxResponse keyStoreGenerateSelfSignedCert(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
String string = foxRequest.getString("alias");
|
|
String string2 = foxRequest.getString("dn");
|
|
Date date = new Date(foxRequest.getTime("notBefore"));
|
|
Date date2 = new Date(foxRequest.getTime("notAfter"));
|
|
int n = foxRequest.getInt("keySize");
|
|
int n2 = foxRequest.getInt("keyUsage");
|
|
String string3 = foxRequest.getString("email", null);
|
|
String string4 = foxRequest.getString("password", null);
|
|
int n3 = iCoreKeyStore.generateSelfSignedCert(string, string2, date, date2, n, n2, string3, string4);
|
|
foxResponse.add("requestId", n3);
|
|
return foxResponse;
|
|
}
|
|
|
|
public int keyGetCertGenerationStatus(boolean bl, int n) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.getCertGenerationStatus");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("requestId", n);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return foxResponse.getInt("status", -1);
|
|
}
|
|
|
|
private final FoxResponse keyGetCertGenerationStatus(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
int n = foxRequest.getInt("requestId", -1);
|
|
int n2 = iCoreKeyStore.getCertGenerationStatus(n);
|
|
foxResponse.add("requestId", n);
|
|
foxResponse.add("status", n2);
|
|
return foxResponse;
|
|
}
|
|
|
|
public NPKCS10CertificationRequest keyStoreGenerateCSR(boolean bl, String string, String string2) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("keystore.generateCSR");
|
|
foxRequest.add("useTrustStore", bl);
|
|
foxRequest.add("alias", string);
|
|
if (string2 != null) {
|
|
foxRequest.add("passwd", string2);
|
|
}
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
NPKCS10CertificationRequest nPKCS10CertificationRequest = NPKCS10CertificationRequest.make((String)foxResponse.getString("csr"));
|
|
return nPKCS10CertificationRequest;
|
|
}
|
|
|
|
private final FoxResponse keyStoreGenerateCSR(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreKeyStore iCoreKeyStore = this.getCorrectKeyStore(foxRequest);
|
|
String string = foxRequest.getString("alias");
|
|
String string2 = foxRequest.getString("passwd", null);
|
|
NPKCS10CertificationRequest nPKCS10CertificationRequest = iCoreKeyStore.generateCSR(string, string2);
|
|
foxResponse.add("csr", nPKCS10CertificationRequest.encodeToString());
|
|
return foxResponse;
|
|
}
|
|
|
|
public Enumeration providerProviders() throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("provider.Providers");
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
Vector<NProvider> vector = new Vector<NProvider>();
|
|
String[] stringArray = foxResponse.listStrings("provider");
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
vector.add(NProvider.decodeFromString((String)stringArray[n]));
|
|
++n;
|
|
}
|
|
return vector.elements();
|
|
}
|
|
|
|
private final FoxResponse providerProviders(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
NProvider[] nProviderArray = NProvider.getProviders();
|
|
int n = 0;
|
|
while (n < nProviderArray.length) {
|
|
foxResponse.add("provider", nProviderArray[n].encodeToString());
|
|
++n;
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public IProvider providerGetProvider(String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("provider.getProvider");
|
|
foxRequest.add("name", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
return NProvider.decodeFromString((String)foxResponse.getString("provider"));
|
|
}
|
|
|
|
private final FoxResponse providerGetProvider(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
NProvider[] nProviderArray = NProvider.getProviders();
|
|
int n = 0;
|
|
while (n < nProviderArray.length) {
|
|
foxResponse.add("provider", nProviderArray[n].encodeToString());
|
|
++n;
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public Enumeration exemptionExemptions() throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("exemption.exemptions");
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String[] stringArray = foxResponse.listStrings("exemption");
|
|
Class clazz = class$com$tridium$crypto$core$cert$NHostExemption;
|
|
if (clazz == null) {
|
|
clazz = class$com$tridium$crypto$core$cert$NHostExemption = BCryptoChannel.class("[Lcom.tridium.crypto.core.cert.NHostExemption;", false);
|
|
}
|
|
Array array = new Array(clazz);
|
|
int n = 0;
|
|
while (n < stringArray.length) {
|
|
array.push((Object)NHostExemption.decodeFromString((String)stringArray[n]));
|
|
++n;
|
|
}
|
|
Enumeration enumeration = Collections.enumeration(array.list());
|
|
return enumeration;
|
|
}
|
|
|
|
private final FoxResponse exemptionExemptions(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreExemptionStore iCoreExemptionStore = this.service.getExemptionStore();
|
|
Enumeration enumeration = iCoreExemptionStore.exemptions();
|
|
while (enumeration.hasMoreElements()) {
|
|
NHostExemption nHostExemption = (NHostExemption)enumeration.nextElement();
|
|
foxResponse.add("exemption", nHostExemption.encodeToString());
|
|
}
|
|
return foxResponse;
|
|
}
|
|
|
|
public void exemptionSetExemption(NHostExemption nHostExemption) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("exemption.setExemption");
|
|
foxRequest.add("exemption", nHostExemption.encodeToString());
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse exemptionSetExemption(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreExemptionStore iCoreExemptionStore = this.service.getExemptionStore();
|
|
NHostExemption nHostExemption = NHostExemption.make((String)foxRequest.getString("exemption"));
|
|
iCoreExemptionStore.setExemption(nHostExemption);
|
|
return foxResponse;
|
|
}
|
|
|
|
public void exemptionDeleteExemption(String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("exemption.deleteExemption");
|
|
foxRequest.add("host", string);
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse exemptionDeleteExemption(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreExemptionStore iCoreExemptionStore = this.service.getExemptionStore();
|
|
String string = foxRequest.getString("host");
|
|
iCoreExemptionStore.deleteExemption(string);
|
|
return foxResponse;
|
|
}
|
|
|
|
public NHostExemption exemptionGetExemption(String string) throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("exemption.getExemption");
|
|
foxRequest.add("host", string);
|
|
FoxResponse foxResponse = this.sendSync(foxRequest);
|
|
String string2 = foxResponse.getString("exemption");
|
|
NHostExemption nHostExemption = NHostExemption.make((String)string2);
|
|
return nHostExemption;
|
|
}
|
|
|
|
private final FoxResponse exemptionGetExemption(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreExemptionStore iCoreExemptionStore = this.service.getExemptionStore();
|
|
String string = foxRequest.getString("host");
|
|
NHostExemption nHostExemption = iCoreExemptionStore.getExemption(string);
|
|
foxResponse.add("exemption", nHostExemption.encodeToString());
|
|
return foxResponse;
|
|
}
|
|
|
|
public void exemptionSave() throws Exception {
|
|
FoxRequest foxRequest = this.makeRequest("exemption.save");
|
|
this.sendSync(foxRequest);
|
|
}
|
|
|
|
private final FoxResponse exemptionSave(FoxRequest foxRequest) throws Exception {
|
|
FoxResponse foxResponse = new FoxResponse(foxRequest);
|
|
ICoreExemptionStore iCoreExemptionStore = this.service.getExemptionStore();
|
|
iCoreExemptionStore.save();
|
|
return foxResponse;
|
|
}
|
|
|
|
private final ICoreKeyStore getCorrectKeyStore(FoxRequest foxRequest) throws Exception {
|
|
boolean bl = foxRequest.getBoolean("useTrustStore");
|
|
if (bl) {
|
|
return this.service.getTrustStore();
|
|
}
|
|
return this.service.getKeyStore();
|
|
}
|
|
|
|
public File getBaseDir() {
|
|
try {
|
|
return new File(BCryptoChannel.getFilePath(BOrd.make((String)"file:!")));
|
|
}
|
|
catch (Exception exception) {
|
|
return Sys.getBajaHome();
|
|
}
|
|
}
|
|
|
|
private static final String getFilePath(BOrd bOrd) throws IOException {
|
|
OrdQuery[] ordQueryArray = bOrd.parse();
|
|
FilePath filePath = (FilePath)ordQueryArray[ordQueryArray.length - 1];
|
|
File file = BFileSystem.INSTANCE.pathToLocalFile(filePath);
|
|
return file.getPath();
|
|
}
|
|
|
|
static /* synthetic */ Class class(String string, boolean bl) {
|
|
try {
|
|
Class<?> clazz = Class.forName(string);
|
|
if (!bl) {
|
|
clazz = clazz.getComponentType();
|
|
}
|
|
return clazz;
|
|
}
|
|
catch (ClassNotFoundException classNotFoundException) {
|
|
throw new NoClassDefFoundError(classNotFoundException.getMessage());
|
|
}
|
|
}
|
|
|
|
private final /* synthetic */ void this() {
|
|
this.validChannel = false;
|
|
}
|
|
|
|
public BCryptoChannel() {
|
|
super("crypto");
|
|
this.this();
|
|
}
|
|
|
|
static {
|
|
Class clazz = class$com$tridium$platcrypto$fox$BCryptoChannel;
|
|
if (clazz == null) {
|
|
clazz = class$com$tridium$platcrypto$fox$BCryptoChannel = BCryptoChannel.class("[Lcom.tridium.platcrypto.fox.BCryptoChannel;", false);
|
|
}
|
|
TYPE = Sys.loadType((Class)clazz);
|
|
log = Log.getLog((String)"crypto");
|
|
}
|
|
}
|
|
|