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 SafeFreeCredentials AcquireCredentialsHandle(SSPIInterface SecModule, string package, CredentialUse intent, SecureCredential scc)
 {
     if (Logging.On)
     {
         Logging.PrintInfo(Logging.Web, string.Concat(new object[] { "AcquireCredentialsHandle(package = ", package, ", intent  = ", intent, ", scc     = ", scc, ")" }));
     }
     SafeFreeCredentials outCredential = null;
     int error = SecModule.AcquireCredentialsHandle(package, intent, ref scc, out outCredential);
     if (error == 0)
     {
         return outCredential;
     }
     if (Logging.On)
     {
         Logging.PrintError(Logging.Web, SR.GetString("net_log_operation_failed_with_error", new object[] { "AcquireCredentialsHandle()", string.Format(CultureInfo.CurrentCulture, "0X{0:X}", new object[] { error }) }));
     }
     throw new Win32Exception(error);
 }
        public unsafe static int AcquireCredentialsHandle( SecurDll dll,
                                                    string package,
                                                    CredentialUse intent,
                                                    ref SecureCredential authdata,
                                                    out SafeFreeCredentials outCredential
                                                    )
        {

            GlobalLog.Print("SafeFreeCredentials::AcquireCredentialsHandle#2("
                            + dll + ","
                            + package + ", "
                            + intent + ", "
                            + authdata + ")"
                            );

            int errorCode = -1;
            long timeStamp;


            // If there is a certificate, wrap it into an array.
            // Not threadsafe.
            IntPtr copiedPtr = authdata.certContextArray;
            try
            {
                IntPtr certArrayPtr = new IntPtr(&copiedPtr);
                if (copiedPtr != IntPtr.Zero) {
                    authdata.certContextArray = certArrayPtr;
                }

                switch (dll) {
                case SecurDll.SECURITY:
                            outCredential = new SafeFreeCredential_SECURITY();

                            RuntimeHelpers.PrepareConstrainedRegions();
                            try {} finally {

                                errorCode = UnsafeNclNativeMethods.SafeNetHandles_SECURITY.AcquireCredentialsHandleW(
                                                                   null,
                                                                   package,
                                                                   (int)intent,
                                                                   null,
                                                                   ref authdata,
                                                                   null,
                                                                   null,
                                                                   ref outCredential._handle,
                                                                   out timeStamp
                                                                   );
                            }
                            break;

                default:  throw new ArgumentException(SR.GetString(SR.net_invalid_enum, "SecurDll"), "Dll");
                }
            }
            finally
            {
                authdata.certContextArray = copiedPtr;
            }

#if TRAVE
            GlobalLog.Print("Unmanaged::AcquireCredentialsHandle() returns 0x"
                            + errorCode.ToString("x")
                            + ", handle = " + outCredential.ToString()
                            );
#endif

            if (errorCode != 0) {
                outCredential.SetHandleAsInvalid();
            }
            return errorCode;

        }
        public static SafeFreeCredentials AcquireCredentialsHandle(SSPIInterface SecModule, string package, CredentialUse intent, SecureCredential scc)
        {
            if (Logging.On)
            {
                Logging.PrintInfo(Logging.Web, string.Concat(new object[] { "AcquireCredentialsHandle(package = ", package, ", intent  = ", intent, ", scc     = ", scc, ")" }));
            }
            SafeFreeCredentials outCredential = null;
            int error = SecModule.AcquireCredentialsHandle(package, intent, ref scc, out outCredential);

            if (error == 0)
            {
                return(outCredential);
            }
            if (Logging.On)
            {
                Logging.PrintError(Logging.Web, SR.GetString("net_log_operation_failed_with_error", new object[] { "AcquireCredentialsHandle()", string.Format(CultureInfo.CurrentCulture, "0X{0:X}", new object[] { error }) }));
            }
            throw new Win32Exception(error);
        }
示例#5
0
 public int AcquireCredentialsHandle(string moduleName, CredentialUse usage, ref SecureCredential authdata, out SafeFreeCredentials outCredential)
 {
     return(SafeFreeCredentials.AcquireCredentialsHandle(Library, moduleName, usage, ref authdata, out outCredential));
 }
 public int AcquireCredentialsHandle(string moduleName, CredentialUse usage, ref SecureCredential authdata, out SafeFreeCredentials outCredential) {
     return SafeFreeCredentials.AcquireCredentialsHandle(Library, moduleName, usage, ref authdata, out outCredential);
 }
        public static SafeFreeCredentials AcquireCredentialsHandle(SSPIInterface SecModule, string package, CredentialUse intent, SecureCredential scc)
        {
            GlobalLog.Print("SSPIWrapper::AcquireCredentialsHandle#3(): using " + package);

            if (Logging.On)
            {
                Logging.PrintInfo(Logging.Web,
                                  "AcquireCredentialsHandle(" +
                                  "package = " + package + ", " +
                                  "intent  = " + intent + ", " +
                                  "scc     = " + scc + ")");
            }

            SafeFreeCredentials outCredential = null;
            int errorCode = SecModule.AcquireCredentialsHandle(
                package,
                intent,
                ref scc,
                out outCredential
                );

            if (errorCode != 0)
            {
#if TRAVE
                GlobalLog.Print("SSPIWrapper::AcquireCredentialsHandle#3(): error " + SecureChannel.MapSecurityStatus((uint)errorCode));
#endif
                if (Logging.On)
                {
                    Logging.PrintError(Logging.Web, SR.GetString(SR.net_log_operation_failed_with_error, "AcquireCredentialsHandle()", String.Format(CultureInfo.CurrentCulture, "0X{0:X}", errorCode)));
                }
                throw new Win32Exception(errorCode);
            }

#if TRAVE
            GlobalLog.Print("SSPIWrapper::AcquireCredentialsHandle#3(): cred handle = " + outCredential.ToString());
#endif
            return(outCredential);
        }
示例#8
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);
        }