in jsign-core/src/main/java/net/jsign/mscab/CFHeader.java [179:201]
public void headerDigestUpdate(MessageDigest digest) {
ByteBuffer buffer = ByteBuffer.allocate(BASE_SIZE).order(ByteOrder.LITTLE_ENDIAN);
buffer.put(this.signature);
buffer.putInt((int) this.cbCabinet);
buffer.putInt((int) this.csumFolders);
buffer.putInt((int) this.coffFiles);
buffer.putInt((int) this.csumFiles);
buffer.put(this.versionMinor);
buffer.put(this.versionMajor);
buffer.putShort((short) this.cFolders);
buffer.putShort((short) this.cFiles);
buffer.putShort((short) this.flags);
buffer.putShort((short) this.setID);
buffer.putShort((short) this.iCabinet);
buffer.flip();
digest.update(buffer);
if (this.abReserved != null) {
digest.update(abReserved, 0, 2); // 0x0000
}
}