SubtleCrypto
A interface SubtleCrypto do Azion Runtime: os métodos de hash, assinatura, criptografia, derivação de chaves e encapsulamento de chaves via crypto.subtle.
A interface SubtleCrypto reúne as funções criptográficas de baixo nível da Web Crypto API no Azion Runtime. Uma function a acessa pela propriedade subtle do objeto global crypto. Essa propriedade contém uma instância de SubtleCrypto. Use-a para gerar hashes de dados, assinar e verificar mensagens, criptografar e descriptografar dados e derivar, importar, exportar e encapsular chaves. Para mais informações, consulte SubtleCrypto na MDN Web Docs.
Métodos
SubtleCrypto não tem interface pai, então não herda métodos. Todo método retorna uma promise:
| Método | Descrição |
|---|---|
crypto.subtle.encrypt(algorithm, key, data) | Resolve com a forma criptografada de data, produzida com key e algorithm. AES-GCM criptografa com uma chave de 256 bits e um iv. |
crypto.subtle.decrypt(algorithm, key, data) | Resolve com os dados em claro recuperados de data criptografado, usando key e algorithm. |
crypto.subtle.sign(algorithm, key, data) | Resolve com a assinatura de data, calculada com key e algorithm. HMAC, ECDSA, RSA-PSS e Ed25519 assinam dados. Uma assinatura RSA-PSS com uma chave de 2048 bits tem 256 bytes. Uma assinatura Ed25519 tem 64 bytes. |
crypto.subtle.verify(algorithm, key, signature, data) | Resolve com true quando signature corresponde a data com key e algorithm, e com false quando não corresponde, por exemplo depois que data muda. |
crypto.subtle.digest(algorithm, data) | Resolve com o digest de data calculado com algorithm. SHA-1, SHA-256, SHA-384 e SHA-512 produzem 20, 32, 48 e 64 bytes. MD5 rejeita com NotSupportedError: Unrecognized algorithm name. |
crypto.subtle.generateKey(algorithm, extractable, keyUsages) | Resolve com uma CryptoKey para um algoritmo simétrico ou com um CryptoKeyPair com privateKey e publicKey para um algoritmo assimétrico. As chaves recebem o algoritmo, os usos e a extraibilidade que você passa. Ele gera chaves AES-GCM, AES-KW, ECDSA na curva P-256, RSA-PSS e Ed25519. |
crypto.subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages) | Resolve com uma CryptoKey derivada de baseKey com algorithm. PBKDF2 com SHA-256 deriva uma chave AES-GCM de 256 bits. |
crypto.subtle.deriveBits(algorithm, baseKey, length) | Resolve com um buffer de bits pseudoaleatórios derivados de baseKey com algorithm. length é o número de bits. |
crypto.subtle.importKey(format, keyData, algorithm, extractable, keyUsages) | Resolve com uma CryptoKey construída a partir de keyData em format. A chave recebe o algoritmo, os usos e a extraibilidade que você passa. Ele importa uma chave raw para HMAC ou PBKDF2. |
crypto.subtle.exportKey(format, key) | Resolve com os dados da chave key em format, como raw ou jwk. exportKey() rejeita uma chave criada com extractable definido como false, com InvalidAccessError: Key is not extractable. |
crypto.subtle.wrapKey(format, key, wrappingKey, wrapAlgorithm) | Resolve com key exportada em format e criptografada com wrappingKey e wrapAlgorithm. Use-o para transferir ou armazenar uma chave simétrica em um ambiente não confiável. Uma chave AES-GCM de 256 bits encapsulada no formato raw com AES-KW tem 40 bytes. |
crypto.subtle.unwrapKey(format, wrappedKey, unwrappingKey, unwrapAlgorithm, unwrappedKeyAlgorithm, extractable, keyUsages) | Resolve com a CryptoKey que wrappedKey contém, descriptografada com unwrappingKey e unwrapAlgorithm. |
Exemplo
Este handler importa um segredo como uma chave HMAC, assina uma mensagem e verifica a assinatura com a mensagem e com dados alterados. Ele retorna a assinatura, os dois resultados e as propriedades da chave com Response.json():
A function retorna estes valores. rejectsTampered é true porque verify() retorna false para os dados alterados: