# Module: crypto/public_key/rsa

RSA implementation

Source:
  - crypto/public_key/rsa.js, line 18

### Methods

#### (async, static) decrypt(m, n, e, d, p, q, u, randomPayload) → {Promise.<String>}

Decrypt RSA message

##### Parameters:

Name | Type | Description
--- | --- | ---
`m` | Uint8Array | Message
`n` | Uint8Array | RSA public modulus
`e` | Uint8Array | RSA public exponent
`d` | Uint8Array | RSA private exponent
`p` | Uint8Array | RSA private prime p
`q` | Uint8Array | RSA private prime q
`u` | Uint8Array | RSA private coefficient
`randomPayload` | Uint8Array | Data to return on decryption error, instead of throwing (needed for constant-time processing)

Source:
  - crypto/public_key/rsa.js, line 116

##### Throws:

on decryption error, unless `randomPayload` is given

Type
  Error

##### Returns:

RSA Plaintext.

Type
  Promise.<String>

#### (async, static) encrypt(data, n, e) → {Promise.<Uint8Array>}

Encrypt message

##### Parameters:

Name | Type | Description
--- | --- | ---
`data` | Uint8Array | Message
`n` | Uint8Array | RSA public modulus
`e` | Uint8Array | RSA public exponent

Source:
  - crypto/public_key/rsa.js, line 94

##### Returns:

RSA Ciphertext.

Type
  Promise.<Uint8Array>

#### (async, static) generate(bits, e) → {Object}

Generate a new random private key B bits long with public exponent E.

When possible, webCrypto or nodeCrypto is used. Otherwise, primes are generated using 40 rounds of the Miller-Rabin probabilistic random prime generation algorithm.

##### Parameters:

Name | Type | Description
--- | --- | ---
`bits` | Integer | RSA bit length
`e` | Integer | RSA public exponent

Source:
  - crypto/public_key/rsa.js, line 143
See:
  - module:crypto/public_key/prime

##### Returns:

RSA public modulus, RSA public exponent, RSA private exponent, RSA private prime p, RSA private prime q, u = p ** -1 mod q

Type
  Object

#### (async, static) sign(hashAlgo, data, n, e, d, p, q, u, hashed) → {Promise.<Uint8Array>}

Create signature

##### Parameters:

Name | Type | Description
--- | --- | ---
`hashAlgo` | module:enums.hash | Hash algorithm
`data` | Uint8Array | Message
`n` | Uint8Array | RSA public modulus
`e` | Uint8Array | RSA public exponent
`d` | Uint8Array | RSA private exponent
`p` | Uint8Array | RSA private prime p
`q` | Uint8Array | RSA private prime q
`u` | Uint8Array | RSA private coefficient
`hashed` | Uint8Array | Hashed message

Source:
  - crypto/public_key/rsa.js, line 45

##### Returns:

RSA Signature.

Type
  Promise.<Uint8Array>

#### (async, static) validateParams(n, e, d, p, q, u) → {Promise.<Boolean>}

Validate RSA parameters

##### Parameters:

Name | Type | Description
--- | --- | ---
`n` | Uint8Array | RSA public modulus
`e` | Uint8Array | RSA public exponent
`d` | Uint8Array | RSA private exponent
`p` | Uint8Array | RSA private prime p
`q` | Uint8Array | RSA private prime q
`u` | Uint8Array | RSA inverse of p w.r.t. q

Source:
  - crypto/public_key/rsa.js, line 225

##### Returns:

Whether params are valid.

Type
  Promise.<Boolean>

#### (async, static) verify(hashAlgo, data, s, n, e, hashed) → {Boolean}

Verify signature

##### Parameters:

Name | Type | Description
--- | --- | ---
`hashAlgo` | module:enums.hash | Hash algorithm
`data` | Uint8Array | Message
`s` | Uint8Array | Signature
`n` | Uint8Array | RSA public modulus
`e` | Uint8Array | RSA public exponent
`hashed` | Uint8Array | Hashed message

Source:
  - crypto/public_key/rsa.js, line 71

##### Returns:

Type
  Boolean

#### (inner) jwkToPrivate()

Convert JWK private key to OpenPGP private key params

Source:
  - crypto/public_key/rsa.js, line 457

#### (async, inner) privateToJWK(hashAlgo, n, e, d, p, q, u)

Convert Openpgp private key params to jwk key according to

##### Parameters:

Name | Type | Description
--- | --- | ---
`hashAlgo` | String |
`n` | Uint8Array |
`e` | Uint8Array |
`d` | Uint8Array |
`p` | Uint8Array |
`q` | Uint8Array |
`u` | Uint8Array |

Source:
  - crypto/public_key/rsa.js, line 414

#### (inner) publicToJWK(hashAlgo, n, e)

Convert Openpgp key public params to jwk key according to

##### Parameters:

Name | Type | Description
--- | --- | ---
`hashAlgo` | String |
`n` | Uint8Array |
`e` | Uint8Array |

Source:
  - crypto/public_key/rsa.js, line 447