Example usage for org.bouncycastle.asn1.x509 AlgorithmIdentifier getInstance

List of usage examples for org.bouncycastle.asn1.x509 AlgorithmIdentifier getInstance

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x509 AlgorithmIdentifier getInstance.

Prototype

public static AlgorithmIdentifier getInstance(Object obj) 

Source Link

Usage

From source file:com.guardtime.asn1.SignatureInfo.java

License:Apache License

public Asn1SignatureInfo(ASN1Sequence seq) {
    Enumeration en = seq.getObjects();

    // Required elements
    signatureAlgorithm = AlgorithmIdentifier.getInstance(en.nextElement());
    signatureValue = ASN1OctetString.getInstance(en.nextElement());

    // Optional elements
    while (en.hasMoreElements()) {
        ASN1TaggedObject obj = ASN1TaggedObject.getInstance(en.nextElement());
        if (obj.getTagNo() == 0 && pkiReferences == null) {
            pkiReferences = ASN1Set.getInstance(obj, false);
        } else {/*from w  w  w.ja v a2  s  .  c  o  m*/
            throw new IllegalArgumentException("invalid object in factory: " + obj);
        }
    }
}

From source file:com.guardtime.asn1.SignedData.java

License:Apache License

/**
 * Class constructor.//from  w w w. j av  a2s .  c o m
 *
 * @param obj ASN.1 representation of signed data.
 *
 * @throws Asn1FormatException if provided ASN.1 object has invalid format.
 */
SignedData(ASN1Encodable obj) throws Asn1FormatException {
    try {
        signedData = org.bouncycastle.asn1.cms.SignedData.getInstance(obj);

        // Extract and check version
        //
        // RFC 2630/3161 require version to be 0..4
        // GuardTime requires version to be exactly 3
        BigInteger ver = signedData.getVersion().getValue();
        if (!ver.equals(BigInteger.valueOf(VERSION))) {
            throw new Asn1FormatException("invalid signed data version: " + ver);
        }
        version = ver.intValue();

        // Extract and check digest algorithm list
        //
        // Digest algorithm list can contain duplicate entries as
        // RFC 2630 does not directly deny that
        //
        // RFC 2630 allows digest algorithm list to be empty
        digestAlgorithms = new ArrayList();
        Enumeration e = signedData.getDigestAlgorithms().getObjects();
        while (e.hasMoreElements()) {
            Object o = e.nextElement();
            String algOid = AlgorithmIdentifier.getInstance(o).getAlgorithm().getId();
            Asn1Util.checkDigestAlgorithm(algOid);
            digestAlgorithms.add(algOid);
        }

        // Extract and check encapsulated content info
        ContentInfo eContentInfo = signedData.getEncapContentInfo();
        eContentType = eContentInfo.getContentType().toString();
        // RFC3161 requires type to be id-ct-TSTInfo
        if (!eContentType.equals(E_CONTENT_TYPE)) {
            throw new Asn1FormatException("invalid encapsulated content type: " + eContentType);
        }
        DEROctetString eContentData = (DEROctetString) eContentInfo.getContent();
        eContent = TstInfo.getInstance(eContentData.getOctetStream());

        // Extract certificates (optional field)
        ASN1Set certificates = signedData.getCertificates();
        if (certificates != null && certificates.size() > 0) {
            byte[] certBytes = certificates.getObjectAt(0).toASN1Primitive().getEncoded(ASN1Encoding.DER);
            InputStream in = new ByteArrayInputStream(certBytes);
            CertificateFactory cf = CertificateFactory.getInstance("X.509");
            certificate = (X509Certificate) cf.generateCertificate(in);
        }

        // Extract CRLs (GuardTime is not currently using CRLs field)
        ASN1Set rawCrls = signedData.getCRLs();
        crls = ((rawCrls == null) ? null : rawCrls.getEncoded(ASN1Encoding.DER));

        // Extract and check signer info
        ASN1Set signerInfos = signedData.getSignerInfos();
        // RFC 3161 requires signer info list to contain exactly one entry
        if (signerInfos.size() != 1) {
            throw new Asn1FormatException("wrong number of signer infos found: " + signerInfos.size());
        }
        signerInfo = new SignerInfo(signerInfos.getObjectAt(0).toASN1Primitive());
        // Make sure digest algorithm is contained in digest algorithm list
        // TODO: check disabled as this problem is not critical.
        //String digestAlgorithmOid = signerInfo.getDigestAlgorithm();
        //if (!digestAlgorithms.contains(digestAlgorithmOid)) {
        //   throw new Asn1FormatException("digest algorithm not found in list: " + digestAlgorithmOid);
        //}
    } catch (Asn1FormatException e) {
        throw e;
    } catch (Exception e) {
        // Also catches IllegalArgumentException, NullPointerException, etc.
        throw new Asn1FormatException("signed data has invalid format", e);
    }
}

From source file:com.novosec.pkix.asn1.cmp.Challenge.java

License:Open Source License

public Challenge(ASN1Sequence seq) {
    int idx = 0;/*w w w  . j  ava  2 s .  c o  m*/
    Object obj = seq.getObjectAt(idx);

    if (!(obj instanceof DEROctetString)) {
        owf = AlgorithmIdentifier.getInstance(obj);
        idx++;
    }

    this.witness = (DEROctetString) seq.getObjectAt(idx++);
    this.challenge = (DEROctetString) seq.getObjectAt(idx);
}

From source file:com.novosec.pkix.asn1.cmp.DHBMParameter.java

