ssi.nostr.decrypt()

Pass in the cipher text and get back the plain text by Nostr secret key. You should always read the public key without using cache just before signing/encrypting/decrypting, as the user may change their primary key without notifying you. During the execution process, an internal authorization check is performed similar to browser.ssi.askConsent.

This is an asynchronous function that returns a Promise.

Syntax

const stringValue = await browser.ssi.nostr.decrypt(
	tabId, // integer
	ciphertext, // string
	options, // object
	dialogOption, // optional object
)

Parameters

tabId

integer. This is tabs.Tab.id. See also MDN Reference.

ciphertext

string. The cipher text to decrypt.

options

object. Direction about decryption detail.

type

string. The encryption spec. e.g., "nip04", "nip44".

pubkey (optional)

string. The conversation partner’s public key. If type is "nip04" or "nip44", then this is required.

version (optional)

string. The version to define encryption algorithms if the type is "nip44".

dialogOption (optional)

ssi.DialogInfo. Parameters to build Auth dialog.

Return value

A Promise that will be fulfilled with a string of the decrypted plain text. Returns Promise<undefined> if error.

Examples

Decryption in NIP-44

See also the spec.

const plaintext = await browser.ssi.nostr.decrypt(
  1,
  "AkeXqSWNnU7VrlEUHnnGIs9rqXwHLFVxCsfQTRLbERVWh6fWJqfaRw/BC+cFgtfzPSle1csyfdJ+qf/xaCVmVQ2tXPQg6jw9EHwZxNUwz1EJYZStRo6uCXRnvXraMrPfd4Gx046tHyJ+KJIKUGXOFlWtyni+H+Kr151jvxt0PW5O48AMTxfos3/GxY/EF0yWwsJ8JG82JBEDrmzAz4ph8iXbJg==",
  {
    type: "nip44",
    pubkey: "3327e31cfbef92d143c699e1559e207d977639303d81bb132d9541bff99af3b4"
  }
)
if (!plaintext) {
  throw new Error("Failed to decrypt")
}

console.log(plaintext)
// "The computer can be used as a tool to liberate and protect people, rather than to control them."

Note

This documentation is derived from ssi.nostr.json in gecko-dev-for-ssi.