List of usage examples for org.bouncycastle.asn1 BERTags OCTET_STRING
int OCTET_STRING
To view the source code for org.bouncycastle.asn1 BERTags OCTET_STRING.
Click Source Link
From source file:de.tsenger.animamea.asn1.CertificateHolderAuthorizationTemplate.java
License:Open Source License
/** Constructor for Decoding CHAT from SEQUENCE * @param chatSeq/*from w w w. jav a 2 s . c om*/ * @throws IOException */ public CertificateHolderAuthorizationTemplate(ASN1Sequence chatSeq) throws IOException { this.terminalType = (ASN1ObjectIdentifier) chatSeq.getObjectAt(0); DEROctetString oct = (DEROctetString) ((DERApplicationSpecific) chatSeq.getObjectAt(1)) .getObject(BERTags.OCTET_STRING); this.auth = new DiscretionaryData(oct.getOctets()); }
From source file:de.tsenger.animamea.asn1.CVCertBody.java
License:Open Source License
public CVCertBody(DERApplicationSpecific derApp) throws IllegalArgumentException, IOException { if (derApp.getApplicationTag() != 0x4E) throw new IllegalArgumentException("contains no Certifcate Body with tag 0x7F4E"); else/* ww w. j a v a 2s .c o m*/ cvcbody = derApp; ASN1Sequence bodySeq = (ASN1Sequence) cvcbody.getObject(BERTags.SEQUENCE); profileIdentifier = (ASN1Integer) ((DERApplicationSpecific) bodySeq.getObjectAt(0)) .getObject(BERTags.INTEGER); authorityReference = (DERIA5String) ((DERApplicationSpecific) bodySeq.getObjectAt(1)) .getObject(BERTags.IA5_STRING); ASN1Sequence pkSeq = (ASN1Sequence) ((DERApplicationSpecific) bodySeq.getObjectAt(2)) .getObject(BERTags.SEQUENCE); ASN1ObjectIdentifier pkOid = (ASN1ObjectIdentifier) pkSeq.getObjectAt(0); if (pkOid.toString().startsWith("0.4.0.127.0.7.2.2.2.2")) { publicKey = new AmECPublicKey(pkSeq); } else if (pkOid.toString().startsWith("0.4.0.127.0.7.2.2.2.1")) { publicKey = new AmRSAPublicKey(pkSeq); } chr = (DERIA5String) ((DERApplicationSpecific) bodySeq.getObjectAt(3)).getObject(BERTags.IA5_STRING); ASN1Sequence chatSeq = (ASN1Sequence) ((DERApplicationSpecific) bodySeq.getObjectAt(4)) .getObject(BERTags.SEQUENCE); chat = new CertificateHolderAuthorizationTemplate(chatSeq); effectiveDate = (DEROctetString) ((DERApplicationSpecific) bodySeq.getObjectAt(5)) .getObject(BERTags.OCTET_STRING); expirationDate = (DEROctetString) ((DERApplicationSpecific) bodySeq.getObjectAt(6)) .getObject(BERTags.OCTET_STRING); if (bodySeq.size() > 7) { extensions = (ASN1Sequence) ((DERApplicationSpecific) bodySeq.getObjectAt(7)) .getObject(BERTags.SEQUENCE); } }
From source file:de.tsenger.animamea.asn1.DynamicAuthenticationData.java
License:Open Source License
/** * Liefert den Inhalt des Tagged Objects mit dem Tag (0x80 & tagno) zurck. * @param tagno/* ww w. ja v a2 s. c om*/ * @return */ public byte[] getDataObject(int tagno) { for (DERTaggedObject item : objects) { if (item.getTagNo() == tagno) { DEROctetString ostr = (DEROctetString) item.getObjectParser(BERTags.OCTET_STRING, false); return ostr.getOctets(); } } return null; }
From source file:org.jruby.ext.openssl.X509Extension.java
License:LGPL
@JRubyMethod public RubyString value(final ThreadContext context) { if (this.value instanceof RubyString) { // return the same as set return (RubyString) this.value; }/* ww w .j ava 2 s . c om*/ final Ruby runtime = context.runtime; final String oid = getRealObjectID().getId(); try { if (oid.equals("2.5.29.19")) { // basicConstraints ASN1Sequence seq2 = (ASN1Sequence) ASN1.readObject(getRealValueEncoded()); final ByteList val = new ByteList(32); if (seq2.size() > 0) { val.append(CA_); ASN1Encodable obj0 = seq2.getObjectAt(0); final boolean bool; if (obj0 instanceof ASN1Boolean) { bool = ((ASN1Boolean) obj0).isTrue(); } else { // NOTE: keep it due BC <= 1.50 bool = ((DERBoolean) obj0).isTrue(); } val.append(bool ? TRUE : FALSE); } if (seq2.size() > 1) { val.append(", pathlen:".getBytes()); val.append(seq2.getObjectAt(1).toString().getBytes()); } return runtime.newString(val); } if (oid.equals("2.5.29.15")) { // keyUsage final byte[] enc = getRealValueEncoded(); byte b3 = 0; byte b2 = enc[2]; if (enc.length > 3) b3 = enc[3]; final ByteList val = new ByteList(64); byte[] sep = _; if ((b2 & (byte) 128) != 0) { val.append(sep); val.append(Decipher_Only); sep = SEP; } if ((b3 & (byte) 128) != 0) { val.append(sep); val.append(Digital_Signature); sep = SEP; } if ((b3 & (byte) 64) != 0) { val.append(sep); val.append(Non_Repudiation); sep = SEP; } if ((b3 & (byte) 32) != 0) { val.append(sep); val.append(Key_Encipherment); sep = SEP; } if ((b3 & (byte) 16) != 0) { val.append(sep); val.append(Data_Encipherment); sep = SEP; } if ((b3 & (byte) 8) != 0) { val.append(sep); val.append(Key_Agreement); sep = SEP; } if ((b3 & (byte) 4) != 0) { val.append(sep); val.append(Certificate_Sign); sep = SEP; } if ((b3 & (byte) 2) != 0) { val.append(sep); val.append(CRL_Sign); sep = SEP; } if ((b3 & (byte) 1) != 0) { val.append(sep); val.append(Encipher_Only); // sep = SEP; } return runtime.newString(val); } if (oid.equals("2.16.840.1.113730.1.1")) { // nsCertType final byte b0 = getRealValueEncoded()[0]; final ByteList val = new ByteList(64); byte[] sep = _; if ((b0 & (byte) 128) != 0) { val.append(sep); val.append(SSL_Client); sep = SEP; } if ((b0 & (byte) 64) != 0) { val.append(sep); val.append(SSL_Server); sep = SEP; } if ((b0 & (byte) 32) != 0) { val.append(sep); val.append(SMIME); sep = SEP; } if ((b0 & (byte) 16) != 0) { val.append(sep); val.append(Object_Signing); sep = SEP; } if ((b0 & (byte) 8) != 0) { val.append(sep); val.append(Unused); sep = SEP; } if ((b0 & (byte) 4) != 0) { val.append(sep); val.append(SSL_CA); sep = SEP; } if ((b0 & (byte) 2) != 0) { val.append(sep); val.append(SMIME_CA); sep = SEP; } if ((b0 & (byte) 1) != 0) { val.append(sep); val.append(Object_Signing_CA); } return runtime.newString(val); } if (oid.equals("2.5.29.14")) { // subjectKeyIdentifier ASN1Encodable value = getRealValue(); if (value instanceof ASN1OctetString) { byte[] octets = ((ASN1OctetString) value).getOctets(); if (octets.length > 0 && octets[0] == BERTags.OCTET_STRING) { value = ASN1.readObject(octets); // read nested octets } } return runtime.newString(hexBytes(keyidBytes(value.toASN1Primitive()), 0)); } if (oid.equals("2.5.29.35")) { // authorityKeyIdentifier ASN1Encodable value = getRealValue(); if (value instanceof ASN1OctetString) { value = ASN1.readObject(((ASN1OctetString) value).getOctets()); } final ByteList val = new ByteList(72); val.append(keyid_); if (value instanceof ASN1Sequence) { final ASN1Sequence seq = (ASN1Sequence) value; final int size = seq.size(); if (size == 0) return RubyString.newEmptyString(runtime); ASN1Primitive keyid = seq.getObjectAt(0).toASN1Primitive(); hexBytes(keyidBytes(keyid), val).append('\n'); for (int i = 1; i < size; i++) { final ASN1Encodable issuer = seq.getObjectAt(i); // NOTE: blindly got OpenSSL tests passing (likely in-complete) : if (issuer instanceof ASN1TaggedObject) { ASN1Primitive obj = ((ASN1TaggedObject) issuer).getObject(); switch (((ASN1TaggedObject) issuer).getTagNo()) { case 1: if (obj instanceof ASN1TaggedObject) { formatGeneralName(GeneralName.getInstance(obj), val, true); } break; case 2: // serial val.append(new byte[] { 's', 'e', 'r', 'i', 'a', 'l', ':' }); hexBytes(((ASN1OctetString) obj).getOctets(), val); break; } } val.append('\n'); } return runtime.newString(val); } hexBytes(keyidBytes(value.toASN1Primitive()), val).append('\n'); return runtime.newString(val); } if (oid.equals("2.5.29.21")) { // CRLReason final IRubyObject value = getValue(runtime); switch (RubyNumeric.fix2int(value)) { case 0: return runtime.newString(new ByteList(Unspecified)); case 1: return RubyString.newString(runtime, "Key Compromise"); case 2: return RubyString.newString(runtime, "CA Compromise"); case 3: return RubyString.newString(runtime, "Affiliation Changed"); case 4: return RubyString.newString(runtime, "Superseded"); case 5: return RubyString.newString(runtime, "Cessation Of Operation"); case 6: return RubyString.newString(runtime, "Certificate Hold"); case 8: return RubyString.newString(runtime, "Remove From CRL"); case 9: return RubyString.newString(runtime, "Privilege Withdrawn"); default: return runtime.newString(new ByteList(Unspecified)); } } if (oid.equals("2.5.29.17") || oid.equals("2.5.29.18")) { // subjectAltName || issuerAltName try { ASN1Encodable value = getRealValue(); final ByteList val = new ByteList(64); if (value instanceof ASN1TaggedObject) { formatGeneralName(GeneralName.getInstance(value), val, false); return runtime.newString(val); } if (value instanceof GeneralName) { formatGeneralName((GeneralName) value, val, false); return runtime.newString(val); } if (value instanceof ASN1OctetString) { // decoded octets will end up as an ASN1Sequence instance : value = ASN1.readObject(((ASN1OctetString) value).getOctets()); } if (value instanceof ASN1TaggedObject) { // DERTaggedObject (issuerAltName wrapping) formatGeneralName(GeneralName.getInstance(value), val, false); return runtime.newString(val); } final GeneralName[] names = GeneralNames.getInstance(value).getNames(); for (int i = 0; i < names.length; i++) { boolean other = formatGeneralName(names[i], val, false); if (i < names.length - 1) { if (other) val.append(';'); else val.append(','); } } return runtime.newString(val); } catch (IllegalArgumentException e) { debugStackTrace(runtime, e); return rawValueAsString(context); } } if (oid.equals("2.5.29.37")) { // extendedKeyUsage final ByteList val = new ByteList(64); if (this.value instanceof ASN1Sequence) { // opt "short" path final ASN1Sequence seq = (ASN1Sequence) this.value; final int size = seq.size(); for (int i = 0; i < size; i++) { ASN1Encodable o = seq.getObjectAt(i); String name = o.toString(); Integer nid = ASN1.oid2nid(runtime, new ASN1ObjectIdentifier(name)); if (nid != null) name = ASN1.nid2ln(runtime, nid); if (name == null) name = o.toString(); val.append(ByteList.plain(name)); if (i < size - 1) val.append(',').append(' '); } return runtime.newString(val); } final IRubyObject value = getValue(runtime); if (value instanceof RubyArray) { final RubyArray arr = (RubyArray) value; final int size = arr.size(); for (int i = 0; i < size; i++) { IRubyObject entry = arr.eltInternal(i); if ("ObjectId".equals(entry.getMetaClass().getBaseName())) { entry = entry.callMethod(context, "ln"); } else if (entry.respondsTo("value")) { entry = entry.callMethod(context, "value"); } val.append(entry.asString().getByteList()); if (i < size - 1) val.append(',').append(' '); } } return runtime.newString(val); } return rawValueAsString(context); } catch (IOException e) { debugStackTrace(runtime, e); throw newExtensionError(runtime, e); } }