public long getIndex() { return iter.getIndex(); } }
public long getIndex() { return iter.getIndex() * 2 + (lo ? 1 : 0); } }
public long getIndex() { return iter.getIndex(); } }
public long getIndex() { return iter.getIndex() - start; } }
/** * Get this byte iterator as a Latin-1 string. * * @return the code point iterator */ public CodePointIterator asLatin1String() { if (! hasNext()) { return CodePointIterator.EMPTY; } return new Latin1DecodingIterator(this, getIndex()); }
@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)); }
private void readTag(int expectedTag) throws ASN1Exception { if (implicitTag != -1) { expectedTag = implicitTag | (expectedTag & CONSTRUCTED_MASK); implicitTag = -1; } long currOffset = bi.getIndex(); int actualTag = readTag(); if (actualTag != expectedTag) { while ((bi.getIndex() != currOffset) && bi.hasPrevious()) { bi.previous(); } throw log.asnUnexpectedTag(); } }
@Override public void startSet() throws ASN1Exception { readTag(SET_TYPE); int length = readLength(); states.add(new DecoderState(SET_TYPE, bi.getIndex() + length)); }
@Override public byte[] drainElement() throws ASN1Exception { if (implicitTag != -1) { implicitTag = -1; } long currOffset = bi.getIndex(); readTag(); int valueLength = readLength(); int length = (int) ((bi.getIndex() - currOffset) + valueLength); while ((bi.getIndex() != currOffset) && bi.hasPrevious()) { bi.previous(); } byte[] element = new byte[length]; if ((length != 0) && (bi.drain(element) != length)) { throw log.asnUnexpectedEndOfInput(); } return element; }
private void endConstructedElement(long nextElementIndex) throws ASN1Exception { long pos = bi.getIndex(); if (pos < nextElementIndex) { // Any elements in this constructed element that have not yet been read will be discarded int i; for (i = 0; i < (nextElementIndex - pos) && bi.hasNext(); i++) { bi.next(); } if (i != (nextElementIndex - pos)) { throw log.asnUnexpectedEndOfInput(); } } else if (pos > nextElementIndex) { // Shouldn't happen throw new IllegalStateException(); } }
private boolean hasCompleteElement() { boolean hasNext; long currOffset = bi.getIndex(); try { readTag(); int length = readLength(); int i; for (i = 0; (i < length) && bi.hasNext(); i++) { bi.next(); } hasNext = (i == length); } catch (ASN1Exception e) { hasNext = false; } while ((bi.getIndex() != currOffset) && bi.hasPrevious()) { bi.previous(); } 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; }
final int initialPartIndex = (int) bi.getIndex();
final int proofOffset = (int) bi.getIndex();
@Override public void startSequence() throws ASN1Exception { readTag(SEQUENCE_TYPE); int length = readLength(); states.add(new DecoderState(SEQUENCE_TYPE, 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 startSet() throws ASN1Exception { readTag(SET_TYPE); int length = readLength(); states.add(new DecoderState(SET_TYPE, bi.getIndex() + length)); }