|  | @@ -47,9 +47,108 @@ namespace MediaBrowser.ServerApplication.Networking
 | 
	
		
			
				|  |  |          /// <returns>System.Int32.</returns>
 | 
	
		
			
				|  |  |          [DllImport("Netapi32", SetLastError = true),
 | 
	
		
			
				|  |  |          SuppressUnmanagedCodeSecurity]
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          public static extern int NetApiBufferFree(
 | 
	
		
			
				|  |  |              IntPtr pBuf);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool FileTimeToSystemTime(
 | 
	
		
			
				|  |  | +            [In] ref long fileTime,
 | 
	
		
			
				|  |  | +            out SystemTime systemTime);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("AdvApi32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CryptAcquireContextW(
 | 
	
		
			
				|  |  | +            out IntPtr providerContext,
 | 
	
		
			
				|  |  | +            [MarshalAs(UnmanagedType.LPWStr)] string container,
 | 
	
		
			
				|  |  | +            [MarshalAs(UnmanagedType.LPWStr)] string provider,
 | 
	
		
			
				|  |  | +            int providerType,
 | 
	
		
			
				|  |  | +            int flags);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("AdvApi32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CryptReleaseContext(
 | 
	
		
			
				|  |  | +            IntPtr providerContext,
 | 
	
		
			
				|  |  | +            int flags);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("AdvApi32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CryptGenKey(
 | 
	
		
			
				|  |  | +            IntPtr providerContext,
 | 
	
		
			
				|  |  | +            int algorithmId,
 | 
	
		
			
				|  |  | +            int flags,
 | 
	
		
			
				|  |  | +            out IntPtr cryptKeyHandle);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("AdvApi32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CryptDestroyKey(
 | 
	
		
			
				|  |  | +            IntPtr cryptKeyHandle);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CertStrToNameW(
 | 
	
		
			
				|  |  | +            int certificateEncodingType,
 | 
	
		
			
				|  |  | +            IntPtr x500,
 | 
	
		
			
				|  |  | +            int strType,
 | 
	
		
			
				|  |  | +            IntPtr reserved,
 | 
	
		
			
				|  |  | +            [MarshalAs(UnmanagedType.LPArray)] [Out] byte[] encoded,
 | 
	
		
			
				|  |  | +            ref int encodedLength,
 | 
	
		
			
				|  |  | +            out IntPtr errorString);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        public static extern IntPtr CertCreateSelfSignCertificate(
 | 
	
		
			
				|  |  | +            IntPtr providerHandle,
 | 
	
		
			
				|  |  | +            [In] ref CryptoApiBlob subjectIssuerBlob,
 | 
	
		
			
				|  |  | +            int flags,
 | 
	
		
			
				|  |  | +            [In] ref CryptKeyProviderInformation keyProviderInformation,
 | 
	
		
			
				|  |  | +            [In] ref CryptAlgorithmIdentifier algorithmIdentifier,
 | 
	
		
			
				|  |  | +            [In] ref SystemTime startTime,
 | 
	
		
			
				|  |  | +            [In] ref SystemTime endTime,
 | 
	
		
			
				|  |  | +            IntPtr extensions);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CertFreeCertificateContext(
 | 
	
		
			
				|  |  | +            IntPtr certificateContext);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        public static extern IntPtr CertOpenStore(
 | 
	
		
			
				|  |  | +            [MarshalAs(UnmanagedType.LPStr)] string storeProvider,
 | 
	
		
			
				|  |  | +            int messageAndCertificateEncodingType,
 | 
	
		
			
				|  |  | +            IntPtr cryptProvHandle,
 | 
	
		
			
				|  |  | +            int flags,
 | 
	
		
			
				|  |  | +            IntPtr parameters);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CertCloseStore(
 | 
	
		
			
				|  |  | +            IntPtr certificateStoreHandle,
 | 
	
		
			
				|  |  | +            int flags);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CertAddCertificateContextToStore(
 | 
	
		
			
				|  |  | +            IntPtr certificateStoreHandle,
 | 
	
		
			
				|  |  | +            IntPtr certificateContext,
 | 
	
		
			
				|  |  | +            int addDisposition,
 | 
	
		
			
				|  |  | +            out IntPtr storeContextPtr);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool CertSetCertificateContextProperty(
 | 
	
		
			
				|  |  | +            IntPtr certificateContext,
 | 
	
		
			
				|  |  | +            int propertyId,
 | 
	
		
			
				|  |  | +            int flags,
 | 
	
		
			
				|  |  | +            [In] ref CryptKeyProviderInformation data);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        [DllImport("Crypt32.dll", SetLastError = true, ExactSpelling = true)]
 | 
	
		
			
				|  |  | +        [return: MarshalAs(UnmanagedType.Bool)]
 | 
	
		
			
				|  |  | +        public static extern bool PFXExportCertStoreEx(
 | 
	
		
			
				|  |  | +            IntPtr certificateStoreHandle,
 | 
	
		
			
				|  |  | +            ref CryptoApiBlob pfxBlob,
 | 
	
		
			
				|  |  | +            IntPtr password,
 | 
	
		
			
				|  |  | +            IntPtr reserved,
 | 
	
		
			
				|  |  | +            int flags);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //create a _SERVER_INFO_100 STRUCTURE
 | 
	
	
		
			
				|  | @@ -69,4 +168,59 @@ namespace MediaBrowser.ServerApplication.Networking
 | 
	
		
			
				|  |  |          [MarshalAs(UnmanagedType.LPWStr)]
 | 
	
		
			
				|  |  |          internal string sv100_name;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [StructLayout(LayoutKind.Sequential)]
 | 
	
		
			
				|  |  | +    public struct SystemTime
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        public short Year;
 | 
	
		
			
				|  |  | +        public short Month;
 | 
	
		
			
				|  |  | +        public short DayOfWeek;
 | 
	
		
			
				|  |  | +        public short Day;
 | 
	
		
			
				|  |  | +        public short Hour;
 | 
	
		
			
				|  |  | +        public short Minute;
 | 
	
		
			
				|  |  | +        public short Second;
 | 
	
		
			
				|  |  | +        public short Milliseconds;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [StructLayout(LayoutKind.Sequential)]
 | 
	
		
			
				|  |  | +    public struct CryptObjIdBlob
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        public uint cbData;
 | 
	
		
			
				|  |  | +        public IntPtr pbData;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [StructLayout(LayoutKind.Sequential)]
 | 
	
		
			
				|  |  | +    public struct CryptAlgorithmIdentifier
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        [MarshalAs(UnmanagedType.LPStr)]
 | 
	
		
			
				|  |  | +        public String pszObjId;
 | 
	
		
			
				|  |  | +        public CryptObjIdBlob Parameters;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [StructLayout(LayoutKind.Sequential)]
 | 
	
		
			
				|  |  | +    public struct CryptoApiBlob
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        public int DataLength;
 | 
	
		
			
				|  |  | +        public IntPtr Data;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        public CryptoApiBlob(int dataLength, IntPtr data)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            this.DataLength = dataLength;
 | 
	
		
			
				|  |  | +            this.Data = data;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    [StructLayout(LayoutKind.Sequential)]
 | 
	
		
			
				|  |  | +    public struct CryptKeyProviderInformation
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        [MarshalAs(UnmanagedType.LPWStr)]
 | 
	
		
			
				|  |  | +        public string ContainerName;
 | 
	
		
			
				|  |  | +        [MarshalAs(UnmanagedType.LPWStr)]
 | 
	
		
			
				|  |  | +        public string ProviderName;
 | 
	
		
			
				|  |  | +        public int ProviderType;
 | 
	
		
			
				|  |  | +        public int Flags;
 | 
	
		
			
				|  |  | +        public int ProviderParameterCount;
 | 
	
		
			
				|  |  | +        public IntPtr ProviderParameters; // PCRYPT_KEY_PROV_PARAM
 | 
	
		
			
				|  |  | +        public int KeySpec;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |