Example usage for org.bouncycastle.asn1 ASN1InputStream ASN1InputStream

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

Introduction

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

Prototype

public ASN1InputStream(byte[] input) 

Source Link

Document

Create an ASN1InputStream based on the input byte array.

Usage

From source file:jcifs.pac.kerberos.KerberosToken.java

License:Open Source License

public KerberosToken(byte[] token, KerberosKey[] keys) throws PACDecodingException {

    if (token.length <= 0)
        throw new PACDecodingException("Empty kerberos token");

    try {//w w  w  . j a  v a  2s  .c o  m
        ASN1InputStream stream = new ASN1InputStream(new ByteArrayInputStream(token));
        DERApplicationSpecific derToken = ASN1Util.as(DERApplicationSpecific.class, stream);
        if (derToken == null || !derToken.isConstructed())
            throw new PACDecodingException("Malformed kerberos token");
        stream.close();

        stream = new ASN1InputStream(new ByteArrayInputStream(derToken.getContents()));
        ASN1ObjectIdentifier kerberosOid = ASN1Util.as(ASN1ObjectIdentifier.class, stream);
        if (!kerberosOid.getId().equals(KerberosConstants.KERBEROS_OID))
            throw new PACDecodingException("Not a kerberos token");

        int read = 0;
        int readLow = stream.read() & 0xff;
        int readHigh = stream.read() & 0xff;
        read = (readHigh << 8) + readLow;
        if (read != 0x01)
            throw new PACDecodingException("Malformed kerberos token");

        DERApplicationSpecific krbToken = ASN1Util.as(DERApplicationSpecific.class, stream);
        if (krbToken == null || !krbToken.isConstructed())
            throw new PACDecodingException("Malformed kerberos token");

        stream.close();

        this.apRequest = new KerberosApRequest(krbToken.getContents(), keys);
    } catch (IOException e) {
        throw new PACDecodingException("Malformed kerberos token", e);
    }
}

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);
            }// ww w. j  a v  a2s .  co 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);
        }
    }
}

From source file:jcifs.spnego.NegTokenTarg.java

License:Open Source License

@Override
protected void parse(byte[] token) throws IOException {
    try (ASN1InputStream der = new ASN1InputStream(token)) {
        ASN1TaggedObject tagged = (ASN1TaggedObject) der.readObject();
        ASN1Sequence sequence = ASN1Sequence.getInstance(tagged, true);
        Enumeration<?> fields = sequence.getObjects();
        while (fields.hasMoreElements()) {
            tagged = (ASN1TaggedObject) fields.nextElement();
            switch (tagged.getTagNo()) {
            case 0:
                ASN1Enumerated enumerated = ASN1Enumerated.getInstance(tagged, true);
                setResult(enumerated.getValue().intValue());
                break;
            case 1:
                ASN1ObjectIdentifier mech = ASN1ObjectIdentifier.getInstance(tagged, true);
                setMechanism(new Oid(mech.getId()));
                break;
            case 2:
                ASN1OctetString mechanismToken = ASN1OctetString.getInstance(tagged, true);
                setMechanismToken(mechanismToken.getOctets());
                break;
            case 3:
                ASN1OctetString mechanismListMIC = ASN1OctetString.getInstance(tagged, true);
                setMechanismListMIC(mechanismListMIC.getOctets());
                break;
            default:
                throw new IOException("Malformed token field.");
            }//ww w  .j av  a 2  s  .  c om
        }
    } catch (GSSException e) {
        throw new IOException("Failed to parse Oid", e);
    }
}

From source file:jp.klab.stone.certinstaller.CredentialHelper.java

License:Apache License

private boolean isCa(X509Certificate cert) {
    try {//  w  w w.j  a va 2  s  .c om
        // TODO: add a test about this
        byte[] basicConstraints = cert.getExtensionValue("2.5.29.19");
        Object obj = new ASN1InputStream(basicConstraints).readObject();
        basicConstraints = ((DEROctetString) obj).getOctets();
        obj = new ASN1InputStream(basicConstraints).readObject();
        return new BasicConstraints((ASN1Sequence) obj).isCA();
    } catch (Exception e) {
        return false;
    }
}

From source file:me.it_result.ca.X509Assertions.java

License:Open Source License

public X509Assertions extensionValue(DERObjectIdentifier id, ASN1Encodable value) throws Exception {
    ASN1InputStream asn1Parser = new ASN1InputStream(cert.getExtensionValue(id.getId()));
    DEROctetString actualExtension = (DEROctetString) asn1Parser.readObject();
    assertTrue(Arrays.equals(value.getDERObject().getDEREncoded(), actualExtension.getOctets()));
    return this;
}

From source file:mitm.common.security.asn1.ASN1Utils.java

License:Open Source License

private static ASN1Object getObject(String oid, byte[] extension) throws IOException {
    ASN1InputStream aIn = new ASN1InputStream(extension);
    ASN1OctetString octs = (ASN1OctetString) aIn.readObject();
    aIn.close();//from  w  ww . java 2s. c  o  m
    aIn = new ASN1InputStream(octs.getOctets());
    ASN1Object obj = aIn.readObject();
    aIn.close();
    return obj;
}

From source file:mitm.common.security.asn1.ASN1Utils.java

License:Open Source License

public static ASN1EncodableVector toASN1EncodableVector(X500Principal principal) throws IOException {
    final ASN1InputStream stream = new ASN1InputStream(principal.getEncoded());
    final ASN1Object der = stream.readObject();

    Enumeration<?> e = ASN1Sequence.getInstance(der).getObjects();

    ASN1EncodableVector v = new ASN1EncodableVector();

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

        if (o instanceof ASN1Encodable) {
            v.add((ASN1Encodable) o);/*from www . j  a va2 s  .com*/
        }
    }

    stream.close();
    return v;
}

From source file:mitm.common.security.asn1.DERUtils.java

License:Open Source License

public static ASN1Primitive toDERObject(Certificate certificate)
        throws CertificateEncodingException, IOException {
    final ASN1InputStream stream = new ASN1InputStream(certificate.getEncoded());
    ASN1Primitive p = stream.readObject();
    stream.close();//from   w ww  . j a  va  2s .  c o m
    return p;
}

From source file:mitm.common.security.asn1.DERUtils.java

License:Open Source License

public static ASN1Primitive toDERObject(X509CRL crl) throws CRLException, IOException {
    final ASN1InputStream stream = new ASN1InputStream(crl.getEncoded());
    ASN1Primitive p = stream.readObject();
    stream.close();//from ww  w . j  a  v a  2 s.c  o m
    return p;
}

From source file:mx.bigdata.cfdi.CFDv3Debugger.java

License:Apache License

public void dumpDigests() throws Exception {
    System.err.println(cfd.getOriginalString());
    byte[] digest = cfd.getDigest();
    CFDv3.dump("Digestion generada", digest, System.err);
    String certStr = cfd.document.getCertificado();
    Base64 b64 = new Base64();
    byte[] cbs = b64.decode(certStr);
    X509Certificate cert = KeyLoader.loadX509Certificate(new ByteArrayInputStream(cbs));
    cert.checkValidity();//ww w  .  j  a v a 2 s .c  om
    String sigStr = cfd.document.getSello();
    byte[] signature = b64.decode(sigStr);
    CFDv3.dump("Digestion firmada", signature, System.err);
    Cipher dec = Cipher.getInstance("RSA");
    dec.init(Cipher.DECRYPT_MODE, cert);
    byte[] result = dec.doFinal(signature);
    CFDv3.dump("Digestion decriptada", result, System.err);
    ASN1InputStream aIn = new ASN1InputStream(result);
    ASN1Sequence seq = (ASN1Sequence) aIn.readObject();
    ASN1OctetString sigHash = (ASN1OctetString) seq.getObjectAt(1);
    CFDv3.dump("Sello", sigHash.getOctets(), System.err);
}