diff options
Diffstat (limited to 'files/pt-br/web/api/subtlecrypto')
-rw-r--r-- | files/pt-br/web/api/subtlecrypto/derivekey/index.html | 270 | ||||
-rw-r--r-- | files/pt-br/web/api/subtlecrypto/generatekey/index.html | 197 | ||||
-rw-r--r-- | files/pt-br/web/api/subtlecrypto/importkey/index.html | 169 | ||||
-rw-r--r-- | files/pt-br/web/api/subtlecrypto/index.html | 83 |
4 files changed, 719 insertions, 0 deletions
diff --git a/files/pt-br/web/api/subtlecrypto/derivekey/index.html b/files/pt-br/web/api/subtlecrypto/derivekey/index.html new file mode 100644 index 0000000000..16f39fb7e1 --- /dev/null +++ b/files/pt-br/web/api/subtlecrypto/derivekey/index.html @@ -0,0 +1,270 @@ +--- +title: SubtleCrypto.deriveKey() +slug: Web/API/SubtleCrypto/deriveKey +tags: + - API + - Criptografía + - Crypto + - Referencia + - SubtleCrypto + - Web + - metodo +translation_of: Web/API/SubtleCrypto/deriveKey +--- +<p>{{APIRef("Web Crypto API")}}</p> + +<p>O método <code><strong>SubtleCrypto.deriveKey()</strong></code> retorna como {{jsxref("Promise")}} de um recentemente gerado {{domxref("CryptoKey")}} derivada de uma master key e um algoritmo específico dados como parâmetro.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">var <em>result</em> = crypto<code>.subtle.deriveKey(<em>algorithm</em>, <em>masterKey</em>, <em>derivedKeyAlgorithm</em>, <em>extractable</em>, <em>keyUsages</em>)</code>; +</pre> + +<h3 id="Parâmetros">Parâmetros</h3> + +<ul> + <li><code><em>algorithm</em></code> é um objeto definindo o algoritmo de derivação a se usar. Os valores suportados são: + + <ul> + <li><code>{"name": "ECDH", "public": publicKey}</code></li> + <li><code>{"name": "DH", "public": publicKey}</code></li> + <li><code>{"name": "PBKDF2", salt, iterations, hash}</code> where <em><code>salt</code></em> is an {{jsxref("ArrayBuffer")}} ou um {{jsxref("ArrayBufferView")}}, <em><code>iterations</code></em> é o número de interações e <em><code>hash</code></em> é um {{domxref("DOMString")}} identificando o algoritmo hashing para uso.</li> + <li><code>{"name": "HKDF-CTR", hash, label, context}</code></li> + </ul> + </li> + <li><em><code>masterKey</code></em> é uma {{domxref("CryptoKey")}} representando a master key para ser utilizada por um algoritmo de derivação de key.</li> + <li><code><em>derivedKeyAlgorithm</em></code> é um objeto que define o algoritmo, a key derivada será utilizada para {{domxref("DOMString")}} como um atalho para <code>{"name": derivedKeyAlgo}</code>. Para AES uma propriedade <code><em>length</em></code> também é requerida, e os valores possíveis são 128, 192 ou 256 bits.</li> + <li><code><em>extractable</em></code> é um {{jsxref("Boolean")}} indicando se a key pode ser extraída de um objeto {{domxref("CryptoKey")}} em um estágio mais tardio.</li> + <li><code><em>keyUsages</em></code> é um {{jsxref("Array")}} indicando o que pode ser feito com a chave derivada. Os valores possíveis do array são: + <ul> + <li><code>"encrypt"</code>, permitindo que a key seja utilizada para {{glossary("encryption", "encrypting")}} mensagens.</li> + <li><code>"decrypt"</code>, permitindo que a key seja utilizada para {{glossary("decryption", "decrypting")}} mensagens.</li> + <li><code>"sign"</code>, permitindo que a key seja utilizada para {{glossary("signature", "signing")}} mensagens.</li> + <li><code>"verify"</code>, permitindo que a key seja utilizada para {{glossary("verification", "verifying the signature")}} de mensagens.</li> + <li><code>"deriveKey"</code>, permitindo que a key seja utilizada como key base na derivação de uma nova key.</li> + <li><code>"deriveBits"</code>, permitindo que a key seja utilizada como key base na derivação de bits de informação para uso em criptografias primitivas.</li> + <li><code>"wrapKey"</code>, permitindo que a key envolva uma key simétrica (transferência, armazenamento) em ambientes não seguros.</li> + <li><code>"unwrapKey"</code>, permitindo que a key se desvincule de uma key simétrica para uso (transfererência, armazenamento) em ambientes não seguros.</li> + </ul> + </li> +</ul> + +<h3 id="Valor_de_retorno">Valor de retorno</h3> + +<ul> + <li><code><em>result</em></code> é uma {{jsxref("Promise")}} que retorna a key derivada como uma {{domxref("CryptoKey")}} ou uma {{domxref("CryptoKeyPair")}}.</li> +</ul> + +<h3 id="Exceções">Exceções</h3> + +<p>A promise é rejeitada quando uma das seguintes exceções é encontrada:</p> + +<ul> + <li>{{exception("InvalidAccessError")}} quando a master key não é uma key para o algoritmo de derivação requisitado ou se o valor desta chave, {{domxref("CryptoKey.usages")}}, não contém <code>"deriveKey"</code>.</li> + <li>{{exception("NotSupported")}} quando tentando usar um algoritmo que não é nem desconhecido e nem se encaixa para a derivação, ou se, o algoritmo requisitado da key derivada não define o comprimento da key.</li> + <li>{{exception("SyntaxError")}} quando <em><code>keyUsages</code></em> está vazio mas a key desvinculada é do tipo <code>"secret"</code> ou <code>"private"</code>.</li> +</ul> + +<h2 id="Exemplo" style="font-size: 2.14285714285714rem;">Exemplo</h2> + +<p style="line-height: 16.7999992370605px;">Aqui está um exemplo de como usar <strong>deriveKey()</strong> para criar uma <strong>Secure Remote Password</strong> (também nomeado de <strong>Proof of Secret</strong>) da password de um usuário.</p> + +<pre class="brush: js" style="font-size: 14px;">// salt deve ser Uint8Array ou ArrayBuffer +var saltBuffer = Unibabel.hexToBuffer('e85c53e7f119d41fd7895cdc9d7bb9dd'); + +// não use métodos naïve para conversão de texto, senão caracteres +// internacionais não terão a sequência correta de byte. Use o TextEncoder quando +// possível ou então use polyfills relevantes +var passphraseKey = Unibabel.utf8ToBuffer("I hëart årt and £$¢!"); + +// Você deve primeiramente importar sua passphrase Uint8array em uma CryptoKey +window.crypto.subtle.importKey( + 'raw', + passphraseKey, + {name: 'PBKDF2'}, + false, + ['deriveBits', 'deriveKey'] +).then(function(key) { + + return window.crypto.subtle.deriveKey( + { "name": 'PBKDF2', + "salt": saltBuffer, + // não seja muito ambicioso, ou pelo menos tenha em mente + // que celulares com baixo poder de processamento vão acessar o seu app + "iterations": 100, + "hash": 'SHA-256' + }, + key, + + // Nota: para essa demo nós não vamos precisar de uma cipher suite, + // mas a API exige que a mesma seja especificada. + + // Para AES o comprimento requerido é de 128 ou 256 bits (não bytes) + { "name": 'AES-CBC', "length": 256 }, + + // Independente da resposta a key é extraível (menos seguro) ou não extraível (mais seguro), + // quando falso, a key pode ser entregue apenas como um objeto crypto web, não inspecionado + true, + + // esse objeto crypto web será permitido para apenas essas funções: + [ "encrypt", "decrypt" ] + ) +}).then(function (webKey) { + + return crypto.subtle.exportKey("raw", webKey); + +}).then(function (buffer) { + + var proofOfSecret = Unibabel.bufferToHex(buffer); + // esta proof-of-secret / password remota-segura + // pode agora ser enviada no lugar da password do usuário +});</pre> + +<p style="line-height: 16.7999992370605px;">Nota: Por conta de não haver ferramentas nativas que convertam entre Uint8Array, Unicode, hex, e base64, você provavelmente vai querer utilizar algo como o <a href="https://github.com/coolaj86/unibabel-js">Unibabel</a> ou <a href="https://github.com/feross/buffer">Buffer</a> para converter entre eles.</p> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{ SpecName('Web Crypto API', '#dfn-SubtleCrypto-method-deriveKey', 'SubtleCrypto.deriveKey()') }}</td> + <td>{{ Spec2('Web Crypto API') }}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_Browser">Compatibilidade de Browser</h2> + +<p>{{ CompatibilityTable() }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Suporte básico</td> + <td>{{ CompatChrome(37) }}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop(34) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatSafari(11) }}</td> + </tr> + <tr> + <td><code>PBKDF2</code></td> + <td>{{ CompatChrome(42) }}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(34) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatSafari(11) }}</td> + </tr> + <tr> + <td><code>HKDF-CTR</code></td> + <td>{{ CompatChrome(42) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + </tr> + <tr> + <td><code>DH</code></td> + <td>{{ CompatNo() }}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(35) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Característica</th> + <th>Android</th> + <th>Edge</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Suporte básico</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>37</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{ CompatNo }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>PBKDF2</code></td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>42</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{ CompatNo }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>HKDF-CTR</code></td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>42</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + </tr> + <tr> + <td><code>DH</code></td> + <td>{{ CompatNo() }}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatGeckoMobile(35) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("Crypto")}} e {{domxref("Crypto.subtle")}}.</li> + <li>{{domxref("SubtleCrypto")}}, a interface a qual ele pertence.</li> +</ul> + +<h3 id="Dicionário">Dicionário:</h3> + +<p>"Key" = "Chave"</p> + +<p>"Master key" = "Chave mestre"</p> + +<p>"Proof-of-secret" = "Prova de segredo ou Atestado de sigilo"</p> + +<p>"Password" = "Palavra passe ou Senha"</p> diff --git a/files/pt-br/web/api/subtlecrypto/generatekey/index.html b/files/pt-br/web/api/subtlecrypto/generatekey/index.html new file mode 100644 index 0000000000..0b2c8a8bb0 --- /dev/null +++ b/files/pt-br/web/api/subtlecrypto/generatekey/index.html @@ -0,0 +1,197 @@ +--- +title: SubtleCrypto.generateKey() +slug: Web/API/SubtleCrypto/GenerateKey +tags: + - API + - Referencia + - SubtleCrypto + - Web Crypto API + - metodo +translation_of: Web/API/SubtleCrypto/generateKey +--- +<p>{{APIRef("Web Crypto API")}}</p> + +<p>O método <code><strong>SubtleCrypto.generateKey()</strong></code> retorna como {{jsxref("Promise")}} de uma recentemente gerada {{domxref("CryptoKey")}}, para algoritmos simétricos, ou uma {{domxref("CryptoKeyPair")}}, contendo duas keys recentemente geradas, para algoritmos assimétricos, que combina com o algoritmo, o uso e a extractividade são dados como parâmetro.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">var <em>result</em> = <em>crypto.subtle</em><code>.generateKey(<em>algo</em>, <em>extractable</em>, <em>keyUsages</em>)</code>; +</pre> + +<h3 id="Parâmetros">Parâmetros</h3> + +<ul> + <li><em><code>algo</code></em> é um objeto do dicionário definindo a função utilizada da geração da key. algo suportados são : <a href="/en-US/docs/Web/API/Web_Crypto_API/Supported_algorithms#AES-CBC">AES-CBC</a>, <code>AES-CTR</code>, <code>AES-GCM</code>, <code>RSA-OAEP</code>, <code>AES-KW</code>, <code>HMAC</code>, <code>RSASSA-PKCS1-v1_5</code>, <code>ECDSA</code>, <code>ECDH</code>, e <code>DH</code>. Os formatos de objetos do dicionário são: + + <ul> + <li> + <p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;"><code>"name"</code>, </span></font>o qual corresponde com um dos algo's suportados listados acima,</p> + </li> + <li> + <p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;">"modulusLength"<code>, </code></span></font>o qual corresponde com o número de dígitos usado nos módulos</p> + </li> + <li> + <p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;"><code>"publicExponent</code>",</span></font> uma {{jsxref("Uint8Array")}} representando o exponencial público</p> + </li> + <li> + <p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;">"<code>hash</code>", </span></font>um objeto do dicionário referenciando o uso do algoritmo hash. Por exemplo:</p> + + <ul> + <li> + <p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;"><code>{name: "SHA-512"}</code></span></font></p> + </li> + </ul> + </li> + </ul> + </li> + <li><code><em>extractable</em></code> é um {{jsxref("Boolean")}} indicando se a key pode ser extraída do objeto {{domxref("CryptoKey")}} em um estágio mais tardio.</li> + <li><code><em>keyUsages</em></code> é uma {{jsxref("Array")}} indicando o que pode ser feito com uma key recentemente gerada. Os possíveis valores da array são: + <ul> + <li><code>"encrypt"</code>, permitindo que a key seja utilizada para {{glossary("encryption", "encrypting")}} mensagens.</li> + <li><code>"decrypt"</code>, permitindo que a key seja utilizada para {{glossary("decryption", "decrypting")}} mensagens.</li> + <li><code>"sign"</code>, permitindo que a key seja utilizada para {{glossary("signature", "signing")}} mensagens.</li> + <li><code>"verify"</code>, permitindo que a key seja utilizada para {{glossary("verification", "verifying the signature")}} de mensagens.</li> + <li><code>"deriveKey"</code>, permitindo que a key seja utilizada como uma key base para quando se derivando uma nova key.</li> + <li><code>"deriveBits"</code>, permitindo que a key seja utilizada como uma key base quando se derivando {{glossary("bits")}} de dados para uso em criptografias primitivas.</li> + <li><code>"wrapKey"</code>, permitindo que a key envolva uma chave simétrica para uso (transferência, armazenamento) em ambientes não seguros.</li> + <li><code>"unwrapKey"</code>, permitindo que a key se desvincule de uma chave simétrica para uso (transferência, armazenamento) em ambientes não seguros.</li> + </ul> + </li> +</ul> + +<h3 id="Valor_de_retorno">Valor de retorno</h3> + +<ul> + <li><code><em>result</em></code> é uma {{jsxref("Promise")}} que retorna uma key gerada como uma {{domxref("CryptoKey")}} ou uma {{domxref("CryptoKeyPair")}}.</li> +</ul> + +<h3 id="Exceções">Exceções</h3> + +<p>A {{jsxref("Promise")}} é rejeitada quando a seguinte exceção é encontrada:</p> + +<ul> + <li>{{exception("SyntaxError")}} quando <em><code>keyUsages</code></em> está vazia mas a key gerada simetricamente é do tipo <code>"secret"</code> ou <code>"private"</code> ou o componente privado gerado do par de key assimétrica está vazio.</li> +</ul> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Commentário</th> + </tr> + <tr> + <td>{{ SpecName('Web Crypto API', '#dfn-SubtleCrypto-method-generateKey', 'SubtleCrypto.generateKey()') }}</td> + <td>{{ Spec2('Web Crypto API') }}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_Browser">Compatibilidade de Browser</h2> + +<p>{{ CompatibilityTable() }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Características</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Edge</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Suporte básico</td> + <td>{{ CompatChrome(37) }}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop(34) }}</td> + <td>{{ CompatNo() }}</td> + <td>13</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>ECDSA</code></td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(36) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo() }}</td> + </tr> + <tr> + <td><code>DH</code></td> + <td>{{ CompatNo() }}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(35) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Características</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Suporte básico</td> + <td>{{CompatVersionUnknown}}</td> + <td>37</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{ CompatNo }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>ECDSA</code></td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoMobile(36) }}</td> + <td>{{ CompatNo }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>DH</code></td> + <td>{{ CompatNo() }}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoMobile(35) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatNo() }}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("Crypto")}} e {{domxref("Crypto.subtle")}}.</li> + <li>{{domxref("SubtleCrypto")}}, a interface a qual ele pertence.</li> +</ul> + +<h3 id="Dicionário">Dicionário:</h3> + +<p>"Key" = "Chave"</p> diff --git a/files/pt-br/web/api/subtlecrypto/importkey/index.html b/files/pt-br/web/api/subtlecrypto/importkey/index.html new file mode 100644 index 0000000000..15c4102162 --- /dev/null +++ b/files/pt-br/web/api/subtlecrypto/importkey/index.html @@ -0,0 +1,169 @@ +--- +title: SubtleCrypto.importKey() +slug: Web/API/SubtleCrypto/importKey +tags: + - API + - Criptografía + - Referencia + - SubtleCrypto + - Web Crypto API + - metodo +translation_of: Web/API/SubtleCrypto/importKey +--- +<p>{{APIRef("Web Crypto API")}}</p> + +<p>O método <code><strong>SubtleCrypto.importKey()</strong></code> retorna como {{jsxref("Promise")}} de uma {{domxref("CryptoKey")}} de uma informção dada como parâmetro.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<pre class="syntaxbox">var <em>result</em> = <em>crypto</em><code>.subtle.importKey(<em>format</em>, <em>keyData</em>, <em>algo</em>, <em>extractable</em>, <em>usages</em>)</code>; +</pre> + +<h3 id="Parâmetros">Parâmetros</h3> + +<ul> + <li><em><code>format</code></em> é um valor enumerado descrevendo o formato de informação da key exportada. Podendo ser um dos seguintes: + + <ul> + <li><code>"raw"</code>, a key como um conjunto de bytes, normalmente uma key secreta.</li> + <li><code>"pkcs8"</code> uma key privada, no <a href="http://tools.ietf.org/html/rfc5208">IETF Public Key-Cryptographic Standard Encryption #8</a>.</li> + <li><code>"spki"</code>, normalmente uma key pública, no <a href="http://en.wikipedia.org/wiki/Simple_public-key_infrastructure">Simple public key infrastructure</a> padrão.</li> + <li><code>"jwk"</code>, a key no formato <a href="https://tools.ietf.org/html/draft-ietf-jose-json-web-key-41">JSON Web Key</a>.</li> + </ul> + </li> + <li><code><em>keyData</em></code> é uma {{domxref("ArrayBuffer")}} ou uma {{domxref("JSONWebKey")}} contendo uma key no formato dado.</li> + <li><em><code>algo</code></em> é um objeto de dicionário que define o algoritmo que foi utilizado para gerar a key que está sendo importada.</li> + <li><code><em>extractable</em></code> é um {{jsxref("Boolean")}} indicando se a key pode ser extraída de um objeto {{domxref("CryptoKey")}} em um estágio mais tardio.</li> + <li><code><em>usages</em></code> é um {{jsxref("Array")}} que indica o que pode ser feito com a key. Valores possíveis do array são: + <ul> + <li><code>"encrypt"</code>, permitindo que a key seja utilizada para {{glossary("encryption", "encrypting")}} mensagens.</li> + <li><code>"decrypt"</code>, permitindo que a key seja utilizada para {{glossary("decryption", "decrypting")}} mensagens.</li> + <li><code>"sign"</code>, permitindo que a key seja utilizada para {{glossary("signature", "signing")}} mensagens.</li> + <li><code>"verify"</code>, permitindo que a key seja utilizada para {{glossary("verification", "verifying the signature")}} de mensagens.</li> + <li><code>"deriveKey"</code>, permitindo que a key seja utilizada como uma key base na derivação de uma nova key.</li> + <li><code>"deriveBits"</code>, permitindo que a key seja utilizada como key base na derivação de bits de informação para uso em criptografias primitivas.</li> + <li><code>"wrapKey"</code>, permitindo que a key envolva uma key simétrica para uso (transferência, armazenamento) em ambientes não seguros.</li> + <li><code>"unwrapKey"</code>, permitindo que a key se desvincule de uma key simétrica para uso (transferência, armazenamento) em ambientes não seguros.</li> + </ul> + </li> +</ul> + +<h3 id="Valor_de_retorno">Valor de retorno</h3> + +<ul> + <li><code><em>result</em></code> é uma {{jsxref("Promise")}} que retorna a {{domxref("CryptoKey")}} gerada.</li> +</ul> + +<h3 id="Exceções">Exceções</h3> + +<p>A promise é rejeitada quando umas das seguintes exceções é encontrada:</p> + +<ul> + <li>{{exception("SyntaxError")}} quando <em><code>keyUsages</code></em> está vazia mas a key desvinculada é do tipo <code>"secret"</code> ou <code>"private"</code>.</li> + <li>{{jsxref("TypeError")}} quando tentando utilizar um formato invalido ou se a <em><code>keyData</code></em> não é adequada para este formato.</li> +</ul> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{ SpecName('Web Crypto API', '#dfn-SubtleCrypto-method-importKey', 'SubtleCrypto.importKey()') }}</td> + <td>{{ Spec2('Web Crypto API') }}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_Browser">Compatibilidade de Browser</h2> + +<p>{{ CompatibilityTable() }}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Características</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Suporte básico</td> + <td>{{ CompatChrome(37) }}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoDesktop(34) }}</td> + <td>{{ CompatNo() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>ECDH</code></td> + <td>{{ CompatUnknown() }}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(41) }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Características</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Suporte básico</td> + <td>{{CompatVersionUnknown}}</td> + <td>37</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{ CompatGeckoMobile(34) }}</td> + <td>{{ CompatNo }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatNo }}</td> + </tr> + <tr> + <td><code>ECDH</code></td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{CompatUnknown}}</td> + <td>{{ CompatGeckoDesktop(41) }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatUnknown() }}</td> + <td>{{ CompatUnknown() }}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("Crypto")}} e {{domxref("Crypto.subtle")}}.</li> + <li>{{domxref("SubtleCrypto")}}, a interface a qual ele pertence.</li> +</ul> + +<h3 id="Dicionário">Dicionário:</h3> + +<p>"Key" = "Chave"</p> + +<p> </p> diff --git a/files/pt-br/web/api/subtlecrypto/index.html b/files/pt-br/web/api/subtlecrypto/index.html new file mode 100644 index 0000000000..a949d1cfa5 --- /dev/null +++ b/files/pt-br/web/api/subtlecrypto/index.html @@ -0,0 +1,83 @@ +--- +title: SubtleCrypto +slug: Web/API/SubtleCrypto +tags: + - API + - Interface + - NeedsTranslation + - Referencia + - TopicStub + - Web Crypto API +translation_of: Web/API/SubtleCrypto +--- +<p>{{APIRef("Web Crypto API")}}</p> + +<p>A interface <code><strong>SubtleCrypto</strong></code> representa um conjunto de criptografias primitivas. E está disponível via propriedades {{domxref("Crypto.subtle")}} disponíveis em uma janela de contexto (via {{domxref("Window.crypto")}}).</p> + +<div class="warning"> +<p>Por especificação: "Desenvolvedores fazendo uso da interface SubtleCrypto devem estar cientes das preocupações associadas com o design e a implementação de vários algoritmos providos. Os algoritmos brutos são providos em ordem para permitir aos desenvolvedores uma felixibilidade máxima na implementação de uma variedade de protocolos e aplicações, cada um deve representar a composição e os parâmetros de segurança em uma maneira única que necessita do uso de algoritmos brutos."</p> +</div> + +<h2 id="Propriedades">Propriedades</h2> + +<p><em>Esta interface não herda e nem implementa nenhuma propriedade.</em></p> + +<h2 id="Métodos">Métodos</h2> + +<p>Esta interface não herda nenhum método</p> + +<dl> + <dt>{{domxref("SubtleCrypto.encrypt()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} da informação criptografada correspondente com o texto, algoritmo e chave key dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.decrypt()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} da informação correspondente ao texto encriptografado, algoritmo e key dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.sign()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de uma assinatura correspondente ao texto, algoritmo e key dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.verify()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de um valor {{jsxref("Boolean")}} indicando se a assinatura dada como parâmetro combina com o texto, algoritmo e key também dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.digest()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de um resumo gerado a partir do algoritmo e texto dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.generateKey()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de uma recentemente gerada {{domxref("CryptoKey")}}, para algoritmos simétricos, ou uma {{domxref("CryptoKeyPair")}}, contendo duas novas keys simétricas, para algoritmos assimétricos, que combina com o algoritmo, os usos e a extrabilidade dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.deriveKey()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de uma recentemente gerada {{domxref("CryptoKey")}} derivada de uma master key e um algoritmo específico dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.deriveBits()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de um buffer recentemente gerado de bits pseudo-randômicos derivados de uma master key e um algoritmo específico dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.importKey()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de uma {{domxref("CryptoKey")}} correspondente ao formato, o algoritmo, a informação da key bruta, o uso e a extrabilidade dados como parâmetros.</dd> + <dt>{{domxref("SubtleCrypto.exportKey()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} deu uma buffer contendo a key no formato requisitado.</dd> + <dt>{{domxref("SubtleCrypto.wrapKey()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de uma key envolvida simetricamente para uso (transferência, armazenamento) em ambientes não seguros. O buffer envolvido retornado será no formato dado nos parâmetros, e contém a key envolvida com a key envolvendo e o algoritmo dado.</dd> + <dt>{{domxref("SubtleCrypto.unwrapKey()")}}</dt> + <dd>Retorna uma {{jsxref("Promise")}} de uma {{domxref("CryptoKey")}} correspondente à key envolvida dada como parâmetro.</dd> +</dl> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>{{ SpecName('Web Crypto API', '#subtlecrypto-interface', 'SubtleCrypto') }}</td> + <td>{{ Spec2('Web Crypto API') }}</td> + <td>Definição inicial.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_de_Browser">Compatibilidade de Browser</h2> + + + +<p>{{Compat("api.SubtleCrypto")}}</p> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li>{{domxref("Crypto")}} e {{domxref("Crypto.subtle")}}.</li> +</ul> |