List of usage examples for org.bouncycastle.asn1 ASN1InputStream ASN1InputStream
public ASN1InputStream(byte[] input)
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); }