Skip to content

Commit 936f1a9

Browse files
authored
Merge pull request #210 from dint-dev/fix/ci
Refactoring
2 parents a0ee041 + 171000b commit 936f1a9

File tree

18 files changed

+268
-259
lines changed

18 files changed

+268
-259
lines changed

.github/workflows/dart.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ jobs:
6161
matrix:
6262
package:
6363
- cryptography
64+
- cryptography_test
6465
- jwk
6566
compiler:
6667
- vm

cryptography/lib/src/browser/_javascript_bindings.dart

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,13 @@ Future<ByteBuffer> decrypt(
8181
}
8282

8383
@internal
84-
Future<ByteBuffer> deriveBits(
84+
Future<Uint8List> deriveBits(
8585
JSAny algorithm,
8686
CryptoKey cryptoKey,
8787
JSNumber bits,
8888
) async {
8989
final js = await _deriveBits(algorithm, cryptoKey, bits).toDart;
90-
return js.toDart;
90+
return js.toDart.asUint8List();
9191
}
9292

9393
@internal
@@ -134,9 +134,9 @@ Future<Jwk> exportKeyWhenJwk(CryptoKey key) async {
134134
}
135135

136136
@internal
137-
Future<ByteBuffer> exportKeyWhenRaw(CryptoKey key) async {
137+
Future<Uint8List> exportKeyWhenRaw(CryptoKey key) async {
138138
final js = await _exportKey('raw'.toJS, key).toDart;
139-
return (js as JSArrayBuffer).toDart;
139+
return (js as JSArrayBuffer).toDart.asUint8List();
140140
}
141141

142142
@internal
@@ -202,13 +202,13 @@ JSUint8Array jsUint8ListFrom(List<int> data) {
202202
}
203203

204204
@internal
205-
Future<ByteBuffer> sign(
205+
Future<Uint8List> sign(
206206
JSAny algorithm,
207207
CryptoKey key,
208208
JSUint8Array data,
209209
) async {
210210
final js = await _sign(algorithm, key, data).toDart;
211-
return js.toDart;
211+
return js.toDart.asUint8List();
212212
}
213213

214214
@internal
@@ -330,6 +330,13 @@ extension type AesKeyGenParams._(JSObject jsObject) {
330330
});
331331
}
332332

333+
@internal
334+
extension type AlgorithmNameParams._(JSObject jsObject) {
335+
external factory AlgorithmNameParams({
336+
required JSString name,
337+
});
338+
}
339+
333340
@internal
334341
extension type CryptoKey._(JSObject _) implements JSObject {
335342
external JSObject get algorithm;
@@ -346,8 +353,8 @@ extension type CryptoKeyPair._(JSObject jsObject) {
346353
}
347354

348355
@internal
349-
extension type EcdhKeyDeriveParams._(JSObject jsObject) {
350-
external factory EcdhKeyDeriveParams({
356+
extension type DeriveParamsWhenPublicKey._(JSObject jsObject) {
357+
external factory DeriveParamsWhenPublicKey({
351358
required JSString name,
352359
required CryptoKey public,
353360
});

cryptography/lib/src/browser/browser_secret_key.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,7 @@ class BrowserSecretKey extends SecretKey {
9595
return existing;
9696
}
9797
try {
98-
final byteBuffer = await web_crypto.exportKeyWhenRaw(jsCryptoKey);
99-
final bytes = Uint8List.view(byteBuffer);
98+
final bytes = await web_crypto.exportKeyWhenRaw(jsCryptoKey);
10099
final secretKeyData = SecretKeyData(
101100
bytes,
102101
overwriteWhenDestroyed: true,

cryptography/lib/src/browser/ecdh.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import 'dart:js_interop';
1616
import 'dart:math';
17-
import 'dart:typed_data';
1817

1918
import 'package:cryptography/cryptography.dart';
2019

@@ -108,15 +107,15 @@ class BrowserEcdh extends Ecdh {
108107
final jsPrivateKey = await jsPrivateKeyFuture;
109108
final jsPublicKey = await jsPublicKeyFuture;
110109
try {
111-
final byteBuffer = await web_crypto.deriveBits(
112-
web_crypto.EcdhKeyDeriveParams(
110+
final derivedBytes = await web_crypto.deriveBits(
111+
web_crypto.DeriveParamsWhenPublicKey(
113112
name: 'ECDH'.toJS,
114113
public: jsPublicKey,
115114
).jsObject,
116115
jsPrivateKey.jsPrivateKeyForEcdh!,
117116
(8 * length).toJS,
118117
);
119-
return SecretKey(Uint8List.view(byteBuffer));
118+
return SecretKey(derivedBytes);
120119
} catch (error, stackTrace) {
121120
throw StateError(
122121
'Web Cryptography throw an error: $error\n$stackTrace',

cryptography/lib/src/browser/ecdsa.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import 'dart:js_interop';
1616
import 'dart:math';
17-
import 'dart:typed_data';
1817

1918
import 'package:cryptography/cryptography.dart';
2019

@@ -94,7 +93,7 @@ class BrowserEcdsa extends Ecdsa {
9493
allowDeriveBits: true,
9594
);
9695
final jsCryptoKey = browserEcKeyPair.jsPrivateKeyForEcdsa!;
97-
final byteBuffer = await web_crypto.sign(
96+
final signatureBytes = await web_crypto.sign(
9897
web_crypto.EcdsaParams(
9998
name: 'ECDSA'.toJS,
10099
hash: BrowserHashAlgorithmMixin.hashAlgorithmNameFor(
@@ -106,7 +105,7 @@ class BrowserEcdsa extends Ecdsa {
106105
web_crypto.jsUint8ListFrom(message),
107106
);
108107
return Signature(
109-
Uint8List.view(byteBuffer),
108+
signatureBytes,
110109
publicKey: await publicKeyFuture,
111110
);
112111
}

cryptography/lib/src/browser/hkdf.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,12 @@
1313
// limitations under the License.
1414

1515
import 'dart:js_interop';
16-
import 'dart:typed_data';
1716

1817
import 'package:cryptography/cryptography.dart';
1918
import 'package:cryptography/src/browser/hash.dart';
2019

21-
import '_javascript_bindings.dart' show jsUint8ListFrom;
2220
import '_javascript_bindings.dart' as web_crypto;
21+
import '_javascript_bindings.dart' show jsUint8ListFrom;
2322

2423
/// HKDF implementation that uses _Web Cryptography API_ in browsers.
2524
///
@@ -49,7 +48,7 @@ class BrowserHkdf extends Hkdf {
4948
);
5049
}
5150
final jsCryptoKey = await _jsCryptoKey(secretKey);
52-
final byteBuffer = await web_crypto.deriveBits(
51+
final bytes = await web_crypto.deriveBits(
5352
web_crypto.HkdfParams(
5453
name: 'HKDF'.toJS,
5554
hash: hashAlgorithmName.toJS,
@@ -59,7 +58,7 @@ class BrowserHkdf extends Hkdf {
5958
jsCryptoKey,
6059
(8 * outputLength).toJS,
6160
);
62-
return SecretKeyData(Uint8List.view(byteBuffer));
61+
return SecretKeyData(bytes);
6362
}
6463

6564
Future<web_crypto.CryptoKey> _jsCryptoKey(SecretKey secretKey) async {

cryptography/lib/src/browser/hmac.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// limitations under the License.
1414

1515
import 'dart:js_interop';
16-
import 'dart:typed_data';
1716

1817
import 'package:cryptography/cryptography.dart';
1918

@@ -56,12 +55,12 @@ class BrowserHmac extends Hmac {
5655
throw ArgumentError.value(aad, 'aad', 'AAD is unsupported by HMAC');
5756
}
5857
final jsCryptoKey = await _jsCryptoKey(secretKey);
59-
final byteBuffer = await web_crypto.sign(
58+
final macBytes = await web_crypto.sign(
6059
'HMAC'.toJS,
6160
jsCryptoKey,
6261
jsUint8ListFrom(bytes),
6362
);
64-
return Mac(Uint8List.view(byteBuffer));
63+
return Mac(macBytes);
6564
}
6665

6766
Future<web_crypto.CryptoKey> _jsCryptoKey(SecretKey secretKey) async {

cryptography/lib/src/browser/pbkdf2.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
// limitations under the License.
1414

1515
import 'dart:js_interop';
16-
import 'dart:typed_data';
1716

1817
import 'package:cryptography/cryptography.dart';
1918

@@ -48,7 +47,7 @@ class BrowserPbkdf2 extends Pbkdf2 {
4847
final jsCryptoKey = await _jsCryptoKey(secretKey);
4948

5049
// subtle.deriveBits(...)
51-
final byteBuffer = await web_crypto.deriveBits(
50+
final derivedBytes = await web_crypto.deriveBits(
5251
web_crypto.Pkdf2Params(
5352
name: 'PBKDF2'.toJS,
5453
hash: macAlgorithm.hashAlgorithmWebCryptoName.toJS,
@@ -59,7 +58,7 @@ class BrowserPbkdf2 extends Pbkdf2 {
5958
bits.toJS,
6059
);
6160

62-
return SecretKey(Uint8List.view(byteBuffer));
61+
return SecretKey(derivedBytes);
6362
}
6463

6564
Future<web_crypto.CryptoKey> _jsCryptoKey(SecretKey secretKey) async {

cryptography/lib/src/browser/rsa_pss.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class BrowserRsaPss extends RsaPss {
107107
webCryptoAlgorithm: _webCryptoAlgorithm,
108108
webCryptoHash: webCryptoHash,
109109
);
110-
final byteBuffer = await web_crypto.sign(
110+
final signatureBytes = await web_crypto.sign(
111111
web_crypto.RsaPssParams(
112112
name: _webCryptoAlgorithm.toJS,
113113
saltLength: nonceLengthInBytes.toJS,
@@ -116,7 +116,7 @@ class BrowserRsaPss extends RsaPss {
116116
Uint8List.fromList(message).toJS,
117117
);
118118
return Signature(
119-
Uint8List.view(byteBuffer),
119+
signatureBytes,
120120
publicKey: await publicKeyFuture,
121121
);
122122
}

cryptography/lib/src/browser/rsa_ssa_pkcs1v15.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
import 'dart:js_interop';
1616
import 'dart:math';
17-
import 'dart:typed_data';
1817

1918
import 'package:cryptography/cryptography.dart';
2019

@@ -95,13 +94,13 @@ class BrowserRsaSsaPkcs1v15 extends RsaSsaPkcs1v15 {
9594
webCryptoAlgorithm: _webCryptoAlgorithm,
9695
webCryptoHash: webCryptoHash,
9796
);
98-
final byteBuffer = await web_crypto.sign(
97+
final signatureBytes = await web_crypto.sign(
9998
_webCryptoAlgorithm.toJS,
10099
jsCryptoKey,
101100
web_crypto.jsUint8ListFrom(message),
102101
);
103102
return Signature(
104-
Uint8List.view(byteBuffer),
103+
signatureBytes,
105104
publicKey: await publicKeyFuture,
106105
);
107106
}

0 commit comments

Comments
 (0)