コード例 #1
0
        private static void AddRootCaCertificateToRootCaList(byte[] rootCACertificateHash)
        {
            CertificateHashMapEntry trustedRootCaHashMapEntry;

            byte[] trustedRootCAListHashMapEntrySerialized = StorageUtil.readFromStorage(TRUSTED_ROOT_CA_LIST_STORAGE_KEY);
            if (trustedRootCAListHashMapEntrySerialized == null)
            {
                trustedRootCaHashMapEntry = new CertificateHashMapEntry();
                trustedRootCaHashMapEntry.CertificateHashList = new List <CertificateHashEntry>();
                //trustedRootCaHashMapEntry.Count = 0;
            }
            else
            {
                trustedRootCaHashMapEntry = (CertificateHashMapEntry)SerializationUtil.Deserialize(trustedRootCAListHashMapEntrySerialized);
            }

            CertificateHashEntry newCertHashEntry = new CertificateHashEntry();

            newCertHashEntry.CertificateHash = rootCACertificateHash;
            newCertHashEntry.IsCa            = true;
            trustedRootCaHashMapEntry.CertificateHashList.Add(newCertHashEntry);
            //trustedRootCaHashMapEntry.Count += 1;

            trustedRootCAListHashMapEntrySerialized = SerializationUtil.Serialize(trustedRootCaHashMapEntry);
            StorageUtil.saveToStorage(TRUSTED_ROOT_CA_LIST_STORAGE_KEY, trustedRootCAListHashMapEntrySerialized);
        }
コード例 #2
0
        private static void AddToDomainCertificateHash(byte[] domainName, byte[] certificateHash)
        {
            CertificateHashMapEntry certHashMapEntry;

            byte[] certHashMapEntrySerialized = StorageUtil.readFromStorage(domainName);
            if (certHashMapEntrySerialized == null)
            {
                certHashMapEntry = new CertificateHashMapEntry();
                certHashMapEntry.CertificateHashList = new List <CertificateHashEntry>();
            }
            else
            {
                certHashMapEntry = (CertificateHashMapEntry)SerializationUtil.Deserialize(certHashMapEntrySerialized);
            }

            foreach (var certificateHashEntry in certHashMapEntry.CertificateHashList)
            {
                if (ArrayUtil.AreEqual(certificateHashEntry.CertificateHash, certificateHash))
                {
                    return;
                }
            }

            CertificateHashEntry newCertHashEntry = new CertificateHashEntry();

            newCertHashEntry.CertificateHash = certificateHash;
            newCertHashEntry.IsCa            = false;
            certHashMapEntry.CertificateHashList.Add(newCertHashEntry);
            //certHashMapEntry.Count += 1;

            certHashMapEntrySerialized = SerializationUtil.Serialize(certHashMapEntry);

            StorageUtil.saveToStorage(domainName, certHashMapEntrySerialized);
        }
コード例 #3
0
        private static void AddCertificateToCaIssuedCertificateList(Certificate certificate, byte[] certificateHash)
        {
            CertificateHashMapEntry certHashMapEntry;

            byte[] storageKey = ArrayUtil.Concat(ELEMENT_LIST, certificate.AuthorityKeyIdentifier.keyIdentifier);
            byte[] certHashMapEntrySerialized = StorageUtil.readFromStorage(storageKey);
            if (certHashMapEntrySerialized == null)
            {
                certHashMapEntry = new CertificateHashMapEntry();
                certHashMapEntry.CertificateHashList = new List <CertificateHashEntry>();
                //certHashMapEntry.Count = 0;
            }
            else
            {
                certHashMapEntry = (CertificateHashMapEntry)SerializationUtil.Deserialize(certHashMapEntrySerialized);
            }

            CertificateHashEntry newCertHashEntry = new CertificateHashEntry();

            newCertHashEntry.CertificateHash = certificateHash;
            newCertHashEntry.IsCa            = certificate.BasicConstraints.IsCa;
            certHashMapEntry.CertificateHashList.Add(newCertHashEntry);
//            certHashMapEntry.Count += 1;

            certHashMapEntrySerialized = SerializationUtil.Serialize(certHashMapEntry);
            StorageUtil.saveToStorage(storageKey, certHashMapEntrySerialized);
        }
コード例 #4
0
        private static void MarkAllCertificatesAsRevokedForCa(Certificate caCertificate)
        {
            byte[] storageKey = ArrayUtil.Concat(ELEMENT_LIST, caCertificate.SubjectKeyIdentifier.keyIdentifier);
            byte[] certHashMapEntrySerialized = StorageUtil.readFromStorage(storageKey);

            if (certHashMapEntrySerialized == null)
            {
                return;
            }

            CertificateHashMapEntry certHashMapEntry = (CertificateHashMapEntry)SerializationUtil.Deserialize(certHashMapEntrySerialized);

            foreach (var certificateHashEntry in certHashMapEntry.CertificateHashList)
            {
                if (certificateHashEntry.IsCa)
                {
                    MarkSubCaCertificateRevokedInStore(certificateHashEntry.CertificateHash);
                }
                else
                {
                    MarkEndEntityCertificateRevokedInStore(certificateHashEntry.CertificateHash);
                }
            }
        }