Example #1
0
        public static SafeCredHandle SafeAcquireCredentialsHandle(string package, CredentialUse credentialUse)
        {
            CredHandle credHandle;
            long       num;

            Secur32Dll.AcquireCredentialsHandleA(null, package, (int)credentialUse, null, null, null, null, out credHandle, out num);
            return(new SafeCredHandle(credHandle));
        }
Example #2
0
        public static unsafe void AcquireCredentialsHandle(
            CredentialUse credentialUse,
            SchannelCred authData,
            out SafeCredHandle credential,
            out long expiry)
        {
            CredHandle handle;
            GCHandle   paCredHandle = new GCHandle();

            IntPtr[] paCred = null;

            if (authData.cCreds > 0)
            {
                paCred            = new IntPtr[] { authData.paCreds1 };
                paCredHandle      = GCHandle.Alloc(paCred, GCHandleType.Pinned);
                authData.paCreds1 = paCredHandle.AddrOfPinnedObject();
            }

            try
            {
                int error = Secur32Dll.AcquireCredentialsHandleA(
                    null,
                    Secur32Dll.UNISP_NAME,
                    (int)credentialUse,
                    null,
                    &authData,
                    null,
                    null,
                    out handle,
                    out expiry);

                if (error != 0)
                {
                    throw new SspiException(error, @"AcquireCredentialsHandleA");
                }

                credential = new SafeCredHandle(handle);
            }
            finally
            {
                if (paCredHandle.IsAllocated)
                {
                    paCredHandle.Free();
                }

                if (paCred != null)
                {
                    authData.paCreds1 = paCred[0];
                }
            }
        }
Example #3
0
        public static unsafe SafeCredHandle SafeAcquireCredentialsHandle(string package, CredentialUse credentialUse)
        {
            long       expiry;
            CredHandle handle;

            try
            {
                int error = Secur32Dll.AcquireCredentialsHandleA(
                    null,
                    package,
                    (int)credentialUse,
                    null,
                    null,
                    null,
                    null,
                    out handle,
                    out expiry);

                return(new SafeCredHandle(handle));
            }
            finally
            {
            }
        }
Example #4
0
        public unsafe static void AcquireCredentialsHandle(CredentialUse credentialUse, SchannelCred authData, out SafeCredHandle credential, out long expiry)
        {
            GCHandle gCHandle = default(GCHandle);

            IntPtr[] array = null;
            if (authData.cCreds > 0)
            {
                array = new IntPtr[]
                {
                    authData.paCreds1
                };
                gCHandle          = GCHandle.Alloc(array, GCHandleType.Pinned);
                authData.paCreds1 = gCHandle.AddrOfPinnedObject();
            }
            try
            {
                CredHandle credHandle;
                int        num = Secur32Dll.AcquireCredentialsHandleA(null, "Microsoft Unified Security Protocol Provider", (int)credentialUse, null, (void *)(&authData), null, null, out credHandle, out expiry);
                if (num != 0)
                {
                    throw new SspiException(num, "AcquireCredentialsHandleA");
                }
                credential = new SafeCredHandle(credHandle);
            }
            finally
            {
                if (gCHandle.IsAllocated)
                {
                    gCHandle.Free();
                }
                if (array != null)
                {
                    authData.paCreds1 = array[0];
                }
            }
        }