/* * Decompiled with CFR 0.152. * * Could not load the following classes: * 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.ICoreKeyStore * com.tridium.platform.daemon.BDaemonSession * com.tridium.platform.daemon.BStationSurrogate * com.tridium.platform.daemon.message.DaemonMessage * javax.baja.sys.Sys * javax.baja.sys.Type * javax.baja.xml.XElem * javax.baja.xml.XParser * javax.baja.xml.XText */ package com.tridium.platcrypto.daemon; 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.ICoreKeyStore; import com.tridium.platcrypto.daemon.BPlatCryptoBase; import com.tridium.platcrypto.daemon.messages.CertGenerationStatusMessage; import com.tridium.platcrypto.daemon.messages.FindCertificateMessage; import com.tridium.platcrypto.daemon.messages.GenerateCertificateMessage; import com.tridium.platcrypto.daemon.messages.GetKeyMessage; import com.tridium.platcrypto.daemon.messages.KeyStoreMessage; import com.tridium.platcrypto.daemon.messages.SetCertificateEntryMessage; import com.tridium.platcrypto.daemon.messages.SetKeyEntryMessage; import com.tridium.platcrypto.daemon.messages.SetKeyEntryWithResponseMessage; import com.tridium.platform.daemon.BDaemonSession; import com.tridium.platform.daemon.BStationSurrogate; import com.tridium.platform.daemon.message.DaemonMessage; import java.io.InputStream; import java.security.Key; import java.security.KeyStore; import java.security.cert.X509Certificate; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.Enumeration; import java.util.List; import javax.baja.sys.Sys; import javax.baja.sys.Type; import javax.baja.xml.XElem; import javax.baja.xml.XParser; import javax.baja.xml.XText; /* * Illegal identifiers - consider using --renameillegalidents true */ public class BPlatKeyStore extends BPlatCryptoBase implements ICoreKeyStore { public static final Type TYPE; static /* synthetic */ Class class$com$tridium$platcrypto$daemon$BPlatKeyStore; public Type getType() { return TYPE; } public String getKeyStoreType() { return "keystore"; } private final List getAliases() throws Exception { InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new KeyStoreMessage(this.getKeyStoreType())); XElem xElem = XParser.make((InputStream)inputStream).parse(); XElem[] xElemArray = xElem.elems("key"); int n = 0; if (xElemArray != null) { n = xElemArray.length; } ArrayList arrayList = new ArrayList(n); if (xElemArray != null) { int n2 = 0; while (n2 < xElemArray.length) { String string = xElemArray[n2].get("alias"); if (string != null && string.length() > 0) { arrayList.add(string); } ++n2; } } return arrayList; } public Enumeration aliases() throws Exception { return Collections.enumeration(this.getAliases()); } public boolean containsAlias(String string) throws Exception { return this.getAliases().contains(string); } public void deleteEntries(String[] stringArray) throws Exception { int n = 0; while (n < stringArray.length) { this.deleteEntry(stringArray[n]); ++n; } } public void deleteEntry(String string) throws Exception { this.getDaemonSession().sendMessage((DaemonMessage)new DeleteEntryMessage(this.getKeyStoreType(), string)); } public X509Certificate[] getCertificateChain(String string) throws Exception { XElem[] xElemArray = this.send(new GetCertificateChainMessage(this.getKeyStoreType(), string), "certificate"); if (xElemArray == null || xElemArray.length == 0) { return null; } X509Certificate[] x509CertificateArray = new X509Certificate[xElemArray.length]; int n = 0; while (n < x509CertificateArray.length) { if (xElemArray[n] != null && xElemArray[n].text() != null && xElemArray[n].text().length() > 0) { x509CertificateArray[n] = NX509Certificate.decodeFromString((String)xElemArray[n].text().string()); } ++n; } return x509CertificateArray; } public Key getKey(String string, char[] cArray) throws Exception { String string2; XText xText; InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new GetKeyMessage(this.getKeyStoreType(), string, cArray)); XElem xElem = XParser.make((InputStream)inputStream).parse(); if (xElem != null && (xText = xElem.text()) != null && (string2 = xText.toString()) != null && string2.length() > 0) { return NKey.decodeFromString((String)string2); } return null; } public Date getCreationDate(String string) throws Exception { String string2; InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new KeyStoreMessage(this.getKeyStoreType(), string)); XElem[] xElemArray = XParser.make((InputStream)inputStream).parse().elems("key"); if (xElemArray.length > 0 && (string2 = xElemArray[0].get("creationDate")) != null && string2.length() == "yyyy-MM-dd HH:mm:ss".length()) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = simpleDateFormat.parse(string2); return date; } return null; } public boolean isKeyEntry(String string) throws Exception { InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new KeyStoreMessage(this.getKeyStoreType(), string)); XElem[] xElemArray = XParser.make((InputStream)inputStream).parse().elems("key"); if (xElemArray.length > 0) { return xElemArray[0].getb("keyEntry"); } return false; } public boolean isCertificateEntry(String string) throws Exception { InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new KeyStoreMessage(this.getKeyStoreType(), string)); XElem[] xElemArray = XParser.make((InputStream)inputStream).parse().elems("key"); if (xElemArray.length > 0) { return xElemArray[0].getb("certEntry"); } return false; } public void setCertificateEntry(String string, X509Certificate x509Certificate) throws Exception { this.send(new SetCertificateEntryMessage(this.getKeyStoreType(), string, x509Certificate)); } public void setKeyEntry(String string, byte[] byArray, X509Certificate[] x509CertificateArray) throws Exception { XElem xElem = this.send(new SetKeyEntryWithResponseMessage(this.getKeyStoreType(), string, byArray, x509CertificateArray)); if (xElem.text() != null) { if (!xElem.text().string().equalsIgnoreCase("success")) { throw new Exception(xElem.text().string()); } } else { this.send(new SetKeyEntryMessage(this.getKeyStoreType(), string, byArray, x509CertificateArray)); } } public void setKeyEntry(String string, Key key, char[] cArray, X509Certificate[] x509CertificateArray) throws Exception { XElem xElem = this.send(new SetKeyEntryWithResponseMessage(this.getKeyStoreType(), string, key, cArray, x509CertificateArray)); if (xElem.text() != null) { if (!xElem.text().string().equalsIgnoreCase("success")) { throw new Exception(xElem.text().string()); } } else { this.send(new SetKeyEntryMessage(this.getKeyStoreType(), string, key, cArray, x509CertificateArray)); } } public Enumeration getCertificates() throws Exception { XElem[] xElemArray = this.send(new GetCertificatesMessage(this.getKeyStoreType()), "certificateEntry"); int n = 0; if (xElemArray != null) { n = xElemArray.length; } ArrayList arrayList = new ArrayList(n); if (xElemArray != null) { int n2 = 0; while (n2 < xElemArray.length) { String string = xElemArray[n2].text().toString(); if (string != null && string.length() > 0) { arrayList.add(NX509CertificateEntry.decodeFromString((String)string)); } ++n2; } } return Collections.enumeration(arrayList); } public String findCertificate(X509Certificate x509Certificate) throws Exception { Enumeration enumeration = this.getCertificates(); while (enumeration.hasMoreElements()) { NX509CertificateEntry nX509CertificateEntry = (NX509CertificateEntry)enumeration.nextElement(); NX509Certificate nX509Certificate = nX509CertificateEntry.getCertificate(0); if (nX509Certificate == null || !nX509Certificate.getPublicKey().equals(x509Certificate.getPublicKey())) continue; return nX509CertificateEntry.getAlias(); } return null; } public int generateSelfSignedCert(String string, String string2, String string3, String string4, String string5, String string6, String string7, Date date, Date date2, int n, int n2, String string8, String string9) throws Exception { XElem xElem = this.send(new GenerateCertificateMessage(this.getKeyStoreType(), string, string2, string3, string4, string5, string6, string7, date, date2, n, n2, string8, string9)); if (xElem != null) { return xElem.geti("requestId", -1); } return -1; } public int generateSelfSignedCert(String string, String string2, Date date, Date date2, int n, int n2, String string3, String string4) throws Exception { XElem xElem = this.send(new GenerateCertificateMessage(this.getKeyStoreType(), string, string2, date, date2, n, n2, string3, string4)); if (xElem != null) { return xElem.geti("requestId", -1); } return -1; } public int getCertGenerationStatus(int n) throws Exception { XElem xElem = this.send(new CertGenerationStatusMessage(this.getKeyStoreType(), n)); if (xElem != null) { return xElem.geti("status", -1); } return -1; } public NPKCS10CertificationRequest generateCSR(String string, String string2) throws Exception { XElem xElem = this.send(new GenerateCsrMessage(this.getKeyStoreType(), string, string2)); if (xElem != null && xElem.text() != null) { String string3 = xElem.text().toString(); return NPKCS10CertificationRequest.make((String)string3); } return null; } public X509Certificate getCertificate(String string) throws Exception { XElem xElem = this.send(new GetCertificateMessage(this.getKeyStoreType(), string)); if (xElem != null && xElem.text() != null) { String string2 = xElem.text().toString(); return NX509Certificate.decodeFromString((String)string2); } return null; } public String getCertificateAlias(X509Certificate x509Certificate) throws Exception { InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new GetCertificateAliasMessage(this.getKeyStoreType(), x509Certificate)); XElem xElem = XParser.make((InputStream)inputStream).parse(); String string = xElem.get("alias"); return string; } public int size() throws Exception { return this.getAliases().size(); } public long getLastModified() throws Exception { return 0L; } public void load() throws Exception { } public void save() throws Exception { this.send(new SaveMessage(this.getKeyStoreType())); } public KeyStore getKeyStore() throws Exception { throw new UnsupportedOperationException("can't access raw keystore remotely"); } public boolean canGenerateCertificate() { boolean bl = false; try { BDaemonSession bDaemonSession = this.getDaemonSession(); if (bDaemonSession.getHostProperties().supportsServlet("crypto")) { InputStream inputStream = this.getDaemonSession().getInputStream((DaemonMessage)new SendAliasesMessage(this.getKeyStoreType())); XElem xElem = XParser.make((InputStream)inputStream).parse(); bl = xElem.attrIndex("canGenerate") != -1 ? xElem.getb("canGenerate", false) : (bDaemonSession.getHostProperties().getOsName().startsWith("qnx") ? BStationSurrogate.isAnyStationRunning((BDaemonSession)bDaemonSession) ^ true : true); } } catch (Exception exception) {} return bl; } 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()); } } public BPlatKeyStore() throws UnsupportedOperationException { throw new UnsupportedOperationException(); } public BPlatKeyStore(BDaemonSession bDaemonSession) { super(bDaemonSession); } static { Class clazz = class$com$tridium$platcrypto$daemon$BPlatKeyStore; if (clazz == null) { clazz = class$com$tridium$platcrypto$daemon$BPlatKeyStore = BPlatKeyStore.class("[Lcom.tridium.platcrypto.daemon.BPlatKeyStore;", false); } TYPE = Sys.loadType((Class)clazz); } /* * Illegal identifiers - consider using --renameillegalidents true */ public class DeleteEntryMessage extends KeyStoreMessage { public String getAction() { return "deleteEntry"; } public DeleteEntryMessage(String string, String string2) { super(string); this.add("alias", string2); } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class GetCertificateChainMessage extends KeyStoreMessage { public String getAction() { return "getCertificateChain"; } public GetCertificateChainMessage(String string, String string2) { super(string); this.add("alias", string2); } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class GetCertificatesMessage extends KeyStoreMessage { public String getAction() { return "getCertificates"; } public GetCertificatesMessage(String string) { super(string); } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class GenerateCsrMessage extends KeyStoreMessage { public String getAction() { return "generateCsr"; } public GenerateCsrMessage(String string, String string2, String string3) { super(string); this.add("alias", string2); if (string3 != null) { this.add("passwd", string3); } } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class GetCertificateMessage extends KeyStoreMessage { public String getAction() { return "getCertificate"; } public GetCertificateMessage(String string, String string2) { super(string); this.add("alias", string2); } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class GetCertificateAliasMessage extends FindCertificateMessage { public String getAction() { return "getCertificateAlias"; } public GetCertificateAliasMessage(String string, X509Certificate x509Certificate) { super(string, x509Certificate); } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class SaveMessage extends KeyStoreMessage { public String getAction() { return "saveKeyStore"; } public SaveMessage(String string) { super(string); } } /* * Illegal identifiers - consider using --renameillegalidents true */ public class SendAliasesMessage extends KeyStoreMessage { public String getAction() { return "sendAliases"; } public SendAliasesMessage(String string) { super(string); } } }