Example usage for org.bouncycastle.asn1 ASN1EncodableVector ASN1EncodableVector

List of usage examples for org.bouncycastle.asn1 ASN1EncodableVector ASN1EncodableVector

Introduction

In this page you can find the example usage for org.bouncycastle.asn1 ASN1EncodableVector ASN1EncodableVector.

Prototype

public ASN1EncodableVector() 

Source Link

Usage

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private Attribute createMessageDigest(byte[] origHash) {
    final ASN1EncodableVector setEV = new ASN1EncodableVector();
    setEV.add(new DEROctetString(origHash));

    DERSet set = new DERSet(setEV);

    Attribute seq1 = new Attribute(new ASN1ObjectIdentifier(ID_MESSAGE_DIGEST), set);
    return seq1;/*  ww  w.  j av  a 2s  .  c  om*/
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private Attribute createSigningTime(Date now) {
    final ASN1EncodableVector setEV = new ASN1EncodableVector();
    setEV.add(new DERUTCTime(now));

    DERSet set = new DERSet(setEV);
    Attribute seq1 = new Attribute(new ASN1ObjectIdentifier(ID_SIGNING_TIME), set);
    return seq1;/*from w  w w .  ja  va 2  s.  co m*/
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private Attribute createPolicyId(byte[] polHash, String polHashAlg, String sigPolicyUri, String sigPolicyId) {

    final ASN1EncodableVector desSeq12 = new ASN1EncodableVector();
    desSeq12.add(new DERObjectIdentifier(polHashAlg));
    DERSequence seq12 = new DERSequence(desSeq12);

    final ASN1EncodableVector desSeq1 = new ASN1EncodableVector();
    desSeq1.add(seq12);//from   ww w.j a  va2s  .com
    desSeq1.add(new DEROctetString(polHash));
    DERSequence seq1 = new DERSequence(desSeq1);

    // // end seq 1

    // IGUALAR AO ITAU

    final ASN1EncodableVector desSeq22 = new ASN1EncodableVector();
    desSeq22.add(new DERObjectIdentifier(ID_SIG_POLICY_URI));
    desSeq22.add(new DERIA5String(sigPolicyUri));
    DERSequence seq22 = new DERSequence(desSeq22);

    final ASN1EncodableVector desSeq2 = new ASN1EncodableVector();
    desSeq2.add(seq22);

    DERSequence seq2 = new DERSequence(desSeq2);

    final ASN1EncodableVector aevDSet1 = new ASN1EncodableVector();
    final ASN1EncodableVector aevDSeq1 = new ASN1EncodableVector();
    aevDSeq1.add(new DERObjectIdentifier(sigPolicyId));
    aevDSeq1.add(seq1);

    aevDSeq1.add(seq2);

    DERSequence dsq1 = new DERSequence(aevDSeq1);
    aevDSet1.add(dsq1);
    DERSet ds1 = new DERSet(aevDSet1);

    Attribute ret = new Attribute(new ASN1ObjectIdentifier(ID_SIG_POLICY), ds1);
    return ret;
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private Attribute createCertRef(byte[] certHash, X509Certificate certContent, boolean signingCertFallback,
        int hashId) throws Exception {
    // *** BEGIN ***

    // 5.2.1.1.3 Certificados Obrigatoriamente Referenciados
    // O atributo signingCertificate deve conter referncia apenas ao
    // certificado do signatrio.

    // 5.2.1.1.4 Certificados Obrigatrios do Caminho de Certificao
    // Para a verso 1.0: nenhum certificado
    // Para as verses 1.1, 2.0 e 2.1: o certificado do signatrio.

    // ESSCertIDv2 ::= SEQUENCE {
    // hashAlgorithm AlgorithmIdentifier
    // DEFAULT {algorithm id-sha256},
    // certHash Hash,
    // issuerSerial IssuerSerial OPTIONAL
    // }/* ww  w .  j ava2s.  c  o  m*/
    //
    // Hash ::= OCTET STRING
    //
    // IssuerSerial ::= SEQUENCE {
    // issuer GeneralNames,
    // serialNumber CertificateSerialNumber
    // }
    final ASN1EncodableVector issuerSerialaev = new ASN1EncodableVector();

    final ASN1EncodableVector issuerCertaev = new ASN1EncodableVector();

    DERTaggedObject issuerName = new DERTaggedObject(true, 4, // issuer
            // GeneralNames,
            getEncodedIssuer(certContent.getTBSCertificate()));

    // DERTaggedObject issuerName = new DERTaggedObject(false, 0, // issuer
    // GeneralNames,
    // getEncodedIssuer(certContent.getTBSCertificate()));
    issuerCertaev.add(issuerName);

    DERSequence issuerCertseq = new DERSequence(issuerCertaev); // IssuerSerial
    // ::=
    // SEQUENCE
    // {
    issuerSerialaev.add(issuerCertseq);

    // serialNumber CertificateSerialNumber
    BigInteger serialNumber = certContent.getSerialNumber();
    issuerSerialaev.add(new DERInteger(serialNumber));

    DERSequence issuerSerial = new DERSequence(issuerSerialaev);
    // *** END ***

    final ASN1EncodableVector essCertIDv2aev = new ASN1EncodableVector();
    essCertIDv2aev.add(new DEROctetString(certHash)); // Hash ::= OCTET
    // STRING

    essCertIDv2aev.add(issuerSerial); // ESSCertIDv2 ::= SEQUENCE {

    // hashAlgorithm AlgorithmIdentifier

    if (!((signingCertFallback && hashId == NDX_SHA1) || (!signingCertFallback && hashId == NDX_SHA256))) {
        DERObjectIdentifier hashAlgorithm = new DERObjectIdentifier(getHashAlg(hashId));
        essCertIDv2aev.add(hashAlgorithm);
    }
    // Nota 4: Para o atributo ESSCertIDv2, utilizada nas verses 2.1 das
    // polticas de assinatura
    // baseadas em CAdES, as aplicaes NO DEVEM codificar o campo
    // hashAlgorithm caso
    // utilize o mesmo algoritmo definido como valor default (SHA-256),
    // conforme ISO 8825-1.

    DERSequence essCertIDv2seq = new DERSequence(essCertIDv2aev);

    // ************************************************************************
    //
    final ASN1EncodableVector aevSeq3 = new ASN1EncodableVector();
    aevSeq3.add(essCertIDv2seq);
    DERSequence seq3 = new DERSequence(aevSeq3);

    final ASN1EncodableVector aevSeq2 = new ASN1EncodableVector();
    aevSeq2.add(seq3);
    DERSequence seq2 = new DERSequence(aevSeq2);

    final ASN1EncodableVector aevSet = new ASN1EncodableVector();
    aevSet.add(seq2);
    ASN1Set mainSet = new DERSet(aevSet);

    Attribute seq1 = new Attribute(
            new ASN1ObjectIdentifier(signingCertFallback ? ID_SIGNING_CERT : ID_SIGNING_CERT2), mainSet);
    return seq1;
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private void buildSignerInfo(ASN1EncodableVector body, String signedHashContent, X509Certificate certContent,
        String hashId) throws CertificateEncodingException {
    // ----- Signers Info --------

    final ASN1EncodableVector vec = new ASN1EncodableVector();
    final ASN1EncodableVector signerinfoVector = new ASN1EncodableVector();
    signerinfoVector.add(new DERInteger(SI_VERSION)); // 5 INT

    signerinfoVector.add(siAddCert(certContent));
    signerinfoVector.add(siAddDigestAlgorithm(hashId));
    signerinfoVector.add(siAddDigestEncryptionAlgorithm(ID_SHA1_RSA)); // 6
    // OCT/*from ww  w .  j av  a2s .co m*/
    // STR
    // Add the digest
    signerinfoVector.add(new DEROctetString(getDerSignedDigest(signedHashContent)));

    final DERSequence siSeq = new DERSequence(signerinfoVector); // 4 SEQ
    vec.add(siSeq);
    DERSet siSet = new DERSet(vec); // 3 SET
    body.add(siSet);

}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private DERSequence siAddDigestEncryptionAlgorithm(String hashId) {

    // Nota 3: Em ateno  RFC 3370 (Cryptographic Message Syntax (CMS)
    // Algorithms), item
    // "2.1 SHA-1"; e RFC 5754 (Using SHA2 Algorithms with Cryptographic
    // Message Syntax),
    // item "2 - Message Digest Algorithms", recomenda-se a ausncia do
    // campo "parameters" na
    // estrutura "AlgorithmIdentifier", usada na indicao do algoritmo de
    // hash, presentes nas
    // estruturas ASN.1 "SignedData.digestAlgorithms",
    // "SignerInfo.digestAlgorithm" e
    // "SignaturePolicyId.sigPolicyHash.hashAlgorithm".
    // AlgorithmIdentifier ::= SEQUENCE {
    // algorithm OBJECT IDENTIFIER,
    // parameters ANY DEFINED BY algorithm OPTIONAL }

    // Os processos para criao e verificao de assinaturas segundo esta
    // PA devem utilizar o
    // algoritmo :
    // a) para a verso 1.0: sha1withRSAEncryption(1 2 840 113549 1 1 5),
    // b) para a verso 1.1: sha1withRSAEncryption(1 2 840 113549 1 1 5) ou
    // sha256WithRSAEncryption(1.2.840.113549.1.1.11)
    // c) para as verses 2.0 e 2.1:
    // sha256WithRSAEncryption(1.2.840.113549.1.1.11).

    ASN1EncodableVector digestEncVetor = new ASN1EncodableVector();
    digestEncVetor.add(new DERObjectIdentifier(hashId));
    // VER NOTA/*from  ww  w .  ja  v  a 2s  .  com*/
    // digestEncVetor.add(new DERNull());
    return new DERSequence(digestEncVetor);
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private DERSequence siAddDigestAlgorithm(String hashId) {
    // Add the digestEncAlgorithm
    ASN1EncodableVector digestVetor = new ASN1EncodableVector();
    digestVetor.add(new DERObjectIdentifier(hashId)); // 6 OID
    digestVetor.add(new DERNull()); // 6 NULL
    return new DERSequence(digestVetor); // 5 SEQ
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private DERSequence siAddCert(X509Certificate certContent) throws CertificateEncodingException {
    ASN1EncodableVector certVetor = new ASN1EncodableVector();
    certVetor.add(getEncodedIssuer(certContent.getTBSCertificate())); // 6
    // ISSUER//from   ww w . j av a 2 s. c  om
    certVetor.add(new DERInteger(certContent.getSerialNumber())); // 6 INT -
    // SERIAL
    return (new DERSequence(certVetor)); // 5 SEQ

}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private void buildCerts(ASN1EncodableVector body, List<X509Certificate> chain)
        throws IOException, CertificateEncodingException {
    // -------- Certificados
    ASN1EncodableVector certVector = new ASN1EncodableVector();
    for (X509Certificate next : chain) {

        ASN1InputStream tempstream = new ASN1InputStream(new ByteArrayInputStream(next.getEncoded()));
        certVector.add(tempstream.readObject()); // 5 CERT (SEQ)
    }/*from  w w w  .jav  a 2  s  .co m*/

    final DERSet dercertificates = new DERSet(certVector); // 4 SET
    body.add(new DERTaggedObject(false, 0, dercertificates)); // 3 CS
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

private void buildCerts(ASN1EncodableVector body, X509Certificate certContent)
        throws IOException, CertificateEncodingException {
    // -------- Certificados
    ASN1EncodableVector certVector = new ASN1EncodableVector();
    ASN1InputStream tempstream = new ASN1InputStream(new ByteArrayInputStream(certContent.getEncoded()));
    certVector.add(tempstream.readObject()); // 5 CERT (SEQ)
    final DERSet dercertificates = new DERSet(certVector); // 4 SET
    body.add(new DERTaggedObject(false, 0, dercertificates)); // 3 CS
}