code: private void parseDER(DerInputStream in) throws IOException {
          //
          // X.500 names are a "SEQUENCE OF" RDNs, which means zero or
          // more and order matters.  We scan them in order, which
          // conventionally is big-endian.
          //
          DerValue[] nameseq = null;
          byte[] derBytes = in.toByteArray();
  
          try {
              nameseq = in.getSequence(5);
          } catch (IOException ioe) {
              if (derBytes == null) {
                  nameseq = null;
              } else {
                  DerValue derVal = new DerValue(DerValue.tag_Sequence,
                                             derBytes);
                  derBytes = derVal.toByteArray();
                  nameseq = new DerInputStream(derBytes).getSequence(5);
              }
          }
  
          if (nameseq == null) {
              names = new RDN[0];
          } else {
              names = new RDN[nameseq.length];
              for (int i = 0; i < nameseq.length; i++) {
                  names[i] = new RDN(nameseq[i]);
              }
          }
      }
docs: *************************************************************