|
@@ -47,9 +47,108 @@ namespace MediaBrowser.ServerApplication.Networking
|
|
/// <returns>System.Int32.</returns>
|
|
/// <returns>System.Int32.</returns>
|
|
[DllImport("Netapi32", SetLastError = true),
|
|
[DllImport("Netapi32", SetLastError = true),
|
|
SuppressUnmanagedCodeSecurity]
|
|
SuppressUnmanagedCodeSecurity]
|
|
-
|
|
|
|
public static extern int NetApiBufferFree(
|
|
public static extern int NetApiBufferFree(
|
|
IntPtr pBuf);
|
|
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
|
|
//create a _SERVER_INFO_100 STRUCTURE
|
|
@@ -69,4 +168,59 @@ namespace MediaBrowser.ServerApplication.Networking
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
[MarshalAs(UnmanagedType.LPWStr)]
|
|
internal string sv100_name;
|
|
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;
|
|
|
|
+ }
|
|
}
|
|
}
|