116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giropackage org.bouncycastle.asn1; 216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giroimport java.io.IOException; 416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 5bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro/** 6bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * Carrier class for a DER encoding OCTET STRING 7bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro */ 816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giropublic class DEROctetString 916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro extends ASN1OctetString 1016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro{ 1116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro /** 12bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * Base constructor. 13bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * 1416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro * @param string the octets making up the octet string. 1516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro */ 1616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro public DEROctetString( 1716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro byte[] string) 1816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro { 1916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro super(string); 2016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro } 2116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 22bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro /** 23bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * Constructor from the encoding of an ASN.1 object. 24bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * 25bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro * @param obj the object to be encoded. 26bdb7b3d37025690a0434040b4e0d0623d9fa74afSergio Giro */ 2716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro public DEROctetString( 2816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro ASN1Encodable obj) 2916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro throws IOException 3016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro { 3116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro super(obj.toASN1Primitive().getEncoded(ASN1Encoding.DER)); 3216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro } 3316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 3416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro boolean isConstructed() 3516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro { 3616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro return false; 3716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro } 3816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 3916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro int encodedLength() 4016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro { 4116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro return 1 + StreamUtil.calculateBodyLength(string.length) + string.length; 4216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro } 4316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 4416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro void encode( 4516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro ASN1OutputStream out) 4616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro throws IOException 4716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro { 4816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro out.writeEncoded(BERTags.OCTET_STRING, string); 4916f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro } 5016f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro 5116f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro static void encode( 5216f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro DEROutputStream derOut, 5316f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro byte[] bytes) 5416f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro throws IOException 5516f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro { 5616f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro derOut.writeEncoded(BERTags.OCTET_STRING, bytes); 5716f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro } 5816f9ee464b68937f45d009d9c1b0eb9b544a8deeSergio Giro} 59