UNPKG

@memetic-block/ao-encrypted-messages

Version:

Send encrypted messages on AO. Like an encrypted voicemail.

92 lines (91 loc) 6.36 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const commander_1 = require("commander"); const node_fs_1 = require("node:fs"); const encrypted_messages_1 = require("../common/encrypted-messages"); commander_1.program.command('spawn') .description('Spawn a new EncryptedMessages process') .requiredOption('-w, --wallet <path-to-jwk>', 'wallet is required') .action((args) => __awaiter(void 0, void 0, void 0, function* () { const wallet = JSON.parse((0, node_fs_1.readFileSync)(args.wallet).toString()); console.log(`Spawning new EncryptedMessages process`); const encryptedMessages = yield encrypted_messages_1.EncryptedMessages.spawn(wallet); console.log(`Spawned new EncryptedMessages process at ${encryptedMessages.processId}`); })); commander_1.program.command('set-encryption-key') .description('Set the encryption public key on an EncryptedMessage process') .requiredOption('-w, --wallet <path-to-jwk>', 'wallet is required') .requiredOption('-p, --process <process-id>', 'process id is required') .option('-pk, --publickey', 'The encryption public key to set') .action((args) => __awaiter(void 0, void 0, void 0, function* () { const wallet = JSON.parse((0, node_fs_1.readFileSync)(args.wallet).toString()); const encryptedMessages = new encrypted_messages_1.EncryptedMessages(args.process, wallet); console.log(`Setting encryption key ${args.publickey}` + ` on EncryptedMessage process ${args.process}`); const result = yield encryptedMessages.setEncryptionPublicKey(args.publickey); console.log(`Set encryption key ${result.publicKey}` + ` on EncryptedMessage process ${args.process}`, result); })); commander_1.program.command('get-encryption-key') .description('Get the encryption public key froim an EncryptedMessage process') .requiredOption('-w, --wallet <path-to-jwk>', 'wallet is required') .requiredOption('-p, --process <process-id>', 'process id is required') .action((args) => __awaiter(void 0, void 0, void 0, function* () { const wallet = JSON.parse((0, node_fs_1.readFileSync)(args.wallet).toString()); const encryptedMessages = new encrypted_messages_1.EncryptedMessages(args.process, wallet); console.log(`Getting encryption key from EncryptedMessage process ${args.process}`); const { publicKey, messageId } = yield encryptedMessages.getEncryptionPublicKey(); console.log(`Got encryption public key ${publicKey} with message ${messageId}`); })); commander_1.program.command('send-encrypted-message') .description('Send a message to the EncryptedMessage process') .requiredOption('-w, --wallet <path-to-jwk>', 'wallet is required') .requiredOption('-p, --process <process-id>', 'process id is required') .option('-sk, --secretkey', 'optional secret key to use for encryption - will be generated if undefined') .option('-n, --nonce', 'optional nonce to use for encryption - will be generated if undefined') .argument('<message>', 'The message to encrypt and send') .action((message, opts) => __awaiter(void 0, void 0, void 0, function* () { const wallet = JSON.parse((0, node_fs_1.readFileSync)(opts.wallet).toString()); const encryptedMessages = new encrypted_messages_1.EncryptedMessages(opts.process, wallet); console.log(`Sending message to EncryptedMessage process ${opts.process}`); const { messageId } = yield encryptedMessages.sendEncryptedMessage(message, { secretKey: opts.secretkey, nonce: opts.nonce }); console.log(`Sent message ${messageId} to process ${opts.process}`); })); commander_1.program.command('list-encrypted-messages') .description('List encrypted messages sent to the EncryptedMessage process') .requiredOption('-w, --wallet <path-to-jwk>', 'wallet is required') .requiredOption('-p, --process <process-id>', 'process id is required') .action((args) => __awaiter(void 0, void 0, void 0, function* () { const wallet = JSON.parse((0, node_fs_1.readFileSync)(args.wallet).toString()); const encryptedMessages = new encrypted_messages_1.EncryptedMessages(args.process, wallet); console.log(`Listing encrypted messages from EncryptedMessage process ${args.process}`); const { messages, messageId } = yield encryptedMessages.listEncryptedMessages(); console.log(`Got ${Object.keys(messages).length} encrypted messages` + ` with message ${messageId}`); console.log(messages); })); commander_1.program.command('get-encrypted-message') .description('Gets an encrypted message and optionally decrypts it') .requiredOption('-w, --wallet <path-to-jwk>', 'wallet is required') .requiredOption('-p, --process <process-id>', 'process id is required') .requiredOption('-m, --message <message-id>', 'message id of the original encrypted message') .option('-sk, --secretkey <secret-key>', 'optional secret key to decrypt messages with') .action((args) => __awaiter(void 0, void 0, void 0, function* () { const wallet = JSON.parse((0, node_fs_1.readFileSync)(args.wallet).toString()); const encryptedMessages = new encrypted_messages_1.EncryptedMessages(args.process, wallet); console.log(`Getting message with messageId ${args.message} from EncryptedMessages` + ` process ${args.process}` + ` with secretKey ${args.secretkey}`); const { message, nonce, publicKey, recipientPublicKey } = yield encryptedMessages.getEncryptedMessage(args.message, args.secretkey); console.log('Got EncryptedMessage', '\nnonce', nonce, '\npublicKey', publicKey, '\nrecipientPublicKey', recipientPublicKey, '\nmessage', message); })); commander_1.program.parse();