Beispiel #1
0
  public SignerInfo(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();

    version = (DERInteger) e.nextElement();
    issuerAndSerialNumber = IssuerAndSerialNumber.getInstance(e.nextElement());
    digAlgorithm = AlgorithmIdentifier.getInstance(e.nextElement());

    Object obj = e.nextElement();

    if (obj instanceof ASN1TaggedObject) {
      authenticatedAttributes = ASN1Set.getInstance((ASN1TaggedObject) obj, false);

      digEncryptionAlgorithm = AlgorithmIdentifier.getInstance(e.nextElement());
    } else {
      authenticatedAttributes = null;
      digEncryptionAlgorithm = AlgorithmIdentifier.getInstance(obj);
    }

    encryptedDigest = DEROctetString.getInstance(e.nextElement());

    if (e.hasMoreElements()) {
      unauthenticatedAttributes = ASN1Set.getInstance((ASN1TaggedObject) e.nextElement(), false);
    } else {
      unauthenticatedAttributes = null;
    }
  }
  /**
   * Returns the AuthorityKeyIdentifier extension value on String format.<br>
   * Otherwise, returns <b>null</b>.<br>
   *
   * @return String
   * @throws IOException
   */
  public String getAuthorityKeyIdentifier() throws IOException {
    // TODO - Precisa validar este metodo com a RFC
    DERSequence seq =
        (DERSequence) getExtensionValue(X509Extensions.AuthorityKeyIdentifier.getId());
    if (seq == null || seq.size() == 0) {
      return null;
    }
    DERTaggedObject tag = (DERTaggedObject) seq.getObjectAt(0);
    DEROctetString oct = (DEROctetString) DEROctetString.getInstance(tag);

    return toString(oct.getOctets());
  }
Beispiel #3
0
  @Override
  protected Object doExecute() throws Exception {
    Set<String> caNames = caClient.getCaNames();
    if (isEmpty(caNames)) {
      throw new IllegalCmdParamException("no CA is configured");
    }

    if (caName != null && !caNames.contains(caName)) {
      throw new IllegalCmdParamException(
          "CA " + caName + " is not within the configured CAs " + caNames);
    }

    if (caName == null) {
      if (caNames.size() == 1) {
        caName = caNames.iterator().next();
      } else {
        throw new IllegalCmdParamException(
            "no caname is specified, one of " + caNames + " is required");
      }
    }

    X509CRL crl = null;
    try {
      crl = retrieveCRL(caName);
    } catch (PKIErrorException e) {
      throw new CmdFailure("received no CRL from server: " + e.getMessage());
    }

    if (crl == null) {
      throw new CmdFailure("received no CRL from server");
    }

    saveVerbose("saved CRL to file", new File(outFile), crl.getEncoded());

    if (withBaseCRL.booleanValue()) {
      byte[] octetString = crl.getExtensionValue(Extension.deltaCRLIndicator.getId());
      if (octetString != null) {
        if (baseCRLOut == null) {
          baseCRLOut = outFile + "-baseCRL";
        }

        byte[] extnValue = DEROctetString.getInstance(octetString).getOctets();
        BigInteger baseCrlNumber = ASN1Integer.getInstance(extnValue).getPositiveValue();

        RequestResponseDebug debug = getRequestResponseDebug();
        try {
          crl = caClient.downloadCRL(caName, baseCrlNumber, debug);
        } catch (PKIErrorException e) {
          throw new CmdFailure("received no baseCRL from server: " + e.getMessage());
        } finally {
          saveRequestResponse(debug);
        }

        if (crl == null) {
          throw new CmdFailure("received no baseCRL from server");
        } else {
          saveVerbose("saved baseCRL to file", new File(baseCRLOut), crl.getEncoded());
        }
      }
    }

    return null;
  } // method doExecute