License:Open Source License

public DHBMParameter(ASN1Sequence seq) {
    this.owf = AlgorithmIdentifier.getInstance(seq.getObjectAt(0));
    this.mac = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
}

From source file:com.novosec.pkix.asn1.cmp.OOBCertHash.java

License:Open Source License

public OOBCertHash(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();

    while (e.hasMoreElements()) {
        Object obj = e.nextElement();

        if (obj instanceof ASN1TaggedObject) {
            ASN1TaggedObject tagObj = (ASN1TaggedObject) obj;

            switch (tagObj.getTagNo()) {
            case 0:
                hashAlg = AlgorithmIdentifier.getInstance(tagObj.getObject());
                break;
            case 1:
                certId = CertId.getInstance(tagObj.getObject());
                break;
            }//from  ww  w .  j a v  a 2 s  . co m
        } else {
            hashVal = DERBitString.getInstance(obj);

            break;
        }
    }
}

From source file:com.novosec.pkix.asn1.cmp.PKIHeader.java

License:Open Source License

public PKIHeader(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();

    pvno = DERInteger.getInstance(e.nextElement());
    sender = GeneralName.getInstance(e.nextElement());
    recipient = GeneralName.getInstance(e.nextElement());

    while (e.hasMoreElements()) {
        ASN1TaggedObject tagObj = (ASN1TaggedObject) e.nextElement();

        switch (tagObj.getTagNo()) {
        case 0://ww  w  .  ja va  2s .co m
            messageTime = DERGeneralizedTime.getInstance(tagObj.getObject());
            break;
        case 1:
            protectionAlg = AlgorithmIdentifier.getInstance(tagObj.getObject());
            break;
        case 2:
            senderKID = (DEROctetString) DEROctetString.getInstance(tagObj);
            break;
        case 3:
            recipKID = (DEROctetString) DEROctetString.getInstance(tagObj);
            break;
        case 4:
            transactionID = (DEROctetString) DEROctetString.getInstance(tagObj);
            break;
        case 5:
            senderNonce = (DEROctetString) DEROctetString.getInstance(tagObj);
            break;
        case 6:
            recipNonce = (DEROctetString) DEROctetString.getInstance(tagObj);
            break;
        case 7:
            freeText = PKIFreeText.getInstance(tagObj.getObject());
            break;
        case 8:
            ASN1Sequence s = (ASN1Sequence) tagObj.getObject();
            for (int i = 0; i < s.size(); i++) {
                generalInfos.addElement(InfoTypeAndValue.getInstance(s.getObjectAt(i)));
            }
            break;
        }
    }
}

From source file:com.novosec.pkix.asn1.crmf.EncryptedValue.java

License:Open Source License

public EncryptedValue(ASN1Sequence seq) {
    Enumeration e = seq.getObjects();
    while (e.hasMoreElements()) {
        Object obj = e.nextElement();

        if (obj instanceof DERTaggedObject) {
            DERTaggedObject tagObj = (DERTaggedObject) obj;

            switch (tagObj.getTagNo()) {
            case 0:
                this.intendedAlg = AlgorithmIdentifier.getInstance(tagObj.getObject());
                break;
            case 1:
                this.symmAlg = AlgorithmIdentifier.getInstance(tagObj.getObject());
                break;
            case 2:
                this.encSymmKey = DERBitString.getInstance(tagObj.getObject());
                break;
            case 3:
                this.keyAlg = AlgorithmIdentifier.getInstance(tagObj.getObject());
                break;
            case 4:
                this.valueHint = (DEROctetString) DEROctetString.getInstance(tagObj.getObject());
                break;
            }//ww w .ja  v a2s.c  o  m
        } else {
            encValue = DERBitString.getInstance(obj);
            break;
        }
    }
}

From source file:com.novosec.pkix.asn1.crmf.PBMParameter.java

License:Open Source License

public PBMParameter(ASN1Sequence seq) {
    this.salt = (DEROctetString) seq.getObjectAt(0);
    this.owf = AlgorithmIdentifier.getInstance(seq.getObjectAt(1));
    this.iterationCount = DERInteger.getInstance(seq.getObjectAt(2));
    this.mac = AlgorithmIdentifier.getInstance(seq.getObjectAt(3));
}

From source file:com.novosec.pkix.asn1.crmf.PKMACValue.java

License:Open Source License

public PKMACValue(ASN1Sequence seq) {
    this.algId = AlgorithmIdentifier.getInstance(seq.getObjectAt(0));
    this.value = DERBitString.getInstance(seq.getObjectAt(1));
}

From source file:com.novosec.pkix.asn1.crmf.POPOSigningKey.java

License:Open Source License

public POPOSigningKey(ASN1Sequence seq) {
    int idx = 0;/*w w  w.j av a 2s  . c  o m*/
    Object obj = seq.getObjectAt(idx++);

    if (obj instanceof ASN1TaggedObject) {
        ASN1TaggedObject tagObj = (ASN1TaggedObject) obj;
        if (tagObj.getTagNo() == 0) {
            this.poposkInput = POPOSigningKeyInput.getInstance(tagObj.getObject());
        } else {
            throw new IllegalArgumentException("unknown tag: " + tagObj.getTagNo());
        }
    } else {
        idx--;
    }

    this.algorithmIdentifier = AlgorithmIdentifier.getInstance(seq.getObjectAt(idx++));
    this.signature = DERBitString.getInstance(seq.getObjectAt(idx));
}