public static string IpcfEncryptFile( string inputFile, string templateId, EncryptFlags flags, bool suppressUI, bool offline, bool hasUserConsent, System.Windows.Forms.Form parentForm, string outputDirectory = null) { int hr = 0; IntPtr encryptedFileName = IntPtr.Zero; string outputFileName = null; IpcPromptContext ipcContext = SafeNativeMethods.CreateIpcPromptContext(suppressUI, offline, hasUserConsent, parentForm); IntPtr licenseInfoPtr = Marshal.StringToHGlobalUni(templateId); try { hr = UnsafeFileApiMethods.IpcfEncryptFile( inputFile, licenseInfoPtr, (uint)EncryptLicenseInfoTypes.IPCF_EF_TEMPLATE_ID, (uint)flags, ipcContext, outputDirectory, out encryptedFileName); SafeNativeMethods.ThrowOnErrorCode(hr); outputFileName = Marshal.PtrToStringUni(encryptedFileName); if (null == outputFileName || 0 == outputFileName.Length) { outputFileName = inputFile; } } finally { Marshal.FreeHGlobal(licenseInfoPtr); UnsafeFileApiMethods.IpcFreeMemory(encryptedFileName); } return(outputFileName); }
public static string IpcfEncryptFile( string inputFile, SafeInformationProtectionLicenseHandle licenseHandle, EncryptFlags flags, bool suppressUI, bool offline, bool hasUserConsent, System.Windows.Forms.Form parentForm, string outputDirectory = null) { int hr = 0; IntPtr encryptedFileName = IntPtr.Zero; string outputFileName = null; IpcPromptContext ipcContext = SafeNativeMethods.CreateIpcPromptContext(suppressUI, offline, hasUserConsent, parentForm); try { hr = UnsafeFileApiMethods.IpcfEncryptFile( inputFile, licenseHandle.Value, (uint)EncryptLicenseInfoTypes.IPCF_EF_LICENSE_HANDLE, (uint)flags, ipcContext, outputDirectory, out encryptedFileName); SafeNativeMethods.ThrowOnErrorCode(hr); outputFileName = Marshal.PtrToStringUni(encryptedFileName); if (null == outputFileName || 0 == outputFileName.Length) { outputFileName = inputFile; } } finally { UnsafeFileApiMethods.IpcFreeMemory(encryptedFileName); } return(outputFileName); }
public static string IpcfDecryptFile( string inputFile, DecryptFlags flags, bool suppressUI, bool offline, bool hasUserConsent, System.Windows.Forms.Form parentForm, string outputDirectory = null) { int hr = 0; IntPtr decryptedFileNamePtr = IntPtr.Zero; string decryptedFileName = null; IpcPromptContext ipcContext = SafeNativeMethods.CreateIpcPromptContext(suppressUI, offline, hasUserConsent, parentForm); try { hr = UnsafeFileApiMethods.IpcfDecryptFile( inputFile, (uint)flags, ipcContext, outputDirectory, out decryptedFileNamePtr); SafeNativeMethods.ThrowOnErrorCode(hr); decryptedFileName = Marshal.PtrToStringUni(decryptedFileNamePtr); if (null == decryptedFileName || 0 == decryptedFileName.Length) { decryptedFileName = inputFile; } } finally { UnsafeFileApiMethods.IpcFreeMemory(decryptedFileNamePtr); } return(decryptedFileName); }
public static byte[] IpcfGetSerializedLicenseFromFile(string inputFile) { byte[] license = null; int hr = 0; IntPtr licensePtr = IntPtr.Zero; try { hr = UnsafeFileApiMethods.IpcfGetSerializedLicenseFromFile( inputFile, out licensePtr); SafeNativeMethods.ThrowOnErrorCode(hr); license = SafeNativeMethods.MarshalIpcBufferToManaged(licensePtr); } finally { UnsafeFileApiMethods.IpcFreeMemory(licensePtr); } return(license); }