Exemple #1
0
        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);
        }
Exemple #2
0
        private static void AddRootCaCertificateToRootCaList(byte[] rootCaCertificateHash)
        {
            CertificateHashEntry newCertHashEntry = new CertificateHashEntry();

            newCertHashEntry.CertificateHash = rootCaCertificateHash;
            newCertHashEntry.IsCa            = true;

            AddCertificateToList(TRUSTED_ROOT_CA_LIST_STORAGE_KEY, newCertHashEntry);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }