PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/@bitgo/sdk-coin-ada/dist/src/lib/messages/cip8
Просмотр файла: utils.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.bytesToHex = bytesToHex;
exports.createCSLSigStructure = createCSLSigStructure;
exports.constructCSLCoseObjects = constructCSLCoseObjects;
exports.coseObjectsOutputToBuffer = coseObjectsOutputToBuffer;
exports.bufferToCoseObjectsOutput = bufferToCoseObjectsOutput;
const buffer_1 = require("buffer");
const cbor_1 = require("cbor");
// Helper function to convert a Uint8Array or Buffer to a hex string
function bytesToHex(bytes) {
return buffer_1.Buffer.from(bytes).toString('hex');
}
/**
* Creates the CSL signature structure for off-chain message signing.
*
* @param addressCborBytes - The CBOR bytes of the CSL address.
* @param message - The message to be signed.
* @returns An object containing the signature structure CBOR bytes, protected header CBOR bytes, and payload bytes.
*/
function createCSLSigStructure(addressCborBytes, message) {
// Payload
const payloadBytes = buffer_1.Buffer.from(message, 'utf-8');
// Protected Header
const protectedHeaderMap = new Map();
protectedHeaderMap.set(1, -8); // Algorithm ID: EdDSA
protectedHeaderMap.set('address', buffer_1.Buffer.from(addressCborBytes));
const protectedHeaderCborBytes = cbor_1.Encoder.encode(protectedHeaderMap);
// Sig_structure
const sigStructureArray = [
'Signature1',
buffer_1.Buffer.from(protectedHeaderCborBytes),
buffer_1.Buffer.from([]), // Empty external_aad
buffer_1.Buffer.from(payloadBytes),
];
const sigStructureCborBytes = cbor_1.Encoder.encode(sigStructureArray);
return { sigStructureCborBytes, protectedHeaderCborBytes, payloadBytes };
}
// COSE objects construction function
function constructCSLCoseObjects(protectedHeaderCborBytes, payloadBytes, cslSignatureBytes, paymentPubKey) {
// COSE_Sign1 Construction
const unprotectedHeadersMap = new Map();
unprotectedHeadersMap.set('hashed', false);
const coseSign1Array = [
buffer_1.Buffer.from(protectedHeaderCborBytes),
unprotectedHeadersMap,
buffer_1.Buffer.from(payloadBytes),
buffer_1.Buffer.from(cslSignatureBytes),
];
const finalCoseSign1CborBytes = cbor_1.Encoder.encode(coseSign1Array);
/* // directly encoding the coseSign1Array without prepending the 0xD2 tag.
* const coseSign1PayloadBytes = Encoder.encode(coseSign1Array);
* const coseSign1Tag = Buffer.from([0xD2]); // Tag 18 for COSE_Sign1
* const finalCoseSign1CborBytes = Buffer.concat([coseSign1Tag, coseSign1PayloadBytes]);
*/
const manualCoseSign1Hex = bytesToHex(finalCoseSign1CborBytes);
// COSE_Key Construction
const coseKeyMap = new Map();
coseKeyMap.set(1, 1); // kty: OKP (Octet Key Pair)
coseKeyMap.set(3, -8); // alg: EdDSA
coseKeyMap.set(-1, 6); // crv: Ed25519
coseKeyMap.set(-2, buffer_1.Buffer.from(paymentPubKey.as_bytes())); // x: public_key_bytes (Ed25519 public key)
const finalCoseKeyCborBytes = cbor_1.Encoder.encode(coseKeyMap);
const manualCoseKeyHex = bytesToHex(finalCoseKeyCborBytes);
return { manualCoseSign1Hex, manualCoseKeyHex };
}
function coseObjectsOutputToBuffer(output) {
return buffer_1.Buffer.from(cbor_1.Encoder.encode(output));
}
async function bufferToCoseObjectsOutput(buffer) {
return await cbor_1.Decoder.decodeFirst(buffer);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL21lc3NhZ2VzL2NpcDgvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQSxnQ0FFQztBQW9CRCxzREFvQkM7QUFHRCwwREFpQ0M7QUFFRCw4REFFQztBQUVELDhEQUVDO0FBM0ZELG1DQUFnQztBQUVoQywrQkFBd0M7QUFFeEMsb0VBQW9FO0FBQ3BFLFNBQWdCLFVBQVUsQ0FBQyxLQUEwQjtJQUNuRCxPQUFPLGVBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFhRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxnQkFBNEIsRUFBRSxPQUFlO0lBQ2pGLFVBQVU7SUFDVixNQUFNLFlBQVksR0FBRyxlQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVuRCxtQkFBbUI7SUFDbkIsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBd0IsQ0FBQztJQUMzRCxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxzQkFBc0I7SUFDckQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxlQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLHdCQUF3QixHQUFHLGNBQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVwRSxnQkFBZ0I7SUFDaEIsTUFBTSxpQkFBaUIsR0FBVTtRQUMvQixZQUFZO1FBQ1osZUFBTSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUNyQyxlQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQjtRQUN0QyxlQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztLQUMxQixDQUFDO0lBQ0YsTUFBTSxxQkFBcUIsR0FBRyxjQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFFaEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHdCQUF3QixFQUFFLFlBQVksRUFBRSxDQUFDO0FBQzNFLENBQUM7QUFFRCxxQ0FBcUM7QUFDckMsU0FBZ0IsdUJBQXVCLENBQ3JDLHdCQUFvQyxFQUNwQyxZQUFvQixFQUNwQixpQkFBNkIsRUFDN0IsYUFBNEI7SUFFNUIsMEJBQTBCO0lBQzFCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQUNyRCxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLE1BQU0sY0FBYyxHQUFVO1FBQzVCLGVBQU0sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDckMscUJBQXFCO1FBQ3JCLGVBQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ3pCLGVBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7S0FDL0IsQ0FBQztJQUNGLE1BQU0sdUJBQXVCLEdBQUcsY0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMvRDs7OztPQUlHO0lBQ0gsTUFBTSxrQkFBa0IsR0FBRyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUUvRCx3QkFBd0I7SUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxHQUFHLEVBQWUsQ0FBQztJQUMxQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLDRCQUE0QjtJQUNsRCxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYTtJQUNwQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZTtJQUN0QyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLDJDQUEyQztJQUN0RyxNQUFNLHFCQUFxQixHQUFHLGNBQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUUzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztBQUNsRCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsTUFBNEI7SUFDcEUsT0FBTyxlQUFNLENBQUMsSUFBSSxDQUFDLGNBQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRU0sS0FBSyxVQUFVLHlCQUF5QixDQUFDLE1BQWM7SUFDNUQsT0FBTyxNQUFNLGNBQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgKiBhcyBDU0wgZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgeyBEZWNvZGVyLCBFbmNvZGVyIH0gZnJvbSAnY2Jvcic7XG5cbi8vIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgVWludDhBcnJheSBvciBCdWZmZXIgdG8gYSBoZXggc3RyaW5nXG5leHBvcnQgZnVuY3Rpb24gYnl0ZXNUb0hleChieXRlczogVWludDhBcnJheSB8IEJ1ZmZlcik6IHN0cmluZyB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShieXRlcykudG9TdHJpbmcoJ2hleCcpO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENTTFNpZ1N0cnVjdHVyZU91dHB1dCB7XG4gIHNpZ1N0cnVjdHVyZUNib3JCeXRlczogVWludDhBcnJheTtcbiAgcHJvdGVjdGVkSGVhZGVyQ2JvckJ5dGVzOiBVaW50OEFycmF5O1xuICBwYXlsb2FkQnl0ZXM6IEJ1ZmZlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDU0xDb3NlT2JqZWN0c091dHB1dCB7XG4gIG1hbnVhbENvc2VTaWduMUhleDogc3RyaW5nO1xuICBtYW51YWxDb3NlS2V5SGV4OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgQ1NMIHNpZ25hdHVyZSBzdHJ1Y3R1cmUgZm9yIG9mZi1jaGFpbiBtZXNzYWdlIHNpZ25pbmcuXG4gKlxuICogQHBhcmFtIGFkZHJlc3NDYm9yQnl0ZXMgLSBUaGUgQ0JPUiBieXRlcyBvZiB0aGUgQ1NMIGFkZHJlc3MuXG4gKiBAcGFyYW0gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGJlIHNpZ25lZC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzaWduYXR1cmUgc3RydWN0dXJlIENCT1IgYnl0ZXMsIHByb3RlY3RlZCBoZWFkZXIgQ0JPUiBieXRlcywgYW5kIHBheWxvYWQgYnl0ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDU0xTaWdTdHJ1Y3R1cmUoYWRkcmVzc0Nib3JCeXRlczogVWludDhBcnJheSwgbWVzc2FnZTogc3RyaW5nKTogQ1NMU2lnU3RydWN0dXJlT3V0cHV0IHtcbiAgLy8gUGF5bG9hZFxuICBjb25zdCBwYXlsb2FkQnl0ZXMgPSBCdWZmZXIuZnJvbShtZXNzYWdlLCAndXRmLTgnKTtcblxuICAvLyBQcm90ZWN0ZWQgSGVhZGVyXG4gIGNvbnN0IHByb3RlY3RlZEhlYWRlck1hcCA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBhbnk+KCk7XG4gIHByb3RlY3RlZEhlYWRlck1hcC5zZXQoMSwgLTgpOyAvLyBBbGdvcml0aG0gSUQ6IEVkRFNBXG4gIHByb3RlY3RlZEhlYWRlck1hcC5zZXQoJ2FkZHJlc3MnLCBCdWZmZXIuZnJvbShhZGRyZXNzQ2JvckJ5dGVzKSk7XG4gIGNvbnN0IHByb3RlY3RlZEhlYWRlckNib3JCeXRlcyA9IEVuY29kZXIuZW5jb2RlKHByb3RlY3RlZEhlYWRlck1hcCk7XG5cbiAgLy8gU2lnX3N0cnVjdHVyZVxuICBjb25zdCBzaWdTdHJ1Y3R1cmVBcnJheTogYW55W10gPSBbXG4gICAgJ1NpZ25hdHVyZTEnLFxuICAgIEJ1ZmZlci5mcm9tKHByb3RlY3RlZEhlYWRlckNib3JCeXRlcyksXG4gICAgQnVmZmVyLmZyb20oW10pLCAvLyBFbXB0eSBleHRlcm5hbF9hYWRcbiAgICBCdWZmZXIuZnJvbShwYXlsb2FkQnl0ZXMpLFxuICBdO1xuICBjb25zdCBzaWdTdHJ1Y3R1cmVDYm9yQnl0ZXMgPSBFbmNvZGVyLmVuY29kZShzaWdTdHJ1Y3R1cmVBcnJheSk7XG5cbiAgcmV0dXJuIHsgc2lnU3RydWN0dXJlQ2JvckJ5dGVzLCBwcm90ZWN0ZWRIZWFkZXJDYm9yQnl0ZXMsIHBheWxvYWRCeXRlcyB9O1xufVxuXG4vLyBDT1NFIG9iamVjdHMgY29uc3RydWN0aW9uIGZ1bmN0aW9uXG5leHBvcnQgZnVuY3Rpb24gY29uc3RydWN0Q1NMQ29zZU9iamVjdHMoXG4gIHByb3RlY3RlZEhlYWRlckNib3JCeXRlczogVWludDhBcnJheSxcbiAgcGF5bG9hZEJ5dGVzOiBCdWZmZXIsXG4gIGNzbFNpZ25hdHVyZUJ5dGVzOiBVaW50OEFycmF5LFxuICBwYXltZW50UHViS2V5OiBDU0wuUHVibGljS2V5XG4pOiBDU0xDb3NlT2JqZWN0c091dHB1dCB7XG4gIC8vIENPU0VfU2lnbjEgQ29uc3RydWN0aW9uXG4gIGNvbnN0IHVucHJvdGVjdGVkSGVhZGVyc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIHVucHJvdGVjdGVkSGVhZGVyc01hcC5zZXQoJ2hhc2hlZCcsIGZhbHNlKTtcbiAgY29uc3QgY29zZVNpZ24xQXJyYXk6IGFueVtdID0gW1xuICAgIEJ1ZmZlci5mcm9tKHByb3RlY3RlZEhlYWRlckNib3JCeXRlcyksXG4gICAgdW5wcm90ZWN0ZWRIZWFkZXJzTWFwLFxuICAgIEJ1ZmZlci5mcm9tKHBheWxvYWRCeXRlcyksXG4gICAgQnVmZmVyLmZyb20oY3NsU2lnbmF0dXJlQnl0ZXMpLFxuICBdO1xuICBjb25zdCBmaW5hbENvc2VTaWduMUNib3JCeXRlcyA9IEVuY29kZXIuZW5jb2RlKGNvc2VTaWduMUFycmF5KTtcbiAgLyogLy8gZGlyZWN0bHkgZW5jb2RpbmcgdGhlIGNvc2VTaWduMUFycmF5IHdpdGhvdXQgcHJlcGVuZGluZyB0aGUgMHhEMiB0YWcuXG4gICAqIGNvbnN0IGNvc2VTaWduMVBheWxvYWRCeXRlcyA9IEVuY29kZXIuZW5jb2RlKGNvc2VTaWduMUFycmF5KTtcbiAgICogY29uc3QgY29zZVNpZ24xVGFnID0gQnVmZmVyLmZyb20oWzB4RDJdKTsgLy8gVGFnIDE4IGZvciBDT1NFX1NpZ24xXG4gICAqIGNvbnN0IGZpbmFsQ29zZVNpZ24xQ2JvckJ5dGVzID0gQnVmZmVyLmNvbmNhdChbY29zZVNpZ24xVGFnLCBjb3NlU2lnbjFQYXlsb2FkQnl0ZXNdKTtcbiAgICovXG4gIGNvbnN0IG1hbnVhbENvc2VTaWduMUhleCA9IGJ5dGVzVG9IZXgoZmluYWxDb3NlU2lnbjFDYm9yQnl0ZXMpO1xuXG4gIC8vIENPU0VfS2V5IENvbnN0cnVjdGlvblxuICBjb25zdCBjb3NlS2V5TWFwID0gbmV3IE1hcDxudW1iZXIsIGFueT4oKTtcbiAgY29zZUtleU1hcC5zZXQoMSwgMSk7IC8vIGt0eTogT0tQIChPY3RldCBLZXkgUGFpcilcbiAgY29zZUtleU1hcC5zZXQoMywgLTgpOyAvLyBhbGc6IEVkRFNBXG4gIGNvc2VLZXlNYXAuc2V0KC0xLCA2KTsgLy8gY3J2OiBFZDI1NTE5XG4gIGNvc2VLZXlNYXAuc2V0KC0yLCBCdWZmZXIuZnJvbShwYXltZW50UHViS2V5LmFzX2J5dGVzKCkpKTsgLy8geDogcHVibGljX2tleV9ieXRlcyAoRWQyNTUxOSBwdWJsaWMga2V5KVxuICBjb25zdCBmaW5hbENvc2VLZXlDYm9yQnl0ZXMgPSBFbmNvZGVyLmVuY29kZShjb3NlS2V5TWFwKTtcbiAgY29uc3QgbWFudWFsQ29zZUtleUhleCA9IGJ5dGVzVG9IZXgoZmluYWxDb3NlS2V5Q2JvckJ5dGVzKTtcblxuICByZXR1cm4geyBtYW51YWxDb3NlU2lnbjFIZXgsIG1hbnVhbENvc2VLZXlIZXggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvc2VPYmplY3RzT3V0cHV0VG9CdWZmZXIob3V0cHV0OiBDU0xDb3NlT2JqZWN0c091dHB1dCk6IEJ1ZmZlciB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShFbmNvZGVyLmVuY29kZShvdXRwdXQpKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1ZmZlclRvQ29zZU9iamVjdHNPdXRwdXQoYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPENTTENvc2VPYmplY3RzT3V0cHV0PiB7XG4gIHJldHVybiBhd2FpdCBEZWNvZGVyLmRlY29kZUZpcnN0KGJ1ZmZlcik7XG59XG4iXX0=Выполнить команду
Для локальной разработки. Не используйте в интернете!