private ExportKeyList GetDecryptedFileKeys(EncryptedExportKeyList export) { try { X509Certificate2 certificate = KeyManagerHelper.GetInternalCertificate(); using (RSACryptoServiceProvider provider = (RSACryptoServiceProvider)certificate.PrivateKey) { byte[] key = EncryptionHelper.RsaDecrypt(Convert.FromBase64String(export.Key), provider); byte[] iv = EncryptionHelper.RsaDecrypt(Convert.FromBase64String(export.IV), provider); byte[] exportKeysData = EncryptionHelper.AesDecrypt(Convert.FromBase64String(export.ProductKeys), key, iv); return Constants.DefaultEncoding.GetString(exportKeysData).FromXml<ExportKeyList>(); } } catch (CryptographicException ex) { ExceptionHandler.HandleException(ex); throw new DisException("Exception_GetprivateKeyError"); } }
public static EncryptedExportKeyList EncryptExportFile(string productKeysXml) { X509Certificate2 certificate = GetInternalCertificate(); byte[] productKeysData = Constants.DefaultEncoding.GetBytes(productKeysXml); byte[] key; byte[] iv; byte[] encryptedData = EncryptionHelper.AesEncrypt(productKeysData, out key, out iv); using (RSACryptoServiceProvider provider = (RSACryptoServiceProvider)certificate.PublicKey.Key) { EncryptedExportKeyList export = new EncryptedExportKeyList() { Key = Convert.ToBase64String(EncryptionHelper.RsaEncrypt(key, provider)), IV = Convert.ToBase64String(EncryptionHelper.RsaEncrypt(iv, provider)), ProductKeys = Convert.ToBase64String(encryptedData) }; return export; } }