code: public byte[] getOctetString() throws IOException {
          byte[] bytes;
  
          if (tag != tag_OctetString && !isConstructed(tag_OctetString)) {
              throw new IOException(
                  "DerValue.getOctetString, not an Octet String: " + tag);
          }
          bytes = new byte[length];
          // Note: do not tempt to call buffer.read(bytes) at all. There's a
          // known bug that it returns -1 instead of 0.
          if (length == 0) {
              return bytes;
          }
          if (buffer.read(bytes) != length)
              throw new IOException("short read on DerValue buffer");
          if (isConstructed()) {
              DerInputStream in = new DerInputStream(bytes);
              bytes = null;
              while (in.available() != 0) {
                  bytes = append(bytes, in.getOctetString());
              }
          }
          return bytes;
      }
docs: Returns an ASN.1 OCTET STRING
  
  @return the octet string held in this DER value