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. |
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Edge | Opera | Safari |
---|---|---|---|---|---|---|---|
Basic support | 37 | (Yes) | 34 (34) | No support | 13 | No support | |
ECDSA | (Yes) | ? | 36 (36) | No support | ? | No support | |
DH | No support | ? | 35 (35) | No support | No support | No support |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | 37 | (Yes) | 34.0 (34) | No support | ? | No support |
ECDSA | (Yes) | (Yes) | ? | 36.0 (36) | No support | ? | No support |
DH | No support | (Yes) | ? | 35.0 (35) | No support | No support | No support |
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