diff --git a/web/cashtab/package-lock.json b/web/cashtab/package-lock.json --- a/web/cashtab/package-lock.json +++ b/web/cashtab/package-lock.json @@ -5,6 +5,7 @@ "requires": true, "packages": { "": { + "name": "cashtab", "version": "1.0.0", "dependencies": { "@ant-design/icons": "^4.3.0", @@ -96,7 +97,7 @@ "webpack-manifest-plugin": "^4.0.2", "wif": "^2.0.6", "workbox-webpack-plugin": "^6.4.1", - "xecjs-message": "^1.0.5" + "xecjs-message": "^1.0.5-b" }, "devDependencies": { "husky": "^8.0.1", @@ -5353,8 +5354,6 @@ "version": "8.11.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "optional": true, - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -5369,9 +5368,7 @@ "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "optional": true, - "peer": true + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/ajv-keywords": { "version": "3.5.2", @@ -24496,13 +24493,14 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "requires": {}, + "requires": { + "ajv": "^8.0.0" + }, "dependencies": { "ajv": { - "version": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "optional": true, - "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -24513,9 +24511,7 @@ "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "optional": true, - "peer": true + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" } } }, @@ -34547,6 +34543,7 @@ "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", + "postcss": "^8.4.14", "postcss-import": "^14.1.0", "postcss-js": "^4.0.0", "postcss-load-config": "^3.1.4", diff --git a/web/cashtab/package.json b/web/cashtab/package.json --- a/web/cashtab/package.json +++ b/web/cashtab/package.json @@ -92,7 +92,7 @@ "webpack-manifest-plugin": "^4.0.2", "wif": "^2.0.6", "workbox-webpack-plugin": "^6.4.1", - "xecjs-message": "^1.0.5" + "xecjs-message": "^1.0.5-b" }, "scripts": { "start": "node scripts/start.js", diff --git a/web/cashtab/src/components/SignVerifyMsg/SignVerifyMsg.js b/web/cashtab/src/components/SignVerifyMsg/SignVerifyMsg.js --- a/web/cashtab/src/components/SignVerifyMsg/SignVerifyMsg.js +++ b/web/cashtab/src/components/SignVerifyMsg/SignVerifyMsg.js @@ -98,7 +98,7 @@ useState(false); const [messageVerificationSigError, setMessageVerificationSigError] = useState(false); - const signMessageByPk = () => { + const signMessageByPk = async () => { try { // First, get required params const keyPair = getECPairFromWIF(wallet.Path1899.fundingWif); @@ -109,6 +109,22 @@ .sign(msgToSign, privKey, keyPair.compressed) .toString('base64'); + // Also test the async function + let asyncSignature = await ( + await xecMessage.signAsync( + msgToSign, + privKey, + keyPair.compressed, + ) + ).toString('base64'); + + console.log(`sync sig`, messageSignature); + console.log(`asyncSignature`, asyncSignature); + + if (messageSignature === asyncSignature) { + console.log(`Both methods not broken`); + } + setMessageSignature(messageSignature); messageSignedNotification(messageSignature); } catch (err) { diff --git a/web/xecjs-message/CHANGELOG.md b/web/xecjs-message/CHANGELOG.md --- a/web/xecjs-message/CHANGELOG.md +++ b/web/xecjs-message/CHANGELOG.md @@ -33,3 +33,9 @@ **removed** - No changes. This is the first version published from the BitcoinABC monorepo. + +# 1.0.6 + +**removed** + +- All segwit support diff --git a/web/xecjs-message/index.js b/web/xecjs-message/index.js --- a/web/xecjs-message/index.js +++ b/web/xecjs-message/index.js @@ -4,11 +4,6 @@ const varuint = require('varuint-bitcoin'); const ecashaddr = require('ecashaddrjs'); -const SEGWIT_TYPES = { - P2WPKH: 'p2wpkh', - P2SH_P2WPKH: 'p2sh(p2wpkh)', -}; - function sha256(b) { return createHash('sha256').update(b).digest(); } @@ -19,13 +14,9 @@ return createHash('ripemd160').update(sha256(buffer)).digest(); } -function encodeSignature(signature, recovery, compressed, segwitType) { - if (segwitType !== undefined) { - recovery += 8; - if (segwitType === SEGWIT_TYPES.P2WPKH) recovery += 4; - } else { - if (compressed) recovery += 4; - } +function encodeSignature(signature, recovery, compressed) { + if (compressed) recovery += 4; + return Buffer.concat([Buffer.alloc(1, recovery + 27), signature]); } @@ -39,11 +30,6 @@ return { compressed: !!(flagByte & 12), - segwitType: !(flagByte & 8) - ? null - : !(flagByte & 4) - ? SEGWIT_TYPES.P2SH_P2WPKH - : SEGWIT_TYPES.P2WPKH, recovery: flagByte & 3, signature: buffer.slice(1), }; @@ -72,30 +58,10 @@ sigOptions = messagePrefixArg; messagePrefixArg = undefined; } - let { segwitType, extraEntropy } = sigOptions || {}; - if ( - segwitType && - (typeof segwitType === 'string' || segwitType instanceof String) - ) { - segwitType = segwitType.toLowerCase(); - } - if ( - segwitType && - segwitType !== SEGWIT_TYPES.P2SH_P2WPKH && - segwitType !== SEGWIT_TYPES.P2WPKH - ) { - throw new Error( - 'Unrecognized segwitType: use "' + - SEGWIT_TYPES.P2SH_P2WPKH + - '" or "' + - SEGWIT_TYPES.P2WPKH + - '"', - ); - } + let { extraEntropy } = sigOptions || {}; return { messagePrefixArg, - segwitType, extraEntropy, }; } @@ -105,7 +71,7 @@ } function sign(message, privateKey, compressed, messagePrefix, sigOptions) { - const { messagePrefixArg, segwitType, extraEntropy } = prepareSign( + const { messagePrefixArg, extraEntropy } = prepareSign( messagePrefix, sigOptions, ); @@ -113,19 +79,14 @@ const sigObj = isSigner(privateKey) ? privateKey.sign(hash, extraEntropy) : secp256k1.sign(hash, privateKey, { data: extraEntropy }); - return encodeSignature( - sigObj.signature, - sigObj.recovery, - compressed, - segwitType, - ); + return encodeSignature(sigObj.signature, sigObj.recovery, compressed); } function signAsync(message, privateKey, compressed, messagePrefix, sigOptions) { - let messagePrefixArg, segwitType, extraEntropy; + let messagePrefixArg, extraEntropy; return Promise.resolve() .then(() => { - ({ messagePrefixArg, segwitType, extraEntropy } = prepareSign( + ({ messagePrefixArg, extraEntropy } = prepareSign( messagePrefix, sigOptions, )); @@ -139,7 +100,6 @@ sigObj.signature, sigObj.recovery, compressed, - segwitType, ); }); } diff --git a/web/xecjs-message/package.json b/web/xecjs-message/package.json --- a/web/xecjs-message/package.json +++ b/web/xecjs-message/package.json @@ -1,6 +1,6 @@ { "name": "xecjs-message", - "version": "1.0.5", + "version": "1.0.5b", "description": "xecjs-message", "keywords": [ "xecjs-message",