how to use SubtleCrypto

composed of [encrypt, decrypt, generateKey, exportKey, importKey].
available in secure contexts.

aes

AES-CTR AES-CBC AES-GCM

01. generate extractable encryptingKey
await crypto.subtle.generateKey(algorithm,true,[`encrypt`])

02. encrypt
await crypto.subtle.encrypt(algorithm,encryptingKey,data)

03. export encryptingKey
await crypto.subtle.exportKey(format,encryptingKey)

04. import exportedEncryptingKey
await crypto.subtle.importKey(format,exportedEncryptingKey,algorithm,false,[`decrypt`])

05. decrypt
await crypto.subtle.decrypt(algorithm,importedExportedEncryptingKey,encrypted)

verify AES-CTR AES-CBC

06. generate extractable signingKey
await crypto.subtle.generateKey(algorithm,true,[`sign`])

07. sign
crypto.subtle.sign(algorithm,signingKey,encrypted)

08. export signingKey
await crypto.subtle.exportKey(format,signingKey)

09. import exportedSigningKey
await crypto.subtle.importKey(format,exportedSigningKey,algorithm,false,[`verify`])

10. verify
await crypto.subtle.verify(algorithm,importedExportedSigningKey,signature,encrypted)

rsa

RSA-OAEP

01. generate extractable encryptingKeys
await crypto.subtle.generateKey(algorithm,true,[`encrypt`,`decrypt`])

02. encrypt
await crypto.subtle.encrypt(algorithm,encryptingKeys.publicKey,data)

03. export encryptingPrivateKey
await crypto.subtle.exportKey(format,encryptingKeys.privateKey)

04. import exportedEncryptingPrivateKey
await crypto.subtle.importKey(format,exportedEncryptingPrivateKey,algorithm,false,[`decrypt`])

05. decrypt
await crypto.subtle.decrypt(algorithm,importedExportedEncryptingPrivateKey,encrypted)