Package br.net.woodstock.rockframework.security.cert

Examples of br.net.woodstock.rockframework.security.cert.ValidationError


  @Override
  public ValidationError[] validate(final Certificate[] chain) {
    Assert.notEmpty(chain, "chain");
    if (chain.length < 2) {
      return new ValidationError[] { new ValidationError(HierarchyCertificateValidator.VALIDATOR_NAME, "Certificate chain must be greater than 1(certificate and issuer certificate") };
    }
    List<ValidationError> list = new ArrayList<ValidationError>();
    for (int i = 0; i < (chain.length - 1); i++) {
      X509Certificate certificate = (X509Certificate) chain[i];
      X509Certificate issuer = (X509Certificate) chain[i + 1];

      try {
        certificate.verify(issuer.getPublicKey());

        int pathLen = issuer.getBasicConstraints();

        if (pathLen == -1) {
          list.add(new ValidationError(HierarchyCertificateValidator.VALIDATOR_NAME, "Certificate issuer '" + BouncyCastleProviderHelper.toString(issuer.getSubjectX500Principal()) + "' is not a CA"));
        }

        boolean[] keyUsage = issuer.getKeyUsage();
        boolean keyCertSign = keyUsage[5];

        if (!keyCertSign) {
          list.add(new ValidationError(HierarchyCertificateValidator.VALIDATOR_NAME, "Certificate issuer '" + BouncyCastleProviderHelper.toString(issuer.getSubjectX500Principal()) + "' dont have 'keyCertSign' in key usage"));
        }
      } catch (SignatureException e) {
        list.add(new ValidationError(HierarchyCertificateValidator.VALIDATOR_NAME, "Certificate '" + BouncyCastleProviderHelper.toString(certificate.getSubjectX500Principal()) + "' not signed by '" + BouncyCastleProviderHelper.toString(issuer.getSubjectX500Principal()) + "'"));
      } catch (Exception e) {
        throw new CertificateException(e);
      }
    }

    try {
      if (Conditions.isNotEmpty(this.certificates)) {
        boolean requiredOk = false;
        outer: for (int i = 1; i < chain.length; i++) {
          X509Certificate issuer = (X509Certificate) chain[i];
          for (Certificate required : this.certificates) {
            X509Certificate x509Required = (X509Certificate) required;
            if (Arrays.equals(issuer.getEncoded(), x509Required.getEncoded())) {
              RockFrameworkLogger.getLogger().info("Matches " + BouncyCastleProviderHelper.toString(x509Required.getSubjectX500Principal()));
              requiredOk = true;
              break outer;
            }
          }
        }

        if (!requiredOk) {
          list.add(new ValidationError(HierarchyCertificateValidator.VALIDATOR_NAME, "Certificate chain is invalid, a required certificate could not be found"));
        }
      }
    } catch (CertificateEncodingException e) {
      throw new CertificateException(e);
    }
View Full Code Here


      x509Certificate.checkValidity(current);

      return new ValidationError[0];
    } catch (CertificateExpiredException e) {
      return new ValidationError[] { new ValidationError(DateCertificateValidator.VALIDATOR_NAME, "Certificate expired") };
    } catch (CertificateNotYetValidException e) {
      return new ValidationError[] { new ValidationError(DateCertificateValidator.VALIDATOR_NAME, "Certificate not yet valid") };
    } catch (Exception e) {
      throw new CertificateException(e);
    }
  }
View Full Code Here

  @Override
  public ValidationError[] validate(final Certificate[] chain) {
    Assert.notEmpty(chain, "chain");
    if (chain.length < 2) {
      return new ValidationError[] { new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "Certificate chain must be greater than 1(certificate and issuer certificate") };
    }
    try {
      X509Certificate x509Certificate = (X509Certificate) chain[0];
      X509Certificate x509Issuer = (X509Certificate) chain[1];
      URL url = null;

      if (this.url == null) {
        URL[] urls = OCSPCertificateValidator.getOCSPUrl(x509Certificate);
        if (Conditions.isNotEmpty(urls)) {
          url = urls[0];
        }
      } else {
        url = this.url;
      }

      if (url == null) {
        return new ValidationError[] { new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "No url found for validation") };
      }

      OCSPReq req = this.buildRequest(x509Certificate, x509Issuer);
      OCSPResp resp = this.sendRequest(req, url);
      if (resp.getStatus() != OCSPResponseStatus.SUCCESSFUL) {
        return new ValidationError[] { new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "Response invalid") };
      }

      Object responseObject = resp.getResponseObject();

      if (responseObject instanceof BasicOCSPResp) {
        BasicOCSPResp basicOCSPResp = (BasicOCSPResp) responseObject;
        SingleResp[] singleResps = basicOCSPResp.getResponses();
        List<ValidationError> errors = new ArrayList<ValidationError>();
        for (SingleResp singleResp : singleResps) {
          CertificateStatus status = singleResp.getCertStatus();
          if (status != null) {
            RevokeReason revokeReason = null;
            if (status instanceof RevokedStatus) {
              RevokedStatus revokedStatus = (RevokedStatus) status;
              revokeReason = RevokeReason.getByCode(revokedStatus.getRevocationReason());
            }

            if (revokeReason != null) {
              errors.add(new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "Certificate revoked(" + revokeReason.name() + ")"));
            } else {
              errors.add(new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "Certificate revoked(Unknow)"));
            }
          }
        }

        return Collections.toArray(errors, ValidationError.class);
