Попытка зашифровать строку с помощью открытого ключа, который не в формате ascii-armored - PullRequest
0 голосов
/ 28 ноября 2018

Поток:

  1. Получить сохраненные ключи PGP
  2. Это не защищенные ascii ключи, они уже были проанализированы с использованием openpgp.key.readArmored
  3. Попробуйтедля шифрования текста Hey, encrypt me.

Ожидается : чистый текст зашифрован

Факт : генерируется ошибка ниже

Возможно ли это, или мне нужно снова прочитать открытый ключ в броне ascii и предоставить этот результат в options?

Код:

var recipients = getRecipients();
// recipients is a hashmap, key being pgp userId and value 
//   being the result of `await openpgp.key.readArmored(pubkey)`
// recipients = {
//   'bob <bob@email.com>': {
//     { keys:
//       [ { keyPacket: [Object],
//         revocationSignatures: [],
//         directSignatures: [],
//         users: [Array],
//         subKeys: [Array] } ] }
//   }  
// };

// define function to encrypt
const encrypt = async() => {
    var options = {
        message: openpgp.message.fromText('Hey, encrypt me.'),
        publicKeys: recipients['bob <bob@email.com>'].keys
    }
    openpgp.encrypt(options).then(ciphertext => {
        encrypted = ciphertext.data;
        return encrypted;
    })
    .then(encrypted => {
        console.log(encrypted);
    });
});

encrypt();

Ошибка:

UnhandledPromiseRejectionWarning: TypeError: Error encrypting message: key.getPrimaryUser is not a function
  at /Users/rob/git/HandyEncryption/node_modules/openpgp/dist/openpgp.js:32694:35
  at Array.map (<anonymous>)
  at getPreferredAlgo (/Users/rob/git/HandyEncryption/node_modules/openpgp/dist/openpgp.js:32693:26)
  at Message.encrypt (/Users/rob/git/HandyEncryption/node_modules/openpgp/dist/openpgp.js:33460:96)
  at /Users/rob/git/HandyEncryption/node_modules/openpgp/dist/openpgp.js:34337:20
  at process._tickCallback (internal/process/next_tick.js:68:7)
...