debug("encoded entry:\n" + Util.hexDump(encoded, ">>>> "));
if (Configuration.DEBUG) log.fine("encoded entry:\n" + Util.hexDump(encoded, ">>>> "));
  private void parse(int version, DERReader der) throws Exception  {    // RevokedCertificate ::= SEQUENCE {    DERValue entry = der.read();    debug("start CRL entry   len == " + entry.getLength());    if (!entry.isConstructed())      throw new IOException("malformed revokedCertificate");    encoded = entry.getEncoded();    int len = 0;    debug("encoded entry:\n" + Util.hexDump(encoded, ">>>> "));    //   userCertificate   CertificateSerialNumber,    DERValue val = der.read();    serialNo = (BigInteger) val.getValue();    len += val.getEncodedLength();    debug("userCertificate == " + serialNo + "  current count == " + len);    //   revocationDate   Time,    val = der.read();    revocationDate = (Date) val.getValue();    len += val.getEncodedLength();    debug("revocationDate == " + revocationDate + "  current count == " + len);    //   crlEntryExtensions   Extensions OPTIONAL    //                          -- if present MUST be v2    if (len < entry.getLength())      {        if (version < 2)          throw new IOException("extra data in CRL entry");        DERValue exts = der.read();        if (!exts.isConstructed())          throw new IOException("malformed Extensions");        debug("start Extensions  len == " + exts.getLength());        len = 0;        while (len < exts.getLength())          {            val = der.read();            if (!val.isConstructed())              throw new IOException("malformed Extension");            debug("start Extension  len == " + val.getLength());            Extension e = new Extension(val.getEncoded());            extensions.put(e.getOid(), e);            der.skip(val.getLength());            len += val.getEncodedLength();            debug("current count == " + len);          }      }  }