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
})
})