Example usage for org.bouncycastle.asn1 DERBitString getInstance

List of usage examples for org.bouncycastle.asn1 DERBitString getInstance

Introduction

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

Prototype

public static DERBitString getInstance(ASN1TaggedObject obj, boolean explicit) 

Source Link

Document

return a Bit String from a tagged object.

Usage

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

License:Open Source License

public CertTemplate(ASN1Sequence seq) {
    Enumeration e = (seq == null ? null : seq.getObjects());
    while (e != null && e.hasMoreElements()) {
        DERTaggedObject obj = (DERTaggedObject) e.nextElement();
        int tagno = (obj == null ? -1 : obj.getTagNo());
        switch (tagno) {
        case 0://  w w  w .j a  v  a  2s. c o  m
            this.version = DERInteger.getInstance(obj, false);
            break;
        case 1:
            this.serialNumber = DERInteger.getInstance(obj, false);
            break;
        case 2:
            this.signingAlg = AlgorithmIdentifier.getInstance(obj, false);
            break;
        case 3:
            this.issuer = X509Name.getInstance(obj, bNameIsExplicit);
            break;
        case 4:
            this.validity = OptionalValidity.getInstance(obj, false);
            break;
        case 5:
            this.subject = X509Name.getInstance(obj, bNameIsExplicit);
            break;
        case 6:
            this.publicKey = SubjectPublicKeyInfo.getInstance(obj, false);
            break;
        case 7:
            this.issuerUID = DERBitString.getInstance(obj, false);
            break;
        case 8:
            this.subjectUID = DERBitString.getInstance(obj, false);
            break;
        case 9:
            this.extensions = X509Extensions.getInstance(obj, false);
            break;
        default:
            throw new IllegalArgumentException("invalid asn1 sequence");
        }
    }
}

From source file:jcifs.spnego.NegTokenInit.java

License:Open Source License

@Override
protected void parse(byte[] token) throws IOException {

    try (ASN1InputStream is = new ASN1InputStream(token)) {
        DERApplicationSpecific constructed = (DERApplicationSpecific) is.readObject();
        if (constructed == null || !constructed.isConstructed())
            throw new IOException("Malformed SPNEGO token " + constructed
                    + (constructed != null
                            ? " " + constructed.isConstructed() + " " + constructed.getApplicationTag()
                            : ""));

        try (ASN1InputStream der = new ASN1InputStream(constructed.getContents())) {
            ASN1ObjectIdentifier spnego = (ASN1ObjectIdentifier) der.readObject();
            if (!SPNEGO_OID.equals(spnego)) {
                throw new IOException("Malformed SPNEGO token, OID " + spnego);
            }// w w w  .j  a  va 2s .c  o m
            ASN1TaggedObject tagged = (ASN1TaggedObject) der.readObject();
            if (tagged.getTagNo() != 0) {
                throw new IOException("Malformed SPNEGO token: tag " + tagged.getTagNo() + " " + tagged);
            }
            ASN1Sequence sequence = ASN1Sequence.getInstance(tagged, true);
            Enumeration<ASN1Object> fields = sequence.getObjects();
            while (fields.hasMoreElements()) {
                tagged = (ASN1TaggedObject) fields.nextElement();
                switch (tagged.getTagNo()) {
                case 0:
                    sequence = ASN1Sequence.getInstance(tagged, true);
                    Oid[] mechs = new Oid[sequence.size()];
                    for (int i = mechs.length - 1; i >= 0; i--) {
                        ASN1ObjectIdentifier mechanism = (ASN1ObjectIdentifier) sequence.getObjectAt(i);
                        mechs[i] = new Oid(mechanism.getId());
                    }
                    setMechanisms(mechs);
                    break;
                case 1:
                    DERBitString ctxFlags = DERBitString.getInstance(tagged, true);
                    setContextFlags(ctxFlags.getBytes()[0] & 0xff);
                    break;
                case 2:
                    ASN1OctetString mechanismToken = ASN1OctetString.getInstance(tagged, true);
                    setMechanismToken(mechanismToken.getOctets());
                    break;

                case 3:
                    if (!(tagged.getObject() instanceof DEROctetString)) {
                        break;
                    }
                case 4:
                    ASN1OctetString mechanismListMIC = ASN1OctetString.getInstance(tagged, true);
                    setMechanismListMIC(mechanismListMIC.getOctets());
                    break;
                default:
                    throw new IOException("Malformed token field.");
                }
            }
        } catch (GSSException e) {
            throw new IOException("Failed to read OID", e);
        }
    }
}