Esempio n. 1
0
 public static string Encrypt(Form1.DPAPI.KeyType keyType, string plainText, string entropy, string description)
 {
     if (plainText == null)
     {
         plainText = string.Empty;
     }
     if (entropy == null)
     {
         entropy = string.Empty;
     }
     return(Convert.ToBase64String(Form1.DPAPI.Encrypt(keyType, Encoding.UTF8.GetBytes(plainText), Encoding.UTF8.GetBytes(entropy), description)));
 }
Esempio n. 2
0
 public static byte[] Encrypt(Form1.DPAPI.KeyType keyType, byte[] plainTextBytes, byte[] entropyBytes, string description)
 {
     if (plainTextBytes == null)
     {
         plainTextBytes = new byte[0];
     }
     if (entropyBytes == null)
     {
         entropyBytes = new byte[0];
     }
     if (description == null)
     {
         description = string.Empty;
     }
     Form1.DPAPI.DATA_BLOB dataBlob1   = new Form1.DPAPI.DATA_BLOB();
     Form1.DPAPI.DATA_BLOB pCipherText = new Form1.DPAPI.DATA_BLOB();
     Form1.DPAPI.DATA_BLOB dataBlob2   = new Form1.DPAPI.DATA_BLOB();
     Form1.DPAPI.CRYPTPROTECT_PROMPTSTRUCT cryptprotectPromptstruct = new Form1.DPAPI.CRYPTPROTECT_PROMPTSTRUCT();
     Form1.DPAPI.InitPrompt(ref cryptprotectPromptstruct);
     try
     {
         try
         {
             Form1.DPAPI.InitBLOB(plainTextBytes, ref dataBlob1);
         }
         catch (Exception ex)
         {
             throw new Exception("Cannot initialize plaintext BLOB.", ex);
         }
         try
         {
             Form1.DPAPI.InitBLOB(entropyBytes, ref dataBlob2);
         }
         catch (Exception ex)
         {
             throw new Exception("Cannot initialize entropy BLOB.", ex);
         }
         int dwFlags = 1;
         if (keyType == Form1.DPAPI.KeyType.MachineKey)
         {
             dwFlags |= 4;
         }
         if (!Form1.DPAPI.CryptProtectData(ref dataBlob1, description, ref dataBlob2, IntPtr.Zero, ref cryptprotectPromptstruct, dwFlags, ref pCipherText))
         {
             throw new Exception("CryptProtectData failed.", (Exception) new Win32Exception(Marshal.GetLastWin32Error()));
         }
         byte[] destination = new byte[pCipherText.cbData];
         Marshal.Copy(pCipherText.pbData, destination, 0, pCipherText.cbData);
         return(destination);
     }
     catch (Exception ex)
     {
         throw new Exception("DPAPI was unable to encrypt data.", ex);
     }
     finally
     {
         if (dataBlob1.pbData != IntPtr.Zero)
         {
             Marshal.FreeHGlobal(dataBlob1.pbData);
         }
         if (pCipherText.pbData != IntPtr.Zero)
         {
             Marshal.FreeHGlobal(pCipherText.pbData);
         }
         if (dataBlob2.pbData != IntPtr.Zero)
         {
             Marshal.FreeHGlobal(dataBlob2.pbData);
         }
     }
 }
Esempio n. 3
0
 public static string Encrypt(Form1.DPAPI.KeyType keyType, string plainText, string entropy)
 {
     return(Form1.DPAPI.Encrypt(keyType, plainText, entropy, string.Empty));
 }