public int GetSerialization(out SerializationResponse pcpgsr,
                                    out CredentialSerialization pcpcs, out string ppszOptionalStatusText,
                                    out StatusIcon pcpsiOptionalStatusIcon)
        {
            ppszOptionalStatusText  = null;
            pcpsiOptionalStatusIcon = StatusIcon.None;

            var guidAttribute = (GuidAttribute)Provider.GetType().GetCustomAttribute(typeof(GuidAttribute));
            var providerGuid  = default(Guid);

            if (guidAttribute != null)
            {
                providerGuid = new Guid(guidAttribute.Value);
            }

            pcpgsr = Credential.GetSerialization(out var serializationData, ref ppszOptionalStatusText, ref pcpsiOptionalStatusIcon);
            IntPtr serialization = IntPtr.Zero;
            uint   size          = 0;

            if (serializationData != null)
            {
                unsafe
                {
                    size = (uint)serializationData.Length;
                    var logon = (KerberosInteractiveLogon *)Marshal.AllocCoTaskMem((int)size);

                    fixed(byte *data = serializationData)
                    {
                        for (int i = 0; i < serializationData.Length; i++)
                        {
                            *((byte *)logon + i) = data[i];
                        }
                    }

                    serialization = (IntPtr)logon;
                }
            }

            pcpcs = new CredentialSerialization()
            {
                SerializationData     = serialization,
                SerializationSize     = size,
                AuthenticationPackage = Credential.GetAuthenticationPackage(),
                ProviderClassGuid     = providerGuid
            };

            ppszOptionalStatusText  = null;
            pcpsiOptionalStatusIcon = StatusIcon.None;
            return(HRESULT.S_OK);
        }
        public int UpdateRemoteCredential(ref CredentialSerialization pcpcsIn, ref CredentialSerialization pcpcsOut)
        {
            try
            {
                pcpcsOut = UpdateRemoteCredential(ManagedCredentialSerialization.FromNative(pcpcsIn)).ToNative();
            }
            catch (NotImplementedException)
            {
                return(HRESULT.E_NOTIMPL);
            }
            catch
            {
                return(HRESULT.E_FAIL);
            }

            return(HRESULT.S_OK);
        }
Exemplo n.º 3
0
 public int SetSerialization(ref CredentialSerialization pcpcs)
 {
     return(HRESULT.E_NOTIMPL);
 }