The SubtleCrypto.generateKey()
method returns a Promise
of a newly generated CryptoKey
, for symmetrical algorithms, or a CryptoKeyPair
, containing two newly generated keys, for asymmetrical algorithm, that matches the algorithm, the usages and the extractability given as parameters.
var result = crypto.subtle.generateKey(algo, extractable, keyUsages);
algo
is a dictionary object defining the key generation function to use. Supported algo are: AES-CBC, AES-CTR
, AES-GCM
, RSA-OAEP
, AES-KW
, HMAC
, RSASSA-PKCS1-v1_5
, ECDSA
, ECDH
, and DH
. Format of the dictionary object is: "name"
, which corresponds to one of the supported algo's listed above,
"modulusLength",
which corresponds to the number of digits used in the modulus
"publicExponent
", a Uint8Array
representing the public exponent
"hash
", a dictionary object referencing the hash algorithm to use. For example:
{name: "SHA-512"}
extractable
is a Boolean
indicating if the key can be extracted from the CryptoKey
object at a later stage.keyUsages
is an Array
indicating what can be done with the newly generated key. Possible values of the array are: "encrypt"
, allowing the key to be used for encrypting messages."decrypt"
, allowing the key to be used for decrypting messages."sign"
, allowing the key to be used for signing messages."verify"
, allowing the key to be used for verifying the signature of messages."deriveKey"
, allowing the key to be used as a base key when deriving a new key."deriveBits"
, allowing the key to be used as a base key when deriving bits of data for use in cryptographic primitives."wrapKey"
, allowing the key to wrap a symmetric key for usage (transfer, storage) in unsecure environments."unwrapKey"
, allowing the key to unwrap a symmetric key for usage (transfer, storage) in unsecure environments.result
is a Promise
that returns the generated key as a CryptoKey
or a CryptoKeyPair
.The promise is rejected when the following exception is encountered:
SyntaxError
when keyUsages
is empty but the generated symmetric key is of type "secret"
or "private"
or the generated private component of the generated asymmetric pair of key is empty.Specification | Status | Comment |
---|---|---|
Web Cryptography API The definition of 'SubtleCrypto.generateKey()' in that specification. | Recommendation | Initial definition. |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | 37 | 12 | 34
|
11
|
24 | 7 |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | 37 | 37 | 12 | 34
|
24 | 7 | 6.0 |
Crypto
and Crypto.subtle
.SubtleCrypto
, the interface it belongs to.
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/generateKey