aboutsummaryrefslogtreecommitdiff
path: root/files/pt-br/web/api/subtlecrypto
diff options
context:
space:
mode:
Diffstat (limited to 'files/pt-br/web/api/subtlecrypto')
-rw-r--r--files/pt-br/web/api/subtlecrypto/derivekey/index.html270
-rw-r--r--files/pt-br/web/api/subtlecrypto/generatekey/index.html197
-rw-r--r--files/pt-br/web/api/subtlecrypto/importkey/index.html169
-rw-r--r--files/pt-br/web/api/subtlecrypto/index.html83
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>