Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FindOidInfo() [5/5]

static CRYPT_OID_INFO Interop.Crypt32.FindOidInfo ( CryptOidInfoKeyType keyType,
string key,
OidGroup group,
bool fallBackToAllGroups )
inlinestaticpackage

Definition at line 318 of file Interop.cs.

319 {
320 IntPtr intPtr = IntPtr.Zero;
321 try
322 {
323 intPtr = keyType switch
324 {
325 CryptOidInfoKeyType.CRYPT_OID_INFO_OID_KEY => Marshal.StringToCoTaskMemAnsi(key),
326 CryptOidInfoKeyType.CRYPT_OID_INFO_NAME_KEY => Marshal.StringToCoTaskMemUni(key),
327 _ => throw new NotSupportedException(),
328 };
330 {
331 OidGroup group2 = group | (OidGroup)(-2147483648);
332 IntPtr intPtr2 = CryptFindOIDInfo(keyType, intPtr, group2);
333 if (intPtr2 != IntPtr.Zero)
334 {
335 return Marshal.PtrToStructure<CRYPT_OID_INFO>(intPtr2);
336 }
337 }
338 IntPtr intPtr3 = CryptFindOIDInfo(keyType, intPtr, group);
339 if (intPtr3 != IntPtr.Zero)
340 {
341 return Marshal.PtrToStructure<CRYPT_OID_INFO>(intPtr3);
342 }
343 if (fallBackToAllGroups && group != 0)
344 {
345 IntPtr intPtr4 = CryptFindOIDInfo(keyType, intPtr, OidGroup.All);
346 if (intPtr4 != IntPtr.Zero)
347 {
348 return Marshal.PtrToStructure<CRYPT_OID_INFO>(intPtr4);
349 }
350 }
351 CRYPT_OID_INFO result = default(CRYPT_OID_INFO);
352 result.AlgId = -1;
353 return result;
354 }
355 finally
356 {
357 if (intPtr != IntPtr.Zero)
358 {
359 Marshal.FreeCoTaskMem(intPtr);
360 }
361 }
362 }
static IntPtr CryptFindOIDInfo(CryptOidInfoKeyType dwKeyType, IntPtr pvKey, OidGroup group)
static bool OidGroupWillNotUseActiveDirectory(OidGroup group)
Definition Interop.cs:900
static unsafe IntPtr StringToCoTaskMemUni(string? s)
Definition Marshal.cs:1327
static void FreeCoTaskMem(IntPtr ptr)
Definition Marshal.cs:1712
static ? object PtrToStructure(IntPtr ptr, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type structureType)
Definition Marshal.cs:1164
static unsafe IntPtr StringToCoTaskMemAnsi(string? s)
Definition Marshal.cs:1362
static readonly IntPtr Zero
Definition IntPtr.cs:18

References Interop.Crypt32.CryptFindOIDInfo(), System.Runtime.InteropServices.Marshal.FreeCoTaskMem(), System.key, Interop.Crypt32.OidGroupWillNotUseActiveDirectory(), System.Runtime.InteropServices.Marshal.PtrToStructure(), System.Runtime.InteropServices.Marshal.StringToCoTaskMemAnsi(), System.Runtime.InteropServices.Marshal.StringToCoTaskMemUni(), and System.IntPtr.Zero.