本文整理汇总了C#中IX509Selector类的典型用法代码示例。如果您正苦于以下问题:C# IX509Selector类的具体用法?C# IX509Selector怎么用?C# IX509Selector使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IX509Selector类属于命名空间,在下文中一共展示了IX509Selector类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PkixBuilderParameters
public PkixBuilderParameters(
ISet trustAnchors,
IX509Selector targetConstraints)
: base(trustAnchors)
{
SetTargetCertConstraints(targetConstraints);
}
示例2: GetPrivateKey
/// <summary>
/// Gets the private key based on the provided selector.
/// </summary>
/// <returns>The private key on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the private key.</param>
protected override AsymmetricKeyParameter GetPrivateKey (IX509Selector selector)
{
foreach (var signer in keychain.GetAllCmsSigners ()) {
if (selector.Match (signer.Certificate))
return signer.PrivateKey;
}
return null;
}
示例3: GetCertificate
/// <summary>
/// Gets the X.509 certificate based on the selector.
/// </summary>
/// <returns>The certificate on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the certificate.</param>
protected override X509Certificate GetCertificate (IX509Selector selector)
{
foreach (var certificate in keychain.GetCertificates ((CssmKeyUse) 0)) {
if (selector.Match (certificate))
return certificate;
}
return null;
}
示例4: GetCertificate
/// <summary>
/// Gets the X.509 certificate based on the selector.
/// </summary>
/// <returns>The certificate on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the certificate.</param>
protected override X509Certificate GetCertificate (IX509Selector selector)
{
if (selector == null && certificates.Count > 0)
return certificates[0];
foreach (var certificate in certificates) {
if (selector.Match (certificate))
return certificate;
}
return null;
}
示例5: GetPrivateKey
/// <summary>
/// Gets the private key based on the provided selector.
/// </summary>
/// <returns>The private key on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the private key.</param>
protected override AsymmetricKeyParameter GetPrivateKey (IX509Selector selector)
{
foreach (var certificate in certificates) {
AsymmetricKeyParameter key;
if (!keys.TryGetValue (certificate, out key))
continue;
if (selector != null && !selector.Match (certificate))
continue;
return key;
}
return null;
}
示例6: GetMatches
/**
* Return the matches in the collection for the passed in selector.
*
* @param selector the selector to match against.
* @return a possibly empty collection of matching objects.
*/
public ICollection GetMatches(
IX509Selector selector)
{
if (selector == null)
{
return new ArrayList(_local);
}
IList result = new ArrayList();
foreach (object obj in _local)
{
if (selector.Match(obj))
result.Add(obj);
}
return result;
}
示例7: FindPrivateKeys
/// <summary>
/// Finds the private keys matching the specified selector.
/// </summary>
/// <remarks>
/// Searches the database for certificate records matching the selector, returning the
/// private keys for each matching record.
/// </remarks>
/// <returns>The matching certificates.</returns>
/// <param name="selector">The match selector or <c>null</c> to return all private keys.</param>
public IEnumerable<AsymmetricKeyParameter> FindPrivateKeys (IX509Selector selector)
{
using (var command = GetSelectCommand (selector, false, true, PrivateKeyFields)) {
var reader = command.ExecuteReader ();
try {
var parser = new X509CertificateParser ();
var buffer = new byte[4096];
while (reader.Read ()) {
var record = LoadCertificateRecord (reader, parser, ref buffer);
if (selector == null || selector.Match (record.Certificate))
yield return record.PrivateKey;
}
} finally {
reader.Close ();
}
}
yield break;
}
示例8: GetSelectCommand
/// <summary>
/// Gets the database command to select certificate records matching the specified selector.
/// </summary>
/// <remarks>
/// Gets the database command to select certificate records matching the specified selector.
/// </remarks>
/// <returns>The database command.</returns>
/// <param name="selector">Selector.</param>
/// <param name="trustedOnly"><c>true</c> if only trusted certificates should be matched.</param>
/// <param name="requirePrivateKey"><c>true</c> if the certificate must have a private key.</param>
/// <param name="fields">The fields to return.</param>
protected abstract IDbCommand GetSelectCommand (IX509Selector selector, bool trustedOnly, bool requirePrivateKey, X509CertificateRecordFields fields);
示例9: GetPrivateKey
/// <summary>
/// Gets the private key based on the provided selector.
/// </summary>
/// <remarks>
/// Gets the private key based on the provided selector.
/// </remarks>
/// <returns>The private key on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the private key.</param>
protected override AsymmetricKeyParameter GetPrivateKey (IX509Selector selector)
{
var store = new X509Store (StoreName.My, StoreLocation);
store.Open (OpenFlags.ReadOnly);
try {
foreach (var certificate in store.Certificates) {
if (!certificate.HasPrivateKey)
continue;
var cert = DotNetUtilities.FromX509Certificate (certificate);
if (selector == null || selector.Match (cert)) {
var pair = DotNetUtilities.GetKeyPair (certificate.PrivateKey);
return pair.Private;
}
}
} finally {
store.Close ();
}
return null;
}
示例10: GetCertificate
/// <summary>
/// Gets the X.509 certificate based on the selector.
/// </summary>
/// <remarks>
/// Gets the X.509 certificate based on the selector.
/// </remarks>
/// <returns>The certificate on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the certificate.</param>
protected override Org.BouncyCastle.X509.X509Certificate GetCertificate (IX509Selector selector)
{
var storeNames = new [] { StoreName.My, StoreName.AddressBook, StoreName.TrustedPeople, StoreName.Root };
foreach (var storeName in storeNames) {
var store = new X509Store (storeName, StoreLocation);
store.Open (OpenFlags.ReadOnly);
try {
foreach (var certificate in store.Certificates) {
var cert = DotNetUtilities.FromX509Certificate (certificate);
if (selector == null || selector.Match (cert))
return cert;
}
} finally {
store.Close ();
}
}
return null;
}
示例11: GetSelectCommand
/// <summary>
/// Gets the database command to select the certificate records for the specified mailbox.
/// </summary>
/// <remarks>
/// Gets the database command to select the certificate records for the specified mailbox.
/// </remarks>
/// <returns>The database command.</returns>
/// <param name="selector">Selector.</param>
/// <param name="trustedOnly">If set to <c>true</c> trusted only.</param>
/// <param name="requirePrivateKey">true</param>
/// <param name="fields">The fields to return.</param>
protected override DbCommand GetSelectCommand (IX509Selector selector, bool trustedOnly, bool requirePrivateKey, X509CertificateRecordFields fields)
{
var query = "SELECT " + string.Join (", ", GetColumnNames (fields)) + " FROM CERTIFICATES";
var match = selector as X509CertStoreSelector;
var command = connection.CreateCommand ();
var constraints = " WHERE ";
if (trustedOnly) {
command.AddParameterWithValue ("@TRUSTED", true);
constraints += "TRUSTED = @TRUSTED";
}
if (match != null) {
if (match.BasicConstraints != -1) {
if (command.Parameters.Count > 0)
constraints += " AND ";
command.AddParameterWithValue ("@BASICCONSTRAINTS", match.BasicConstraints);
constraints += "BASICCONSTRAINTS = @BASICCONSTRAINTS";
}
if (match.Issuer != null) {
if (command.Parameters.Count > 0)
constraints += " AND ";
command.AddParameterWithValue ("@ISSUERNAME", match.Issuer.ToString ());
constraints += "ISSUERNAME = @ISSUERNAME";
}
if (match.SerialNumber != null) {
if (command.Parameters.Count > 0)
constraints += " AND ";
command.AddParameterWithValue ("@SERIALNUMBER", match.SerialNumber.ToString ());
constraints += "SERIALNUMBER = @SERIALNUMBER";
}
if (match.KeyUsage != null) {
var flags = X509CertificateExtensions.GetKeyUsageFlags (match.KeyUsage);
if (flags != X509KeyUsageFlags.None) {
if (command.Parameters.Count > 0)
constraints += " AND ";
command.AddParameterWithValue ("@FLAGS", (int) flags);
constraints += "(KEYUSAGE & @FLAGS) != 0";
}
}
}
if (requirePrivateKey) {
if (command.Parameters.Count > 0)
constraints += " AND ";
constraints += "PRIVATEKEY IS NOT NULL";
} else if (command.Parameters.Count == 0) {
constraints = string.Empty;
}
command.CommandText = query + constraints;
command.CommandType = CommandType.Text;
return command;
}
示例12: GetCertificate
/// <summary>
/// Gets the X.509 certificate matching the specified selector.
/// </summary>
/// <remarks>
/// Gets the first certificate that matches the specified selector.
/// </remarks>
/// <returns>The certificate on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the certificate.</param>
protected override X509Certificate GetCertificate (IX509Selector selector)
{
return dbase.FindCertificates (selector).FirstOrDefault ();
}
示例13: GetMatches
public ICollection GetMatches(IX509Selector selector)
{
if (selector == null)
{
return win;
}
IList result = new ArrayList();
for (int i = 0; i < win.Count; i++)
{
if (selector.Match(bc[i]))
result.Add(win[i]);
}
return result;
}
示例14: GetCertificate
/// <summary>
/// Gets the X.509 certificate based on the selector.
/// </summary>
/// <returns>The certificate on success; otherwise <c>null</c>.</returns>
/// <param name="selector">The search criteria for the certificate.</param>
protected abstract X509Certificate GetCertificate(IX509Selector selector);
示例15: SetTargetConstraints
/**
* Sets the required constraints on the target certificate or attribute
* certificate. The constraints are specified as an instance of
* <code>IX509Selector</code>. If <code>null</code>, no constraints are
* defined.
* <p>
* The target certificate in a PKIX path may be a certificate or an
* attribute certificate.
* </p><p>
* Note that the <code>IX509Selector</code> specified is cloned to protect
* against subsequent modifications.
* </p>
*
* @param selector a <code>IX509Selector</code> specifying the constraints on
* the target certificate or attribute certificate (or
* <code>null</code>)
* @see #getTargetConstraints
* @see X509CertStoreSelector
* @see X509AttributeCertStoreSelector
*/
public virtual void SetTargetConstraints(IX509Selector selector)
{
if (selector != null)
{
this.selector = (IX509Selector) selector.Clone();
}
else
{
this.selector = null;
}
}