/
DirectoryConnection.cs
49 lines (39 loc) · 1.61 KB
/
DirectoryConnection.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using System.Globalization;
using System.Net;
using System.Security.Cryptography.X509Certificates;
namespace System.DirectoryServices.Protocols
{
public abstract class DirectoryConnection
{
internal NetworkCredential _directoryCredential;
private readonly X509CertificateCollection _certificatesCollection;
internal TimeSpan _connectionTimeOut = new TimeSpan(0, 0, 30);
internal DirectoryIdentifier _directoryIdentifier;
protected DirectoryConnection() => _certificatesCollection = new X509CertificateCollection();
public virtual DirectoryIdentifier Directory => _directoryIdentifier;
public X509CertificateCollection ClientCertificates => _certificatesCollection;
public virtual TimeSpan Timeout
{
get => _connectionTimeOut;
set
{
if (value < TimeSpan.Zero)
{
throw new ArgumentException(SR.NoNegativeTimeLimit, nameof(value));
}
_connectionTimeOut = value;
}
}
public virtual NetworkCredential Credential
{
set
{
_directoryCredential = (value != null) ? new NetworkCredential(value.UserName, value.Password, value.Domain) : null;
}
}
public abstract DirectoryResponse SendRequest(DirectoryRequest request);
internal NetworkCredential GetCredential() => _directoryCredential;
}
}