Exemplo n.º 1
0
        public static unsafe int AcquireCredentialsHandle(SecurDll dll, string package, CredentialUse intent, ref SecureCredential authdata, out SafeFreeCredentials outCredential)
        {
            int    num = -1;
            IntPtr certContextArray = authdata.certContextArray;

            try
            {
                long   num2;
                IntPtr ptr2 = new IntPtr((void *)&certContextArray);
                if (certContextArray != IntPtr.Zero)
                {
                    authdata.certContextArray = ptr2;
                }
                switch (dll)
                {
                case SecurDll.SECURITY:
                    outCredential = new SafeFreeCredential_SECURITY();
                    RuntimeHelpers.PrepareConstrainedRegions();
                    try
                    {
                        goto Label_00C5;
                    }
                    finally
                    {
                        num = UnsafeNclNativeMethods.SafeNetHandles_SECURITY.AcquireCredentialsHandleW(null, package, (int)intent, null, ref authdata, null, null, ref outCredential._handle, out num2);
                    }
                    break;

                case SecurDll.SCHANNEL:
                    break;

                default:
                    goto Label_0093;
                }
                outCredential = new SafeFreeCredential_SCHANNEL();
                RuntimeHelpers.PrepareConstrainedRegions();
                try
                {
                    goto Label_00C5;
                }
                finally
                {
                    num = UnsafeNclNativeMethods.SafeNetHandles_SCHANNEL.AcquireCredentialsHandleA(null, package, (int)intent, null, ref authdata, null, null, ref outCredential._handle, out num2);
                }
                Label_0093 :;
                throw new ArgumentException(SR.GetString("net_invalid_enum", new object[] { "SecurDll" }), "Dll");
            }
            finally
            {
                authdata.certContextArray = certContextArray;
            }
Label_00C5:
            if (num != 0)
            {
                outCredential.SetHandleAsInvalid();
            }
            return(num);
        }
        public static unsafe int AcquireCredentialsHandle(SecurDll dll, string package, CredentialUse intent, ref SecureCredential authdata, out SafeFreeCredentials outCredential)
        {
            int num = -1;
            IntPtr certContextArray = authdata.certContextArray;
            try
            {
                long num2;
                IntPtr ptr2 = new IntPtr((void*) &certContextArray);
                if (certContextArray != IntPtr.Zero)
                {
                    authdata.certContextArray = ptr2;
                }
                switch (dll)
                {
                    case SecurDll.SECURITY:
                        outCredential = new SafeFreeCredential_SECURITY();
                        RuntimeHelpers.PrepareConstrainedRegions();
                        try
                        {
                            goto Label_00C5;
                        }
                        finally
                        {
                            num = UnsafeNclNativeMethods.SafeNetHandles_SECURITY.AcquireCredentialsHandleW(null, package, (int) intent, null, ref authdata, null, null, ref outCredential._handle, out num2);
                        }
                        break;

                    case SecurDll.SCHANNEL:
                        break;

                    default:
                        goto Label_0093;
                }
                outCredential = new SafeFreeCredential_SCHANNEL();
                RuntimeHelpers.PrepareConstrainedRegions();
                try
                {
                    goto Label_00C5;
                }
                finally
                {
                    num = UnsafeNclNativeMethods.SafeNetHandles_SCHANNEL.AcquireCredentialsHandleA(null, package, (int) intent, null, ref authdata, null, null, ref outCredential._handle, out num2);
                }
            Label_0093:;
                throw new ArgumentException(SR.GetString("net_invalid_enum", new object[] { "SecurDll" }), "Dll");
            }
            finally
            {
                authdata.certContextArray = certContextArray;
            }
        Label_00C5:
            if (num != 0)
            {
                outCredential.SetHandleAsInvalid();
            }
            return num;
        }