You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
4.0 KiB
144 lines
4.0 KiB
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR) |
|
#pragma warning disable |
|
using System; |
|
using System.Text; |
|
|
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Security; |
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.X509.Store; |
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities; |
|
using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Collections; |
|
|
|
namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Pkix |
|
{ |
|
/// <summary> |
|
/// Summary description for PkixBuilderParameters. |
|
/// </summary> |
|
public class PkixBuilderParameters |
|
: PkixParameters |
|
{ |
|
private int maxPathLength = 5; |
|
|
|
private ISet excludedCerts = new HashSet(); |
|
|
|
/** |
|
* Returns an instance of <code>PkixBuilderParameters</code>. |
|
* <p> |
|
* This method can be used to get a copy from other |
|
* <code>PKIXBuilderParameters</code>, <code>PKIXParameters</code>, |
|
* and <code>ExtendedPKIXParameters</code> instances. |
|
* </p> |
|
* |
|
* @param pkixParams The PKIX parameters to create a copy of. |
|
* @return An <code>PkixBuilderParameters</code> instance. |
|
*/ |
|
public static PkixBuilderParameters GetInstance( |
|
PkixParameters pkixParams) |
|
{ |
|
PkixBuilderParameters parameters = new PkixBuilderParameters( |
|
pkixParams.GetTrustAnchors(), |
|
new X509CertStoreSelector(pkixParams.GetTargetCertConstraints())); |
|
parameters.SetParams(pkixParams); |
|
return parameters; |
|
} |
|
|
|
public PkixBuilderParameters( |
|
ISet trustAnchors, |
|
IX509Selector targetConstraints) |
|
: base(trustAnchors) |
|
{ |
|
SetTargetCertConstraints(targetConstraints); |
|
} |
|
|
|
public virtual int MaxPathLength |
|
{ |
|
get { return maxPathLength; } |
|
set |
|
{ |
|
if (value < -1) |
|
{ |
|
throw new InvalidParameterException( |
|
"The maximum path length parameter can not be less than -1."); |
|
} |
|
this.maxPathLength = value; |
|
} |
|
} |
|
|
|
/// <summary> |
|
/// Excluded certificates are not used for building a certification path. |
|
/// </summary> |
|
/// <returns>the excluded certificates.</returns> |
|
public virtual ISet GetExcludedCerts() |
|
{ |
|
return new HashSet(excludedCerts); |
|
} |
|
|
|
/// <summary> |
|
/// Sets the excluded certificates which are not used for building a |
|
/// certification path. If the <code>ISet</code> is <code>null</code> an |
|
/// empty set is assumed. |
|
/// </summary> |
|
/// <remarks> |
|
/// The given set is cloned to protect it against subsequent modifications. |
|
/// </remarks> |
|
/// <param name="excludedCerts">The excluded certificates to set.</param> |
|
public virtual void SetExcludedCerts( |
|
ISet excludedCerts) |
|
{ |
|
if (excludedCerts == null) |
|
{ |
|
this.excludedCerts = new HashSet(); |
|
} |
|
else |
|
{ |
|
this.excludedCerts = new HashSet(excludedCerts); |
|
} |
|
} |
|
|
|
/** |
|
* Can alse handle <code>ExtendedPKIXBuilderParameters</code> and |
|
* <code>PKIXBuilderParameters</code>. |
|
* |
|
* @param params Parameters to set. |
|
* @see org.bouncycastle.x509.ExtendedPKIXParameters#setParams(java.security.cert.PKIXParameters) |
|
*/ |
|
protected override void SetParams( |
|
PkixParameters parameters) |
|
{ |
|
base.SetParams(parameters); |
|
if (parameters is PkixBuilderParameters) |
|
{ |
|
PkixBuilderParameters _params = (PkixBuilderParameters) parameters; |
|
maxPathLength = _params.maxPathLength; |
|
excludedCerts = new HashSet(_params.excludedCerts); |
|
} |
|
} |
|
|
|
/** |
|
* Makes a copy of this <code>PKIXParameters</code> object. Changes to the |
|
* copy will not affect the original and vice versa. |
|
* |
|
* @return a copy of this <code>PKIXParameters</code> object |
|
*/ |
|
public override object Clone() |
|
{ |
|
PkixBuilderParameters parameters = new PkixBuilderParameters( |
|
GetTrustAnchors(), GetTargetCertConstraints()); |
|
parameters.SetParams(this); |
|
return parameters; |
|
} |
|
|
|
public override string ToString() |
|
{ |
|
string nl = BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.NewLine; |
|
StringBuilder s = new StringBuilder(); |
|
s.Append("PkixBuilderParameters [" + nl); |
|
s.Append(base.ToString()); |
|
s.Append(" Maximum Path Length: "); |
|
s.Append(MaxPathLength); |
|
s.Append(nl + "]" + nl); |
|
return s.ToString(); |
|
} |
|
} |
|
} |
|
#pragma warning restore |
|
#endif
|
|
|