public class DerValue
extends java.lang.Object
All DER-encoded data are triples {type, length, data}. This class represents such tagged values as they have been read (or constructed), and provides structured access to the encoded data.
At this time, this class supports only a subset of the types of DER data encodings which are defined. That subset is sufficient for parsing most X.509 certificates, and working with selected additional formats (such as PKCS #10 certificate requests, and some kinds of PKCS #7 data).
Modifier and Type | Field and Description |
---|---|
protected org.mozilla.jss.netscape.security.util.DerInputBuffer |
buffer |
DerInputStream |
data
The DER-encoded data of the value.
|
byte |
tag
The DER tag of the value; one of the tag_ constants.
|
static byte |
TAG_APPLICATION |
static byte |
tag_BitString
Tag value indicating an ASN.1 "BIT STRING" value.
|
static byte |
tag_BMPString
Tag value indicating an ASN.1 "BMPString" value.
|
static byte |
tag_Boolean
Tag value indicating an ASN.1 "BOOLEAN" value.
|
static byte |
TAG_CONTEXT |
static byte |
tag_Enumerated
Tag value including an ASN.1 "ENUMERATED" value
|
static byte |
tag_GeneralizedTime
Tag value indicating an ASN.1 "GeneralizedTime" value.
|
static byte |
tag_GeneralString
Tag value indicating an ASN.1 "GeneralString" value.
|
static byte |
tag_IA5String
Tag value including an ASCII string
|
static byte |
tag_Integer
Tag value indicating an ASN.1 "INTEGER" value.
|
static byte |
tag_Null
Tag value indicating an ASN.1 "NULL" value.
|
static byte |
tag_ObjectId
Tag value indicating an ASN.1 "OBJECT IDENTIFIER" value.
|
static byte |
tag_OctetString
Tag value indicating an ASN.1 "OCTET STRING" value.
|
static byte |
tag_PrintableString
Tag value including a "printable" string
|
static byte |
TAG_PRIVATE |
static byte |
tag_Sequence
Tag value indicating an ASN.1
"SEQUENCE" (zero to N elements, order is significant).
|
static byte |
tag_SequenceOf
Tag value indicating an ASN.1
"SEQUENCE OF" (one to N elements, order is significant).
|
static byte |
tag_Set
Tag value indicating an ASN.1
"SET" (zero to N members, order does not matter).
|
static byte |
tag_SetOf
Tag value indicating an ASN.1
"SET OF" (one to N members, order does not matter).
|
static byte |
tag_T61String
Tag value including a "teletype" string
|
static byte |
TAG_UNIVERSAL
The tag class types
|
static byte |
tag_UniversalString
Tag value indicating an ASN.1 "UniversalString" value.
|
static byte |
tag_UtcTime
Tag value indicating an ASN.1 "UTCTime" value.
|
static byte |
tag_UTF8String
Tag value indicating an ASN.1 "UTF8String" value.
|
static byte |
tag_VisibleString |
static byte[] |
tags_DirectoryString |
Constructor and Description |
---|
DerValue(byte[] buf)
Get an ASN.1/DER encoded datum from a buffer.
|
DerValue(byte[] buf,
int offset,
int len)
Get an ASN.1/DER encoded datum from part of a buffer.
|
DerValue(byte tag,
byte[] data)
Creates a DerValue from a tag and some DER-encoded data.
|
DerValue(byte tag,
byte[] data,
int offset,
int length)
Creates a DerValue from a tag and some DER-encoded data.
|
DerValue(java.io.InputStream in)
Get an ASN1/DER encoded datum from an input stream.
|
DerValue(java.lang.String value)
Creates a DER value from a string
using a generic way of determining the proper tag for the string.
|
Modifier and Type | Method and Description |
---|---|
static byte |
createTag(byte tagClass,
boolean form,
byte val)
Create the tag of the attribute.
|
void |
encode(DerOutputStream out)
Encode an ASN1/DER encoded datum onto a DER output stream.
|
boolean |
equals(DerValue other)
Bitwise equality comparison.
|
boolean |
equals(java.lang.Object other)
Returns true iff the other object is a DER value which
is bitwise equal to this one.
|
java.lang.String |
getASN1CharString() |
java.lang.String |
getAsString()
Returns the name component as a Java string, regardless of its
encoding restrictions (ASCII, T61, Printable, etc).
|
byte[] |
getBitString()
Returns an ASN.1 BIT STRING value.
|
byte[] |
getBitString(boolean tagImplicit)
Returns an ASN.1 BIT STRING value, with the tag assumed implicit
based on the parameter.
|
java.lang.String |
getBMPString() |
boolean |
getBoolean()
Returns an ASN.1 BOOLEAN
|
java.lang.String |
getDirectoryString() |
int |
getEnumerated()
Returns an ASN.1 unsigned integer value of enumerated value.
|
java.lang.String |
getIA5String()
Returns an ASN.1 IA5 (ASCII) STRING value
|
BigInt |
getInteger()
Returns an ASN.1 unsigned INTEGER value.
|
BigInt |
getInteger(boolean tagImplicit)
Returns an ASN.1 unsigned INTEGER value, the parameter determining
if the tag is implicit.
|
byte[] |
getOctetString()
Returns an ASN.1 OCTET STRING
|
ObjectIdentifier |
getOID()
Returns an ASN.1 OBJECT IDENTIFIER.
|
java.lang.String |
getPrintableString()
Returns an ASN.1 STRING value
|
java.lang.String |
getT61String()
Returns an ASN.1 T61 (Teletype) STRING value
|
BitArray |
getUnalignedBitString()
Returns an ASN.1 BIT STRING value that need not be byte-aligned.
|
BitArray |
getUnalignedBitString(boolean tagImplicit)
Returns an ASN.1 BIT STRING value, with the tag assumed implicit
based on the parameter.
|
java.lang.String |
getUniversalString() |
java.lang.String |
getUTF8String() |
int |
hashCode() |
boolean |
isConstructed()
Returns true iff the CONSTRUCTED bit is set in the type tag.
|
boolean |
isContextSpecific()
Returns true iff the CONTEXT SPECIFIC bit is set in the type tag.
|
boolean |
isContextSpecific(byte cntxtTag)
Returns true iff the CONTEXT SPECIFIC TAG matches the passed tag.
|
int |
length()
Get the length of the encoded value.
|
void |
resetTag(byte tag)
Set the tag of the attribute.
|
byte[] |
toByteArray()
Returns a DER-encoded value, such that if it's passed to the
DerValue constructor, a value equivalent to "this" is returned.
|
DerInputStream |
toDerInputStream()
For "set" and "sequence" types, this function may be used
to return a DER stream of the members of the set or sequence.
|
java.lang.String |
toString()
Returns a printable representation of the value.
|
public static final byte TAG_UNIVERSAL
public static final byte TAG_APPLICATION
public static final byte TAG_CONTEXT
public static final byte TAG_PRIVATE
public byte tag
protected org.mozilla.jss.netscape.security.util.DerInputBuffer buffer
public DerInputStream data
public static final byte tag_Boolean
public static final byte tag_Integer
public static final byte tag_BitString
public static final byte tag_OctetString
public static final byte tag_Null
public static final byte tag_ObjectId
public static final byte tag_Enumerated
public static final byte tag_PrintableString
public static final byte tag_VisibleString
public static final byte tag_T61String
public static final byte tag_IA5String
public static final byte tag_UtcTime
public static final byte tag_GeneralizedTime
public static final byte tag_GeneralString
public static final byte tag_BMPString
public static final byte tag_UniversalString
public static final byte tag_UTF8String
public static final byte[] tags_DirectoryString
public static final byte tag_Sequence
public static final byte tag_SequenceOf
public static final byte tag_Set
public static final byte tag_SetOf
public DerValue(java.lang.String value) throws java.io.IOException
java.io.IOException
public DerValue(byte tag, byte[] data)
tag
- the DER type tagdata
- the DER-encoded datapublic DerValue(byte tag, byte[] data, int offset, int length)
tag
- the DER type tagdata
- the DER-encoded dataoffset
- offset of the datalength
- length of the datapublic DerValue(byte[] buf) throws java.io.IOException
buf
- buffer holding a single DER-encoded datum.java.io.IOException
public DerValue(byte[] buf, int offset, int len) throws java.io.IOException
buf
- the bufferoffset
- start point of the single DER-encoded dataumlen
- how many bytes are in the encoded datumjava.io.IOException
public DerValue(java.io.InputStream in) throws java.io.IOException
in
- the input stream holding a single DER datum,
which may be followed by additional datajava.io.IOException
public boolean isContextSpecific()
public boolean isContextSpecific(byte cntxtTag)
public boolean isConstructed()
public void encode(DerOutputStream out) throws java.io.IOException
java.io.IOException
public boolean getBoolean() throws java.io.IOException
java.io.IOException
public ObjectIdentifier getOID() throws java.io.IOException
java.io.IOException
public byte[] getOctetString() throws java.io.IOException
java.io.IOException
public int getEnumerated() throws java.io.IOException
java.io.IOException
public BigInt getInteger() throws java.io.IOException
java.io.IOException
public BigInt getInteger(boolean tagImplicit) throws java.io.IOException
tagImplicit
- if true, ignores the tag value as it is
assumed implicit.java.io.IOException
public byte[] getBitString() throws java.io.IOException
java.io.IOException
public BitArray getUnalignedBitString() throws java.io.IOException
java.io.IOException
public java.lang.String getAsString() throws java.io.IOException
java.io.IOException
public byte[] getBitString(boolean tagImplicit) throws java.io.IOException
tagImplicit
- if true, the tag is assumed implicit.java.io.IOException
public BitArray getUnalignedBitString(boolean tagImplicit) throws java.io.IOException
tagImplicit
- if true, the tag is assumed implicit.java.io.IOException
public java.lang.String getPrintableString() throws java.io.IOException
java.io.IOException
public java.lang.String getDirectoryString() throws java.io.IOException
java.io.IOException
public java.lang.String getASN1CharString() throws java.io.IOException
java.io.IOException
public java.lang.String getT61String() throws java.io.IOException
java.io.IOException
public java.lang.String getIA5String() throws java.io.IOException
java.io.IOException
public java.lang.String getBMPString() throws java.io.IOException
java.io.IOException
public java.lang.String getUniversalString() throws java.io.IOException
java.io.IOException
public java.lang.String getUTF8String() throws java.io.IOException
java.io.IOException
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
other
- the object being compared with this onepublic int hashCode()
hashCode
in class java.lang.Object
public boolean equals(DerValue other)
other
- the object being compared with this onepublic java.lang.String toString()
toString
in class java.lang.Object
public byte[] toByteArray() throws java.io.IOException
java.io.IOException
public DerInputStream toDerInputStream() throws java.io.IOException
java.io.IOException
public int length()
public static byte createTag(byte tagClass, boolean form, byte val)
tagClass
- the tag class type, one of UNIVERSAL, CONTEXT,
APPLICATION or PRIVATEform
- if true, the value is constructed, otherwise it
is primitive.val
- the tag valuepublic void resetTag(byte tag)
tag
- the tag value