1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
|
---
title: SubtilKrypto.GenereraNyckel()
slug: Web/API/SubtleCrypto/genereraNyckel
tags:
- API
- Metoder
- Referenser
- SubtilKrypto
- Webb Krypto API
translation_of: Web/API/SubtleCrypto/generateKey
---
<p>{{APIRef("Web Crypto API")}}</p>
<p><strong>SubtilKrypto.genereraNyckel() </strong> metoden returnerar en {{jsxref("Promise")}} av en nybildad {{domxref("CryptoKey")}}, för symmetriska algoritmer, eller en {{domxref("CryptoKeyPair")}}, innehållande två nyutvecklade nycklar, för asymmetrisk algoritm, som matchar algoritmen, användningarna och extraherbarheten ges som parametrar.</p>
<h2 id="Syntax">Syntax</h2>
<pre class="syntaxbox">var <em>resultat</em> = <em>crypto.subtle</em><code>.genereraNyckel(<em>algo</em>, <em>extraherbart</em>,<em>nyckelBruk</em>)</code>;
</pre>
<h3 id="Parametrar">Parametrar</h3>
<ul>
<li><em><code>algo</code></em> är ett ordboksobjekt som definierar nyckelgenereringsfunktionen som ska användas. Stödjande algoer är: <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>, och <code>DH</code>. Formatet av ordboksobjekt är:
<ul>
<li>
<p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;"><code>"namn"</code>, </span></font>vilket motsvarar ett av de stödda algoerna som anges ovan,</p>
</li>
<li>
<p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;">"modulDimension"<code>, </code></span></font>vilket motsvarar antalet siffror som används i modulen</p>
</li>
<li>
<p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;"><code>"publikExponent</code>",</span></font> a {{jsxref("Uint8Array")}} representerar den offentliga exponenten</p>
</li>
<li>
<p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;">"hashFunktion</span></font><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;">", </span></font>ett ordbordsobjekt som refererar till hashalgoritmen att använda. Till exempel:</p>
<ul>
<li>
<p><font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: #eeeeee;"><code>{namn: "SHA-512"}</code></span></font></p>
</li>
</ul>
</li>
</ul>
</li>
<li><code><em>extraherbart</em></code> är en {{jsxref("Boolean")}} Indikerar om nyckeln kan extraheras från {{domxref("CryptoKey")}} objekt på ett senare stadium.</li>
<li><code><em>nyckelBruk</em></code> är en {{jsxref("Array")}} vilket indikerar vad som kan göras med den nybildade nyckeln. Möjliga värden för fälten är:
<ul>
<li><code>"enkrypt"</code>, låter nyckeln användas för{{glossary("encryption", "encrypting")}} meddelanden.</li>
<li><code>"dekrypt"</code>, låter nyckeln användas för {{glossary("decryption", "decrypting")}} meddelanden.</li>
<li><code>"signum"</code>, låter nyckeln användas för {{glossary("signature", "signing")}} meddelanden.</li>
<li><code>"verifik"</code>, låter nyckeln användas för {{glossary("verification", "verifying the signature")}} av meddelanden.</li>
<li><code>"deriveKey"</code>, låter nyckeln användas som en basnyckel när en ny nyckel hämtas.</li>
<li><code>"derivBitar"</code>, låter nyckeln användas som en basnyckel när man tar bort bitar av data för användning i kryptografiska primitiver.</li>
<li><code>"vikNyckel"</code>, låter nyckeln slå in en symmetrisk nyckel för användning (överföring, lagring) i osäkra miljöer.</li>
<li><code>"osvepKey"</code>, tillåter nyckeln att packa upp en symmetrisk nyckel för användning (överföring, lagring) i osäkra miljöer.</li>
</ul>
</li>
</ul>
<h3 id="Returvärde">Returvärde</h3>
<ul>
<li><code><em>resultat</em></code> är en{{jsxref("Promise")}} som returnerar den genererade nyckeln som en{{domxref("CryptoKey")}} eller en {{domxref("CryptoKeyPair")}}.</li>
</ul>
<h3 id="Undantag">Undantag</h3>
<p>Löftet avvisas när följande undantag uppstår:</p>
<ul>
<li>{{exception("SyntaxError")}} när <font face="consolas, Liberation Mono, courier, monospace"><span style="background-color: rgba(220, 220, 220, 0.5);"><em>nyckelBruk</em></span></font> är tom men den genererade symmetriska nyckeln är av typen <code>"hemlig"</code> eller <code>"privat"</code> eller den genererade privata komponenten av det genererade asymmetriska tangentparet är tomt.</li>
</ul>
<h2 id="Specifikationer">Specifikationer</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specifikation</th>
<th scope="col">Status</th>
<th scope="col">Kommentar</th>
</tr>
<tr>
<td>{{ SpecName('Web Crypto API', '#dfn-SubtleCrypto-method-generateKey', 'SubtleCrypto.generateKey()') }}</td>
<td>{{ Spec2('Web Crypto API') }}</td>
<td>Initial definition.</td>
</tr>
</tbody>
</table>
<h2 id="Webbläsarkompatibilitet">Webbläsarkompatibilitet</h2>
<p>{{ CompatibilityTable() }}</p>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Function</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>grundläggande stöd</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>Funktion</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>grundläggande stöd</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>
<p> </p>
<p> </p>
</div>
<h2 id="Se_även">Se även</h2>
<ul>
<li>{{domxref("Crypto")}} och {{domxref("Crypto.subtle")}}.</li>
<li>{{domxref("SubtleCrypto")}}, gränssnittet tillhör det.</li>
</ul>
|