private static void AddCertificateToList(byte[] storageKey, CertificateHashEntry newCertHashEntry) { CertificateHashMapEntry trustedRootCaHashMapEntry; byte[] newCertHashEntrySerialized = SerializationUtil.Serialize(newCertHashEntry); byte[] trustedRootCAListHashMapEntrySerialized = StorageUtil.readFromStorage(storageKey); if (trustedRootCAListHashMapEntrySerialized == null) { trustedRootCaHashMapEntry = new CertificateHashMapEntry(); trustedRootCaHashMapEntry.certificateHashArray = new byte[1][]; trustedRootCaHashMapEntry.certificateHashArray[0] = newCertHashEntrySerialized; } else { trustedRootCaHashMapEntry = (CertificateHashMapEntry)SerializationUtil.Deserialize(trustedRootCAListHashMapEntrySerialized); byte[][] newCertificateHashArray = new byte[trustedRootCaHashMapEntry.certificateHashArray.Length + 1][]; newCertificateHashArray[0] = newCertHashEntrySerialized; for (int i = 0; i < trustedRootCaHashMapEntry.certificateHashArray.Length; i++) { newCertificateHashArray[i + 1] = trustedRootCaHashMapEntry.certificateHashArray[i]; } trustedRootCaHashMapEntry.certificateHashArray = newCertificateHashArray; } trustedRootCAListHashMapEntrySerialized = SerializationUtil.Serialize(trustedRootCaHashMapEntry); StorageUtil.saveToStorage(storageKey, trustedRootCAListHashMapEntrySerialized); }
private static void AddRootCaCertificateToRootCaList(byte[] rootCaCertificateHash) { CertificateHashEntry newCertHashEntry = new CertificateHashEntry(); newCertHashEntry.CertificateHash = rootCaCertificateHash; newCertHashEntry.IsCa = true; AddCertificateToList(TRUSTED_ROOT_CA_LIST_STORAGE_KEY, newCertHashEntry); }
private static void AddCertificateToCaIssuedCertificateList(Certificate certificate, byte[] certificateHash) { CertificateHashEntry newCertHashEntry = new CertificateHashEntry(); newCertHashEntry.CertificateHash = certificateHash; newCertHashEntry.IsCa = certificate.BasicConstraints.IsCa; byte[] storageKey = ArrayUtil.Concat(ELEMENT_LIST, certificate.AuthorityKeyIdentifier.keyIdentifier); AddCertificateToList(storageKey, newCertHashEntry); }
private static void AddToDomainCertificateHash(byte[] domainName, byte[] certificateHash) { Logger.log("Adding Certificate Registry for Domain :", domainName); CertificateHashEntry[] certificateHashEntries = RetrieveCertList(domainName); foreach (CertificateHashEntry certificateHashEntry in certificateHashEntries) { if (ArrayUtil.AreEqual(certificateHashEntry.CertificateHash, certificateHash)) { return; } } CertificateHashEntry newCertHashEntry = new CertificateHashEntry(); newCertHashEntry.CertificateHash = certificateHash; newCertHashEntry.IsCa = false; AddCertificateToList(domainName, newCertHashEntry); }
public static CertificateHashEntry[] RetrieveCertList(byte[] storageKey) { byte[] trustedRootCAListHashMapEntrySerialized = StorageUtil.readFromStorage(storageKey); if (trustedRootCAListHashMapEntrySerialized == null) { return(new CertificateHashEntry[0]); } else { CertificateHashMapEntry trustedRootCaHashMapEntry = (CertificateHashMapEntry)SerializationUtil.Deserialize(trustedRootCAListHashMapEntrySerialized); CertificateHashEntry[] retCertificateHashEntries = new CertificateHashEntry[trustedRootCaHashMapEntry.certificateHashArray.Length]; for (int i = 0; i < trustedRootCaHashMapEntry.certificateHashArray.Length; i++) { byte[] certificateHashEntrySerialized = trustedRootCaHashMapEntry.certificateHashArray[i]; CertificateHashEntry certificateHashEntry = (CertificateHashEntry)SerializationUtil.Deserialize(certificateHashEntrySerialized); retCertificateHashEntries[i] = certificateHashEntry; } return(retCertificateHashEntries); } }