blob: fef2a2e46406fd30f213b14b7051669620281c83 [file] [log] [blame]
/*
* Copyright (c) 2000 - 2006 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
* software and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy, modify,
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be included in all copies
* or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
* FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
*/
package org.apache.directory.shared.asn1.der;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
/**
* DER Application Specific object.
*/
public class DERApplicationSpecific extends DERObject
{
private int tag;
/**
* Basic DERObject constructor.
*/
public DERApplicationSpecific(int tag, byte[] value)
{
super( tag, value );
this.tag = tag;
}
/**
* Static factory method, type-conversion operator.
*/
public static DERApplicationSpecific valueOf( int tag, DEREncodable object ) throws IOException
{
tag = tag | CONSTRUCTED;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ASN1OutputStream aos = new ASN1OutputStream( baos );
aos.writeObject( object );
return new DERApplicationSpecific( tag, baos.toByteArray() );
}
public int getApplicationTag()
{
return tag & 0x1F;
}
public DEREncodable getObject() throws IOException
{
return new ASN1InputStream( getOctets() ).readObject();
}
public void encode( ASN1OutputStream out ) throws IOException
{
out.writeEncoded( APPLICATION | tag, value );
}
}