package org.apache.haox.asn1;
public class TaggingOption
{
private int tagNo;
private boolean isImplicit;
private boolean isAppSpecific;
public static TaggingOption newImplicitAppSpecific(int tagNo) {
return new TaggingOption(tagNo, true, true);
}
public static TaggingOption newExplicitAppSpecific(int tagNo) {
return new TaggingOption(tagNo, false, true);
}
public static TaggingOption newImplicitContextSpecific(int tagNo) {
return new TaggingOption(tagNo, true, false);
}
public static TaggingOption newExplicitContextSpecific(int tagNo) {
return new TaggingOption(tagNo, false, false);
}
private TaggingOption(int tagNo, boolean isImplicit, boolean isAppSpecific) {
this.tagNo = tagNo;
this.isImplicit = isImplicit;
this.isAppSpecific = isAppSpecific;
}
public int tagFlags(boolean isTaggedConstructed) {
boolean isConstructed = isImplicit ? isTaggedConstructed : true;
TagClass tagClass = isAppSpecific ? TagClass.APPLICATION : TagClass.CONTEXT_SPECIFIC;
int flags = tagClass.getValue() | (isConstructed ? EncodingOption.CONSTRUCTED_FLAG : 0x00);
return flags;
}
public int getTagNo() {
return tagNo;
}
public boolean isAppSpecific() {
return isAppSpecific;
}
public boolean isImplicit() {
return isImplicit;
}
}