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)); }
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; }