Send a Message to Multiple Receivers

PGP allows encrypting and signing with multiple keys that allows you to send the same payload to multiple recipients. As a recipient, you can provide multiple decryption and verification keys. The following sample sends a message to two receivers and decrypts the message contents.

          /**
 * @NApiVersion 2.1
 */

require(['N/pgp'], (pgp) => {
  // public and private keys for multiple receivers
  const keys = {
    alice: {
      pub: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_key_alice_public' }
      }),
      pri: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_key_alice_private' },
        password: { scriptId: 'custsecret_pgp_key_bob_private_password' }
      })
    },
    bob: {
      pub: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_key_bob_public' }
      }),
      pri: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_key_bob_private' },
        password: { scriptId: 'custsecret_pgp_key_bob_private_password' }
      })
    },
    netsuite: {
      pub: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_netsuite_pub' }
      }),
      pri: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_netsuite_pri' }
      })
    },
    example: {
      pri: pgp.loadKeyFromSecret({
        secret: { scriptId: 'custsecret_pgp_example_pri' }
      })
    }
  }
  const data = pgp.createMessageData({ 
    content: 'Hello Alice and Bob!'
  }) 
  const message = data.encrypt({ 
    encryptionKeys: [keys.alice.pub, keys.bob.pub],
    signingKeys: [keys.netsuite.pri, keys.example.pri]
  })
  /*
   * Alice decryption.
   */
  message.decrypt({ 
    decryptionKeys: keys.alice.pri,
    verificationKeys: [keys.netsuite.pub]
  }) 
  /*
   * Bob decryption.
   */
  message.decrypt({ 
    decryptionKeys: [keys.bob.pri],
    verificationKeys: keys.example.pub
  })
}) 

        

Related Topics

General Notices