@Override public void startSet() throws ASN1Exception { readTag(SET_TYPE); int length = readLength(); states.add(new DecoderState(SET_TYPE, bi.getIndex() + length)); }
@Override public boolean hasNextElement() { DecoderState lastState = states.peekLast(); boolean hasNext; if (lastState != null) { hasNext = ((bi.getIndex() < lastState.getNextElementIndex()) && hasCompleteElement()); } else { hasNext = hasCompleteElement(); } return hasNext; }
@Override public boolean hasNextElement() { DecoderState lastState = states.peekLast(); boolean hasNext; if (lastState != null) { hasNext = ((bi.getIndex() < lastState.getNextElementIndex()) && hasCompleteElement()); } else { hasNext = hasCompleteElement(); } return hasNext; }
@Override public void startSet() throws ASN1Exception { readTag(SET_TYPE); int length = readLength(); states.add(new DecoderState(SET_TYPE, bi.getIndex() + length)); }
@Override public void endSet() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() != SET_TYPE)) { throw log.noSetToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public void endSequence() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() != SEQUENCE_TYPE)) { throw log.noSequenceToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public boolean hasNextElement() { DecoderState lastState = states.peekLast(); boolean hasNext; if (lastState != null) { hasNext = ((bi.getIndex() < lastState.getNextElementIndex()) && hasCompleteElement()); } else { hasNext = hasCompleteElement(); } return hasNext; }
@Override public void startSequence() throws ASN1Exception { readTag(SEQUENCE_TYPE); int length = readLength(); states.add(new DecoderState(SEQUENCE_TYPE, bi.getIndex() + length)); }
@Override public void startExplicit(int clazz, int number) throws ASN1Exception { int explicitTag = clazz | CONSTRUCTED_MASK | number; readTag(explicitTag); int length = readLength(); states.add(new DecoderState(explicitTag, bi.getIndex() + length)); }
@Override public void startSequence() throws ASN1Exception { readTag(SEQUENCE_TYPE); int length = readLength(); states.add(new DecoderState(SEQUENCE_TYPE, bi.getIndex() + length)); }
@Override public void endExplicit() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() == SEQUENCE_TYPE) || (lastState.getTag() == SET_TYPE) || ((lastState.getTag() & CONSTRUCTED_MASK) == 0)) { throw log.noExplicitlyTaggedElementToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public void startExplicit(int clazz, int number) throws ASN1Exception { int explicitTag = clazz | CONSTRUCTED_MASK | number; readTag(explicitTag); int length = readLength(); states.add(new DecoderState(explicitTag, bi.getIndex() + length)); }
@Override public void endSet() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() != SET_TYPE)) { throw log.noSetToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public void endSequence() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() != SEQUENCE_TYPE)) { throw log.noSequenceToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public void endSet() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() != SET_TYPE)) { throw log.noSetToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public void startExplicit(int clazz, int number) throws ASN1Exception { int explicitTag = clazz | CONSTRUCTED_MASK | number; readTag(explicitTag); int length = readLength(); states.add(new DecoderState(explicitTag, bi.getIndex() + length)); }
@Override public void startSet() throws ASN1Exception { readTag(SET_TYPE); int length = readLength(); states.add(new DecoderState(SET_TYPE, bi.getIndex() + length)); }
@Override public void startSequence() throws ASN1Exception { readTag(SEQUENCE_TYPE); int length = readLength(); states.add(new DecoderState(SEQUENCE_TYPE, bi.getIndex() + length)); }
@Override public void endExplicit() throws ASN1Exception { DecoderState lastState = states.peekLast(); if ((lastState == null) || (lastState.getTag() == SEQUENCE_TYPE) || (lastState.getTag() == SET_TYPE) || ((lastState.getTag() & CONSTRUCTED_MASK) == 0)) { throw log.noExplicitlyTaggedElementToEnd(); } endConstructedElement(lastState.getNextElementIndex()); states.removeLast(); }
@Override public void startSet() throws ASN1Exception { readTag(SET_TYPE); int length = readLength(); states.add(new DecoderState(SET_TYPE, bi.getIndex() + length)); }