internal static CAPIBase.CRYPT_OID_INFO CryptFindOIDInfo([In] uint dwKeyType, [In] SafeLocalAllocHandle pvKey, [In] System.Security.Cryptography.OidGroup dwGroupId)
 {
     if (pvKey == null)
     {
         throw new ArgumentNullException("pvKey");
     }
     if (pvKey.IsInvalid)
     {
         throw new CryptographicException(SR.GetString("Cryptography_InvalidHandle"), "pvKey");
     }
     CAPIBase.CRYPT_OID_INFO crypt_oid_info = new CAPIBase.CRYPT_OID_INFO(Marshal.SizeOf(typeof(CAPIBase.CRYPT_OID_INFO)));
     IntPtr ptr = CAPISafe.CryptFindOIDInfo(dwKeyType, pvKey, dwGroupId);
     if (ptr != IntPtr.Zero)
     {
         crypt_oid_info = (CAPIBase.CRYPT_OID_INFO) Marshal.PtrToStructure(ptr, typeof(CAPIBase.CRYPT_OID_INFO));
     }
     return crypt_oid_info;
 }
 internal static CAPIBase.CRYPT_OID_INFO CryptFindOIDInfo([In] uint dwKeyType, [In] IntPtr pvKey, [In] System.Security.Cryptography.OidGroup dwGroupId)
 {
     if (pvKey == IntPtr.Zero)
     {
         throw new ArgumentNullException("pvKey");
     }
     CAPIBase.CRYPT_OID_INFO crypt_oid_info = new CAPIBase.CRYPT_OID_INFO(Marshal.SizeOf(typeof(CAPIBase.CRYPT_OID_INFO)));
     IntPtr ptr = CAPISafe.CryptFindOIDInfo(dwKeyType, pvKey, dwGroupId);
     if (ptr != IntPtr.Zero)
     {
         crypt_oid_info = (CAPIBase.CRYPT_OID_INFO) Marshal.PtrToStructure(ptr, typeof(CAPIBase.CRYPT_OID_INFO));
     }
     return crypt_oid_info;
 }