0

我有这门课

SAMLConfigurationValidator(): AbstractValidator<SAMLConfiguration>
{
  public SAMLConfigurationValidator()
  {
       //some rules....

      //My desired Code

      RuleFor(x => x.Certificate)
              .IsValid().WithMessage("Not a valid certificate");


  }

}

本质上,这需要一个字符串(x.Certificate),创建一个 X509Certificate2 的实例,然后使用 .Verify() 或 .ChainPolicy 方法来确保用户输入的字符串证书是有效的证书。

我对加密还很陌生,我搜索的大多数案例或示例似乎都在做更多的用例验证。在这里,我只想检查“用户”输入的证书是否为有效证书。

解决方案:

public class ValidateCertificate 
  {
    public ValidateCertificate() { }


    static X509Certificate2 GenerateCertificate(string cert)
    {
      try
      {
        byte[] rawData = Convert.FromBase64String(cert);
        return new X509Certificate2(rawData);
      }
      catch 
      {
        return null;
      }

    }

    public bool Validate(string certificate)
    {
      var cert = GenerateCertificate(certificate);
      if (cert != null)
        return cert.Verify();
      return false;
    }
  }

你可以打电话

RuleFor(x => validateCertificate.Validate(x.Certificate))
        .Equal(true)
        .WithMessage("Not a valid Certificate.")
        .WithName("Certificate");
4

1 回答 1

0

我已经回答了这个解决方案,并在我原来的问题中标记了它。事实证明,X509Certificate2 有一个内置的 Verify 可以方便地进行验证。

于 2013-06-28T14:15:41.433 回答