Files
js-scripts/components/component-hashjs.js
2025-04-04 17:19:07 +08:00

49 lines
1.4 KiB
JavaScript

var COMMENT_HASH_TAG = '//HASH:';
var CollectionUtil = Packages.me.hatter.tools.commons.collection.CollectionUtil;
var __containsCommentHashTag = (list) => {
for (var i = (list.size() - 1); i >= 0; i--) {
var l = list.get(i);
if ($STR(l.trim()) != '') {
return l.startsWith(COMMENT_HASH_TAG);
}
}
return false;
};
var __getDigestJSON = (list) => {
var digestJSON = null;
if (__containsCommentHashTag(list)) {
var last = CollectionUtil.last(list);
while ((list.size() > 0) && ($STR(last.trim()) == '')) { CollectionUtil.removeLast(list); last = CollectionUtil.last(list); }
if (last.startsWith(COMMENT_HASH_TAG)) {
CollectionUtil.removeLast(list);
digestJSON = JSON.parse(last.substring(COMMENT_HASH_TAG.length));
}
}
return digestJSON;
};
var __calcSHA256Hex = (list) => {
return $STR($$.digests().sha256().digest($$.bytes($ARR(list).join('\n'))).asHex());
};
var __checkSHA256 = (list) => {
var digestJSON = __getDigestJSON(list);
return digestJSON && (digestJSON.SHA256 == __calcSHA256Hex(list));
};
var checkBytesSHA256 = (bytes) => {
return __checkSHA256(bytes.list());
};
if (typeof exports == 'object') {
exports.__containsCommentHashTag = __containsCommentHashTag;
exports.__getDigestJSON = __getDigestJSON;
exports.__calcSHA256Hex = __calcSHA256Hex;
exports.__checkSHA256 = __checkSHA256;
exports.COMMENT_HASH_TAG = COMMENT_HASH_TAG;
exports.checkBytesSHA256 = checkBytesSHA256;
}