Class SET.Template

java.lang.Object
org.mozilla.jss.asn1.SET.Template
All Implemented Interfaces:
ASN1Template
Enclosing class:
SET

public static class SET.Template extends Object implements ASN1Template
SET.Template This class is used for decoding DER-encoded SETs.
  • Field Details

  • Constructor Details

    • Template

      public Template()
  • Method Details

    • addElement

      private void addElement(SET.Template.Element e)
    • insertElementAt

      private void insertElementAt(SET.Template.Element e, int index)
    • addElement

      public void addElement(ASN1Template t)
      Adds a sub-template to the end of this SET template. For example, if the ASN.1 included:
       MySet ::= SET {
            item        SubType,
            ... }
       
      the "item" element would be added to the MySet template with:
       mySet.addElement(new SubType.Template());
       
      Parameters:
      t - Sub-template.
    • insertElementAt

      public void insertElementAt(ASN1Template t, int index)
      Inserts the template at the given index.
      Parameters:
      t - Sub-template.
      index - Index.
    • addElement

      public void addElement(Tag implicit, ASN1Template t)
      Adds a sub-template with the given implicit tag to the end of this SET template. For example, if the ASN.1 included:
       MySet ::= SET {
            item        [0] IMPLICIT SubType,
            ... }
       
      the "item" element would be added to the MySet template with:
       mySet.addElement(new Tag(0), new SubType.Template());
       
      Parameters:
      implicit - Implicit tag.
      t - Sub-template.
    • insertElementAt

      public void insertElementAt(Tag implicit, ASN1Template t, int index)
      Inserts the template with the given implicit tag at the given index.
      Parameters:
      implicit - Implicit tag.
      t - Sub-template.
      index - Index.
    • addOptionalElement

      public void addOptionalElement(ASN1Template t)
      Adds an optional sub-template to the end of this SET template. For example, if the ASN.1 included:
       MySet ::= SET {
            item        SubType OPTIONAL,
            ... }
       
      the "item" element would be added to the MySet template with:
       mySet.addOptionalElement(new SubType.Template());
       
      Parameters:
      t - Optional sub-template.
    • insertOptionalElementAt

      public void insertOptionalElementAt(ASN1Template t, int index)
      Inserts the optional template at the given index.
      Parameters:
      t - Optional sub-template.
      index - Index.
    • addOptionalElement

      public void addOptionalElement(Tag implicit, ASN1Template t)
      Adds an optional sub-template with the given implicit tag to the end of this SET template. For example, if the ASN.1 included:
       MySet ::= SET {
            item        [0] IMPLICIT SubType OPTIONAL,
            ... }
       
      the "item" element would be added to the MySet template with:
       mySet.addOptionalElement(new Tag(0), new SubType.Template());
       
      Parameters:
      implicit - Implicit tag.
      t - Optional sub-template.
    • insertOptionalElementAt

      public void insertOptionalElementAt(Tag implicit, ASN1Template t, int index)
      Inserts the optional template with the given default value at the given index.
      Parameters:
      implicit - Implicit tag.
      t - Optional sub-template.
      index - Index.
    • addElement

      public void addElement(ASN1Template t, ASN1Value def)
      Adds a sub-template with the given default value to the end of this SET template. For example, if the ASN.1 included:
       MySet ::= SET {
            item        INTEGER DEFAULT (5),
            ... }
       
      the "item" element would be added to the MySet template with:
       mySet.addElement(new SubType.Template(), new INTEGER(5));
       
      Parameters:
      t - Sub-template.
      def - Default value.
    • insertElementAt

      public void insertElementAt(ASN1Template t, ASN1Value def, int index)
      Inserts the template with the given default value at the given index.
      Parameters:
      t - Sub-template.
      def - Default value.
      index - Index.
    • addElement

      public void addElement(Tag implicit, ASN1Template t, ASN1Value def)
      Adds a sub-template with the given default value and implicit tag to the end of this SET template. For example, if the ASN.1 included:
       MySet ::= SET {
            item        [0] IMPLICIT INTEGER DEFAULT (5),
            ... }
       
      the "item" element would be added to the MySet template with:
       mySet.addElement(new Tag(0), new SubType.Template(), new INTEGER(5));
       
      Parameters:
      implicit - Implicit tag.
      t - Sub-template.
      def - Default value.
    • insertElementAt

      public void insertElementAt(Tag implicit, ASN1Template t, ASN1Value def, int index)
      Inserts the template with the given implicit tag and given default value at the given index.
      Parameters:
      implicit - Implicit tag.
      t - Sub-template.
      def - Default value.
      index - Index.
    • implicitTagAt

      public Tag implicitTagAt(int index)
      Returns the implicit tag of the item stored at the given index. May be NULL if no implicit tag was specified.
      Parameters:
      index - Index.
      Returns:
      Implicit tag.
    • templateAt

      public ASN1Template templateAt(int index)
      Returns the sub-template stored at the given index.
      Parameters:
      index - Index.
      Returns:
      Sub-template.
    • isOptionalAt

      public boolean isOptionalAt(int index)
      Returns true if the sub-template at the given index is optional.
      Parameters:
      index - Index.
      Returns:
      True if sub-template is optional.
    • isRepeatableAt

      private boolean isRepeatableAt(int index)
    • defaultAt

      public ASN1Value defaultAt(int index)
      Returns the default value for the sub-template at the given index. May return NULL if no default value was specified.
      Parameters:
      index - Index.
      Returns:
      Default value.
    • size

      public int size()
      Returns:
      The number of elements in the SET.
    • removeAllElements

      public void removeAllElements()
    • removeElementAt

      public void removeElementAt(int index)
    • getTag

      private Tag getTag()
    • tagMatch

      public boolean tagMatch(Tag tag)
      Determines whether the given tag satisfies this template.
      Specified by:
      tagMatch in interface ASN1Template
      Parameters:
      tag - Tag.
      Returns:
      True if tag satisfies this template.
    • decode

      public ASN1Value decode(InputStream istream) throws IOException, InvalidBERException
      Decodes the input stream into a SET value.
      Specified by:
      decode in interface ASN1Template
      Parameters:
      istream - Input stream.
      Returns:
      Decoded SET value.
      Throws:
      IOException - If other error occurred.
      InvalidBERException - If there is an invalid BER encoding.
    • decode

      public ASN1Value decode(Tag tag, InputStream istream) throws IOException, InvalidBERException
      Decodes the input stream into a SET value with the given implicit tag.
      Specified by:
      decode in interface ASN1Template
      Parameters:
      tag - Implicit tag.
      istream - Input stream.
      Returns:
      Decoded SET value.
      Throws:
      IOException - If other error occurred.
      InvalidBERException - If there is an invalid BER encoding.
    • findElementByTag

      private int findElementByTag(Tag tag)
      Returns the index in the vector of the type with this tag and class, or -1 if not found. lame linear search - but we're dealing with small numbers of elements, so it's probably not worth it to use a hashtable
      Parameters:
      tag - Tag.