示例#1
0
 private static void ReEncryptEdgeSyncCredentials(Server server, X509Certificate2 oldCertificate, X509Certificate2 newCertificate)
 {
     if (server.EdgeSyncCredentials == null || server.EdgeSyncCredentials.Count == 0)
     {
         return;
     }
     if (oldCertificate == null)
     {
         throw new InvalidOperationException(Strings.InternalTransportCertificateCorruptedInADOnHub);
     }
     if (TlsCertificateInfo.IsCNGProvider(newCertificate))
     {
         throw new InvalidOperationException(Strings.InternalTransportCertificateMustBeCAPICertificate(newCertificate.Thumbprint));
     }
     oldCertificate = ExchangeCertificate.GetCertificateFromStore(StoreName.My, oldCertificate.Thumbprint);
     if (oldCertificate == null)
     {
         throw new InvalidOperationException(Strings.InternalTransportCertificateCorruptedInADOnHub);
     }
     EdgeSyncCredential[] array = new EdgeSyncCredential[server.EdgeSyncCredentials.Count];
     using (RSACryptoServiceProvider rsacryptoServiceProvider = (RSACryptoServiceProvider)oldCertificate.PrivateKey)
     {
         for (int i = 0; i < server.EdgeSyncCredentials.Count; i++)
         {
             array[i] = EdgeSyncCredential.DeserializeEdgeSyncCredential(server.EdgeSyncCredentials[i]);
             try
             {
                 array[i].EncryptedESRAPassword = rsacryptoServiceProvider.Decrypt(array[i].EncryptedESRAPassword, false);
             }
             catch (CryptographicException)
             {
                 throw new InvalidOperationException(Strings.InternalTransportCertificateCorruptedInADOnHub);
             }
         }
     }
     using (RSACryptoServiceProvider rsacryptoServiceProvider2 = newCertificate.PublicKey.Key as RSACryptoServiceProvider)
     {
         if (rsacryptoServiceProvider2 != null)
         {
             for (int j = 0; j < array.Length; j++)
             {
                 if (array[j].EncryptedESRAPassword != null)
                 {
                     array[j].EncryptedESRAPassword = rsacryptoServiceProvider2.Encrypt(array[j].EncryptedESRAPassword, false);
                     server.EdgeSyncCredentials[j]  = EdgeSyncCredential.SerializeEdgeSyncCredential(array[j]);
                 }
             }
         }
     }
 }
示例#2
0
        internal static ExchangeCertificate GetCertificateFromStore(StoreName storeName, string thumbprint)
        {
            X509Store store = new X509Store(storeName, StoreLocation.LocalMachine);

            return(ExchangeCertificate.GetCertificateFromStore(store, thumbprint));
        }