org.mozilla.jss.asn1

Class BIT_STRING

public class BIT_STRING extends Object implements ASN1Value

An ASN.1 BIT STRING, which is an ordered sequence of bits. The bits are stored the same way they are encoded in BER: as an array of bytes with 0-7 unused bits at the end.
Nested Class Summary
static classBIT_STRING.Template
A class for decoding a BIT_STRING from its BER encoding.
Field Summary
static FormFORM
static TagTAG
Constructor Summary
BIT_STRING(byte[] bits, int padCount)
BIT_STRING(BitSet bs, int numBits)
Constructs a BIT_STRING from a BitSet.
Method Summary
voidencode(OutputStream ostream)
voidencode(Tag implicitTag, OutputStream ostream)
byte[]getBits()
Returns the bits packed into an array of bytes, with padding at the end.
intgetPadCount()
Returns the number of padding bits at the end of the array.
booleangetRemoveTrailingZeroes()
Determines whether the DER-encoding of this bitstring will have its trailing zeroes removed.
TaggetTag()
static BIT_STRING.TemplategetTemplate()
voidsetRemoveTrailingZeroes(boolean removeTrailingZeroes)
Determines whether the DER-encoding of this bitstring will have its trailing zeroes removed.
BitSettoBitSet()
Copies this BIT STRING into a Java BitSet.
boolean[]toBooleanArray()
Copies this BIT STRING into a boolean array.

Field Detail

FORM

public static final Form FORM

TAG

public static final Tag TAG

Constructor Detail

BIT_STRING

public BIT_STRING(byte[] bits, int padCount)

Parameters: bits The bits packed into an array of bytes, with padding at the end. The array may be empty (but not null), in which case padCount must be zero. The array is referenced, not cloned. padCount The number of padding bits at the end of the array. Must be in the range [0,7].

Throws: NumberFormatException If padCount is not in the range [0,7], or bits is empty and padCount is non-zero.

BIT_STRING

public BIT_STRING(BitSet bs, int numBits)
Constructs a BIT_STRING from a BitSet.

Parameters: bs A BitSet. numBits The number of bits to copy from the BitSet. This is necessary because the size of a BitSet is always padded up to a multiple of 64, but not all of these bits may be significant.

Throws: NumberFormatException If numBits is larger than bs.size() or less than zero.

Method Detail

encode

public void encode(OutputStream ostream)

encode

public void encode(Tag implicitTag, OutputStream ostream)

getBits

public byte[] getBits()
Returns the bits packed into an array of bytes, with padding at the end. The array may be empty (but not null), in which case padCount must be zero. The array is referenced, not cloned.

getPadCount

public int getPadCount()
Returns the number of padding bits at the end of the array. Must be in the range [0,7].

getRemoveTrailingZeroes

public boolean getRemoveTrailingZeroes()
Determines whether the DER-encoding of this bitstring will have its trailing zeroes removed. Generally, DER requires that trailing zeroes be removed when the bitstring is used to hold flags, but not when it is used to hold binary data (such as a public key). The default is false.

getTag

public Tag getTag()

getTemplate

public static BIT_STRING.Template getTemplate()

setRemoveTrailingZeroes

public void setRemoveTrailingZeroes(boolean removeTrailingZeroes)
Determines whether the DER-encoding of this bitstring will have its trailing zeroes removed. Generally, DER requires that trailing zeroes be removed when the bitstring is used to hold flags, but not when it is used to hold binary data (such as a public key). The default is false. If this bit string is used to hold flags, you should set this to true.

toBitSet

public BitSet toBitSet()
Copies this BIT STRING into a Java BitSet. Note that BitSet.size() will not accurately reflect the number of bits in the BIT STRING, because the size of a BitSet is always rounded up to the next multiple of 64. The extra bits will be set to 0.

toBooleanArray

public boolean[] toBooleanArray()
Copies this BIT STRING into a boolean array. Each element of the array represents one bit with true for 1 and false for 0.