Exemplo n.º 1
0
        internal IkePreSharedKeyCredential(IKEEXT_CREDENTIAL1 creds)
            : base(creds)
        {
            var key = creds.cred.ReadStruct <IKEEXT_PRESHARED_KEY_AUTHENTICATION1>();

            Key   = key.presharedKey.ToArray();
            Flags = key.flags;
        }
        internal IkeCertificateCredential(IKEEXT_CREDENTIAL1 creds) : base(creds)
        {
            var cred = creds.cred.ReadStruct <IKEEXT_CERTIFICATE_CREDENTIAL1>();

            SubjectName = new X500DistinguishedName(cred.subjectName.ToArray());
            CertHash    = cred.certHash.ToArray();
            Flags       = cred.flags;
            try
            {
                Certificate = new X509Certificate2(cred.certificate.ToArray());
            }
            catch (CryptographicException)
            {
            }
        }
        internal static IkeCredential Create(IKEEXT_CREDENTIAL1 creds)
        {
            if (creds.cred != IntPtr.Zero)
            {
                switch (creds.authenticationMethodType)
                {
                case IkeExtAuthenticationMethodType.PreSharedKey:
                    return(new IkePreSharedKeyCredential(creds));

                case IkeExtAuthenticationMethodType.Certificate:
                case IkeExtAuthenticationMethodType.Ssl:
                    return(new IkeCertificateCredential(creds));

                case IkeExtAuthenticationMethodType.NtlmV2:
                case IkeExtAuthenticationMethodType.Kerberos:
                    return(new IkeNameCredential(creds));

                default:
                    System.Diagnostics.Trace.WriteLine($"Unknown cred type {creds.authenticationMethodType}");
                    break;
                }
            }
            return(new IkeCredential(creds));
        }
Exemplo n.º 4
0
 internal IkeNameCredential(IKEEXT_CREDENTIAL1 creds) : base(creds)
 {
     var cred = creds.cred.ReadStruct<IKEEXT_NAME_CREDENTIAL0>();
     PrincipalName = cred.principalName;
 }
 private protected IkeCredential(IKEEXT_CREDENTIAL1 creds)
 {
     AuthenticationMethodType = creds.authenticationMethodType;
     ImpersonationType        = creds.impersonationType;
 }