// IpcCreateLicenseFromScratch() - http://msdn.microsoft.com/en-us/library/windows/desktop/hh535256(v=vs.85).aspx
        public static SafeInformationProtectionLicenseHandle IpcCreateLicenseFromScratch(TemplateIssuer templateIssuer)
        {
            SafeInformationProtectionLicenseHandle licenseHandle = null;
            int hr = 0;

            IpcTemplateIssuer ipcTemplateIssuer = TemplateIssuerToIpcTemplateIssuer(templateIssuer);
            
            hr = UnsafeNativeMethods.IpcCreateLicenseFromScratch(ipcTemplateIssuer, 
                                                                 0,
                                                                 IntPtr.Zero,
                                                                 out licenseHandle);
            ThrowOnErrorCode(hr);

            return licenseHandle;
        }
 private static IpcTemplateIssuer TemplateIssuerToIpcTemplateIssuer(TemplateIssuer templateIssuer)
 {
     IpcTemplateIssuer ipcTemplateIssuer = new IpcTemplateIssuer();
     ipcTemplateIssuer.connectionInfo = ConnectionInfoToIpcConnectionInfo(templateIssuer.ConnectionInfo);
     ipcTemplateIssuer.wszDisplayName = templateIssuer.DisplayName;
     ipcTemplateIssuer.fAllowFromScratch = templateIssuer.AllowFromScratch;
     return ipcTemplateIssuer;
 }