View Full Code Here

      } else {
        url = this.url;
      }

      if (url == null) {
        return new ValidationError[] { new ValidationError(CRLCertificateValidator.VALIDATOR_NAME, "No url found for validation") };
      }

      X509CRL x509crl = this.getCRLFromURL(url);
      if (x509crl.isRevoked(x509Certificate)) {
        return new ValidationError[] { new ValidationError(CRLCertificateValidator.VALIDATOR_NAME, "Certificate revoked") };
      }

      if (x509crl.getRevokedCertificate(x509Certificate.getSerialNumber()) != null) {
        return new ValidationError[] { new ValidationError(CRLCertificateValidator.VALIDATOR_NAME, "Certificate revoked") };
      }

      return new ValidationError[0];
    } catch (Exception e) {
      throw new CertificateException(e);
View Full Code Here

  @Override
  public ValidationError[] validate(final Certificate[] chain) {
    Assert.notEmpty(chain, "chain");
    if (chain.length < 2) {
      return new ValidationError[] { new ValidationError(PKIXCertificateValidator.VALIDATOR_NAME, "Certificate chain must be greater than 1(certificate and issuer certificate") };
    }
    try {
      PKIXCertPathValidatorResult validatorResult = this.getValidatorResult(chain);
      RockFrameworkLogger.getLogger().debug("Result: " + validatorResult);
      return new ValidationError[0];
    } catch (CertPathBuilderException e) {
      RockFrameworkLogger.getLogger().info(e.getMessage(), e);
      RockFrameworkLogger.getLogger().info("Validation error: " + e.getMessage());
      return new ValidationError[] { new ValidationError(PKIXCertificateValidator.VALIDATOR_NAME, "Invalid certificate infrastructure") };
    } catch (Exception e) {
      throw new CertificateException(e);
    }
  }
View Full Code Here

  public ValidationError[] validate(final Certificate[] chain) {
    Assert.notEmpty(chain, "chain");
    try {
      Certificate certificate = chain[0];
      if (Certificates.isSelfSigned(certificate)) {
        return new ValidationError[] { new ValidationError(SelfSignedCertificateValidator.VALIDATOR_NAME, "Certificate self signed") };
      }

      return new ValidationError[0];
    } catch (GeneralSecurityException e) {
      throw new CertificateException(e);
View Full Code Here

    X509Certificate x509Certificate = (X509Certificate) chain[0];
    CertificadoICPBrasil certificadoICPBrasil = CertificadoICPBrasil.getInstance(x509Certificate);
    List<ValidationError> list = new ArrayList<ValidationError>();

    if (certificadoICPBrasil.getTipoPessoa() == TipoPessoa.DESCONHECIDO) {
      list.add(new ValidationError(ICPBrasilCertificateValidator.VALIDATOR_NAME, "Tipo do propriet�rio do certificado inv�lido(PF/PJ)"));
    }

    if (Conditions.isNotEmpty(this.tiposFormato)) {
      boolean ok = false;
      for (TipoFormato tipoFormato : this.tiposFormato) {
        if (tipoFormato.equals(certificadoICPBrasil.getTipoFormato())) {
          ok = true;
          break;
        }
      }
      if (!ok) {
        list.add(new ValidationError(ICPBrasilCertificateValidator.VALIDATOR_NAME, "Formato do certificado inv�lido(A1,A2,A3,A4)"));
      }
    }

    return Collections.toArray(list, ValidationError.class);
  }
View Full Code Here

  @Override
  public ValidationError[] validate(final Certificate[] chain) {
    Assert.notEmpty(chain, "chain");
    if (chain.length < 2) {
      return new ValidationError[] { new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "Certificate chain must be greater than 1(certificate and issuer certificate") };
    }
    try {
      X509Certificate x509Certificate = (X509Certificate) chain[0];
      X509Certificate x509Issuer = (X509Certificate) chain[1];
      URL url = null;

      if (this.url == null) {
        URL[] urls = OCSPCertificateValidator.getOCSPUrl(x509Certificate);
        if (ConditionUtils.isNotEmpty(urls)) {
          url = urls[0];
        }
      } else {
        url = this.url;
      }

      if (url == null) {
        return new ValidationError[] { new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "No url found for validation") };
      }

      OCSPReq req = this.buildRequest(x509Certificate, x509Issuer);
      OCSPResp resp = this.sendRequest(req, url);
      if (resp.getStatus() != OCSPResponseStatus.SUCCESSFUL) {
        return new ValidationError[] { new ValidationError(OCSPCertificateValidator.VALIDATOR_NAME, "Certificate not valid") };
      }
      return new ValidationError[0];
    } catch (Exception e) {
      throw new CertificateException(e);
    }
View Full Code Here

      } else {
        url = this.url;
      }

      if (url == null) {
        return new ValidationError[] { new ValidationError(CRLCertificateValidator.VALIDATOR_NAME, "No url found for validation") };
      }

      X509CRL x509crl = this.getCRLFromURL(url);
      if (x509crl.isRevoked(x509Certificate)) {
        return new ValidationError[] { new ValidationError(CRLCertificateValidator.VALIDATOR_NAME, "Certificate revoked") };
      }

      return new ValidationError[0];
    } catch (Exception e) {
      throw new CertificateException(e);
View Full Code Here

  public ValidationError[] validate(final Certificate[] chain) {
    Assert.notEmpty(chain, "chain");
    try {
      X509Certificate x509Certificate = (X509Certificate) chain[0];
      if (this.isSelfSigned(x509Certificate)) {
        return new ValidationError[] { new ValidationError(SelfSignedCertificateValidator.VALIDATOR_NAME, "Certificate self signed") };
      }

      return new ValidationError[0];
    } catch (GeneralSecurityException e) {
      throw new CertificateException(e);
View Full Code Here

TOP

Related Classes of br.net.woodstock.rockframework.security.cert.ValidationError

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.