Updated Bech32 and segwit operations so tests passed.
This commit is contained in:
parent
a6ed8705e5
commit
65bc1410f5
16407
package-lock.json
generated
16407
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
206
package.json
206
package.json
@ -1,207 +1,4 @@
|
|||||||
{
|
{
|
||||||
<<<<<<< HEAD
|
|
||||||
"name": "cyberchef",
|
|
||||||
"version": "10.19.2",
|
|
||||||
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
|
||||||
"author": "n1474335 <n1474335@gmail.com>",
|
|
||||||
"homepage": "https://gchq.github.io/CyberChef",
|
|
||||||
"copyright": "Crown copyright 2016",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"keywords": [
|
|
||||||
"cipher",
|
|
||||||
"cypher",
|
|
||||||
"encode",
|
|
||||||
"decode",
|
|
||||||
"encrypt",
|
|
||||||
"decrypt",
|
|
||||||
"base64",
|
|
||||||
"xor",
|
|
||||||
"charset",
|
|
||||||
"hex",
|
|
||||||
"encoding",
|
|
||||||
"format",
|
|
||||||
"cybersecurity",
|
|
||||||
"data manipulation",
|
|
||||||
"data analysis"
|
|
||||||
],
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/gchq/CyberChef/"
|
|
||||||
},
|
|
||||||
"main": "src/node/wrapper.js",
|
|
||||||
"exports": {
|
|
||||||
"import": "./src/node/index.mjs",
|
|
||||||
"require": "./src/node/wrapper.js"
|
|
||||||
},
|
|
||||||
"bugs": "https://github.com/gchq/CyberChef/issues",
|
|
||||||
"browserslist": [
|
|
||||||
"Chrome >= 50",
|
|
||||||
"Firefox >= 38",
|
|
||||||
"node >= 16"
|
|
||||||
],
|
|
||||||
"devDependencies": {
|
|
||||||
"@babel/core": "^7.24.7",
|
|
||||||
"@babel/eslint-parser": "^7.24.7",
|
|
||||||
"@babel/plugin-syntax-import-assertions": "^7.24.7",
|
|
||||||
"@babel/plugin-transform-runtime": "^7.24.7",
|
|
||||||
"@babel/preset-env": "^7.24.7",
|
|
||||||
"@babel/runtime": "^7.24.7",
|
|
||||||
"@codemirror/commands": "^6.6.0",
|
|
||||||
"@codemirror/language": "^6.10.2",
|
|
||||||
"@codemirror/search": "^6.5.6",
|
|
||||||
"@codemirror/state": "^6.4.1",
|
|
||||||
"@codemirror/view": "^6.28.0",
|
|
||||||
"autoprefixer": "^10.4.19",
|
|
||||||
"babel-loader": "^9.1.3",
|
|
||||||
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
||||||
"babel-plugin-transform-builtin-extend": "1.1.2",
|
|
||||||
"base64-loader": "^1.0.0",
|
|
||||||
"cli-progress": "^3.12.0",
|
|
||||||
"colors": "^1.4.0",
|
|
||||||
"copy-webpack-plugin": "^12.0.2",
|
|
||||||
"core-js": "^3.37.1",
|
|
||||||
"css-loader": "7.1.2",
|
|
||||||
"eslint": "^9.4.0",
|
|
||||||
"eslint-plugin-jsdoc": "^48.2.9",
|
|
||||||
"globals": "^15.4.0",
|
|
||||||
"grunt": "^1.6.1",
|
|
||||||
"grunt-chmod": "~1.1.1",
|
|
||||||
"grunt-concurrent": "^3.0.0",
|
|
||||||
"grunt-contrib-clean": "~2.0.1",
|
|
||||||
"grunt-contrib-connect": "^4.0.0",
|
|
||||||
"grunt-contrib-copy": "~1.0.0",
|
|
||||||
"grunt-contrib-watch": "^1.1.0",
|
|
||||||
"grunt-eslint": "^25.0.0",
|
|
||||||
"grunt-exec": "~3.0.0",
|
|
||||||
"grunt-webpack": "^6.0.0",
|
|
||||||
"grunt-zip": "^1.0.0",
|
|
||||||
"html-webpack-plugin": "^5.6.0",
|
|
||||||
"imports-loader": "^5.0.0",
|
|
||||||
"mini-css-extract-plugin": "2.9.0",
|
|
||||||
"modify-source-webpack-plugin": "^4.1.0",
|
|
||||||
"nightwatch": "^3.6.3",
|
|
||||||
"postcss": "^8.4.38",
|
|
||||||
"postcss-css-variables": "^0.19.0",
|
|
||||||
"postcss-import": "^16.1.0",
|
|
||||||
"postcss-loader": "^8.1.1",
|
|
||||||
"prompt": "^1.3.0",
|
|
||||||
"sitemap": "^8.0.0",
|
|
||||||
"terser": "^5.31.1",
|
|
||||||
"webpack": "^5.91.0",
|
|
||||||
"webpack-bundle-analyzer": "^4.10.2",
|
|
||||||
"webpack-dev-server": "5.0.4",
|
|
||||||
"webpack-node-externals": "^3.0.0",
|
|
||||||
"worker-loader": "^3.0.8"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@astronautlabs/amf": "^0.0.6",
|
|
||||||
"@babel/polyfill": "^7.12.1",
|
|
||||||
"@bitcoinerlab/secp256k1": "^1.1.1",
|
|
||||||
"@blu3r4y/lzma": "^2.3.3",
|
|
||||||
"@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
|
|
||||||
"@xmldom/xmldom": "^0.8.10",
|
|
||||||
"argon2-browser": "^1.18.0",
|
|
||||||
"arrive": "^2.4.1",
|
|
||||||
"avsc": "^5.7.7",
|
|
||||||
"bcryptjs": "^2.4.3",
|
|
||||||
"bignumber.js": "^9.1.2",
|
|
||||||
"bip32": "^5.0.0-rc.0",
|
|
||||||
"blakejs": "^1.2.1",
|
|
||||||
"bootstrap": "4.6.2",
|
|
||||||
"bootstrap-colorpicker": "^3.4.0",
|
|
||||||
"bootstrap-material-design": "^4.1.3",
|
|
||||||
"browserify-zlib": "^0.2.0",
|
|
||||||
"bson": "^4.7.2",
|
|
||||||
"buffer": "^6.0.3",
|
|
||||||
"cbor": "9.0.2",
|
|
||||||
"chi-squared": "^1.1.0",
|
|
||||||
"chromedriver": "^129.0.0",
|
|
||||||
"codepage": "^1.15.0",
|
|
||||||
"crypto-api": "^0.8.5",
|
|
||||||
"crypto-browserify": "^3.12.0",
|
|
||||||
"crypto-js": "^4.2.0",
|
|
||||||
"ctph.js": "0.0.5",
|
|
||||||
"d3": "7.9.0",
|
|
||||||
"d3-hexbin": "^0.2.2",
|
|
||||||
"diff": "^5.2.0",
|
|
||||||
"es6-promisify": "^7.0.0",
|
|
||||||
"escodegen": "^2.1.0",
|
|
||||||
"esprima": "^4.0.1",
|
|
||||||
"exif-parser": "^0.1.12",
|
|
||||||
"fernet": "^0.4.0",
|
|
||||||
"file-saver": "^2.0.5",
|
|
||||||
"flat": "^6.0.1",
|
|
||||||
"geodesy": "1.1.3",
|
|
||||||
"highlight.js": "^11.9.0",
|
|
||||||
"ieee754": "^1.2.1",
|
|
||||||
"jimp": "^0.22.12",
|
|
||||||
"jquery": "3.7.1",
|
|
||||||
"js-crc": "^0.2.0",
|
|
||||||
"js-sha3": "^0.9.3",
|
|
||||||
"jsesc": "^3.0.2",
|
|
||||||
"json5": "^2.2.3",
|
|
||||||
"jsonpath-plus": "^9.0.0",
|
|
||||||
"jsonwebtoken": "8.5.1",
|
|
||||||
"jsqr": "^1.4.0",
|
|
||||||
"jsrsasign": "^11.1.0",
|
|
||||||
"kbpgp": "2.1.15",
|
|
||||||
"libbzip2-wasm": "0.0.4",
|
|
||||||
"libyara-wasm": "^1.2.1",
|
|
||||||
"lodash": "^4.17.21",
|
|
||||||
"loglevel": "^1.9.1",
|
|
||||||
"loglevel-message-prefix": "^3.0.0",
|
|
||||||
"lz-string": "^1.5.0",
|
|
||||||
"lz4js": "^0.2.0",
|
|
||||||
"markdown-it": "^14.1.0",
|
|
||||||
"moment": "^2.30.1",
|
|
||||||
"moment-timezone": "^0.5.45",
|
|
||||||
"ngeohash": "^0.6.3",
|
|
||||||
"node-forge": "^1.3.1",
|
|
||||||
"node-md6": "^0.1.0",
|
|
||||||
"nodom": "^2.4.0",
|
|
||||||
"notepack.io": "^3.0.1",
|
|
||||||
"ntlm": "^0.1.3",
|
|
||||||
"nwmatcher": "^1.4.4",
|
|
||||||
"otp": "0.1.3",
|
|
||||||
"path": "^0.12.7",
|
|
||||||
"popper.js": "^1.16.1",
|
|
||||||
"process": "^0.11.10",
|
|
||||||
"protobufjs": "^7.3.1",
|
|
||||||
"qr-image": "^3.2.0",
|
|
||||||
"reflect-metadata": "^0.2.2",
|
|
||||||
"rison": "^0.1.1",
|
|
||||||
"scryptsy": "^2.1.0",
|
|
||||||
"snackbarjs": "^1.1.0",
|
|
||||||
"sortablejs": "^1.15.2",
|
|
||||||
"split.js": "^1.6.5",
|
|
||||||
"ssdeep.js": "0.0.3",
|
|
||||||
"stream-browserify": "^3.0.0",
|
|
||||||
"tesseract.js": "5.1.0",
|
|
||||||
"ua-parser-js": "^1.0.38",
|
|
||||||
"unorm": "^1.6.0",
|
|
||||||
"utf8": "^3.0.0",
|
|
||||||
"vkbeautify": "^0.99.3",
|
|
||||||
"xpath": "0.0.34",
|
|
||||||
"xregexp": "^5.1.1",
|
|
||||||
"zlibjs": "^0.3.1"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"start": "npx grunt dev",
|
|
||||||
"build": "npx grunt prod",
|
|
||||||
"node": "npx grunt node",
|
|
||||||
"repl": "node --experimental-modules --experimental-json-modules --experimental-specifier-resolution=node --no-experimental-fetch --no-warnings src/node/repl.mjs",
|
|
||||||
"test": "npx grunt configTests && node --experimental-modules --experimental-json-modules --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch tests/node/index.mjs && node --experimental-modules --experimental-json-modules --no-warnings --no-deprecation --openssl-legacy-provider --no-experimental-fetch --trace-uncaught tests/operations/index.mjs",
|
|
||||||
"testnodeconsumer": "npx grunt testnodeconsumer",
|
|
||||||
"testui": "npx grunt testui",
|
|
||||||
"testuidev": "npx nightwatch --env=dev",
|
|
||||||
"lint": "npx grunt lint",
|
|
||||||
"postinstall": "npx grunt exec:fixCryptoApiImports && npx grunt exec:fixSnackbarMarkup && npx grunt exec:fixJimpModule",
|
|
||||||
"newop": "node --experimental-modules --experimental-json-modules src/core/config/scripts/newOperation.mjs",
|
|
||||||
"minor": "node --experimental-modules --experimental-json-modules src/core/config/scripts/newMinorVersion.mjs",
|
|
||||||
"getheapsize": "node -e 'console.log(`node heap limit = ${require(\"v8\").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'",
|
|
||||||
"setheapsize": "export NODE_OPTIONS=--max_old_space_size=2048"
|
|
||||||
}
|
|
||||||
=======
|
|
||||||
"name": "cyberchef",
|
"name": "cyberchef",
|
||||||
"version": "10.22.1",
|
"version": "10.22.1",
|
||||||
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
"description": "The Cyber Swiss Army Knife for encryption, encoding, compression and data analysis.",
|
||||||
@ -297,6 +94,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astronautlabs/amf": "^0.0.6",
|
"@astronautlabs/amf": "^0.0.6",
|
||||||
|
"@bitcoinerlab/secp256k1": "^1.2.0",
|
||||||
"@blu3r4y/lzma": "^2.3.3",
|
"@blu3r4y/lzma": "^2.3.3",
|
||||||
"@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
|
"@wavesenterprise/crypto-gost-js": "^2.1.0-RC1",
|
||||||
"@xmldom/xmldom": "^0.8.11",
|
"@xmldom/xmldom": "^0.8.11",
|
||||||
@ -306,6 +104,7 @@
|
|||||||
"avsc": "^5.7.9",
|
"avsc": "^5.7.9",
|
||||||
"bcryptjs": "^2.4.3",
|
"bcryptjs": "^2.4.3",
|
||||||
"bignumber.js": "^9.3.1",
|
"bignumber.js": "^9.3.1",
|
||||||
|
"bip32": "^5.0.1",
|
||||||
"blakejs": "^1.2.1",
|
"blakejs": "^1.2.1",
|
||||||
"bootstrap": "4.6.2",
|
"bootstrap": "4.6.2",
|
||||||
"bootstrap-colorpicker": "^3.4.0",
|
"bootstrap-colorpicker": "^3.4.0",
|
||||||
@ -410,5 +209,4 @@
|
|||||||
"getheapsize": "node -e 'console.log(`node heap limit = ${require(\"v8\").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'",
|
"getheapsize": "node -e 'console.log(`node heap limit = ${require(\"v8\").getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`)'",
|
||||||
"setheapsize": "export NODE_OPTIONS=--max_old_space_size=2048"
|
"setheapsize": "export NODE_OPTIONS=--max_old_space_size=2048"
|
||||||
}
|
}
|
||||||
>>>>>>> origin
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -369,3 +369,31 @@ export function decode(str, encoding = "Auto-detect") {
|
|||||||
witnessVersion: witnessVersion
|
witnessVersion: witnessVersion
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exported function to test if a string is a valid Bech32 encoded item.
|
||||||
|
* @param {*} test_string
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
export function segwitChecksum(testString) {
|
||||||
|
try {
|
||||||
|
decode(testString);
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exported function to create an address given the specific data.
|
||||||
|
* @param {*} hrp
|
||||||
|
* @param {*} version
|
||||||
|
* @param {*} program
|
||||||
|
*/
|
||||||
|
export function encodeProgramToSegwit(hrp, version, program) {
|
||||||
|
const encoding = version > 0 ? "Bech32m": "Bech32";
|
||||||
|
return encode(hrp, program, encoding, true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@ -100,7 +100,7 @@ class PublicKeyToP2PKHAddress extends Operation {
|
|||||||
if (resultKey === -1) {
|
if (resultKey === -1) {
|
||||||
throw new OperationError("Error: Bad Public Key to turn into P2TR Address.");
|
throw new OperationError("Error: Bad Public Key to turn into P2TR Address.");
|
||||||
}
|
}
|
||||||
return encodeProgramToSegwit(hrp, 1, Utils.convertToByteArray(resultKey.slice(2,), "hex"));
|
return encodeProgramToSegwit(hrp, 1, Utils.convertToByteArray("01" + resultKey.slice(2,), "hex"));
|
||||||
} else {
|
} else {
|
||||||
// We hash the input
|
// We hash the input
|
||||||
const curInput = makeSureIsBytes(input);
|
const curInput = makeSureIsBytes(input);
|
||||||
@ -110,7 +110,7 @@ class PublicKeyToP2PKHAddress extends Operation {
|
|||||||
const redeemScript = hash160;
|
const redeemScript = hash160;
|
||||||
const hrp = getHumanReadablePart(args[0]);
|
const hrp = getHumanReadablePart(args[0]);
|
||||||
if (hrp !== "") {
|
if (hrp !== "") {
|
||||||
return encodeProgramToSegwit(hrp, 0, Utils.convertToByteArray(redeemScript, "hex"));
|
return encodeProgramToSegwit(hrp, 0, Utils.convertToByteArray("00" + redeemScript, "hex"));
|
||||||
} else {
|
} else {
|
||||||
throw new OperationError(args[0] + " does not support Segwit Addresses.");
|
throw new OperationError(args[0] + " does not support Segwit Addresses.");
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user