code: public void updateDigest(MessageDigest message, ByteBuffer context)
      {
          ByteBuffer dup = context.duplicate();
          dup.position(context.position() + headerLength(context));
          message.update(dup);
      }
docs: Update a MessageDigest with the content of a context.
  Note that this skips the header entirely since the header information
  has local meaning only, while digests are meant for comparison across
  nodes. This means in particular that we always have:
  updateDigest(ctx) == updateDigest(clearAllLocal(ctx))