Skip to content

Commit 91e80d9

Browse files
authored
Migrate lib/src/crypto_subtle.dart to use dart:js_interop (#86)
* feat: dart:js_interop * chore: const * fix: typo * refactor: Add empty line * refactor: getRandomValues method to simplify code * feat: Add browser_test.dart * refactor: Create test files for each test environment * refactor: Fix test case * feat: Add TypeError case to _translateDomException * feat: Add crypto.getRandomValues test case * refactor: Fix firefox test case
1 parent 11f074c commit 91e80d9

17 files changed

+911
-344
lines changed

lib/src/crypto_subtle.dart

Lines changed: 497 additions & 303 deletions
Large diffs are not rendered by default.

lib/src/impl_js/impl_js.aescbc.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
part of impl_js;
1818

19-
final _aesCbcAlgorithm = subtle.Algorithm(name: 'AES-CBC');
19+
const _aesCbcAlgorithm = subtle.Algorithm(name: 'AES-CBC');
2020

2121
Future<AesCbcSecretKey> aesCbc_importRawKey(List<int> keyData) async {
2222
return _AesCbcSecretKey(await _importKey(
@@ -48,7 +48,7 @@ Future<AesCbcSecretKey> aesCbc_generateKey(int length) async {
4848
}
4949

5050
class _AesCbcSecretKey implements AesCbcSecretKey {
51-
final subtle.CryptoKey _key;
51+
final subtle.JSCryptoKey _key;
5252
_AesCbcSecretKey(this._key);
5353

5454
@override

lib/src/impl_js/impl_js.aesctr.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
part of impl_js;
1818

19-
final _aesCtrAlgorithm = subtle.Algorithm(name: 'AES-CTR');
19+
const _aesCtrAlgorithm = subtle.Algorithm(name: 'AES-CTR');
2020

2121
Future<AesCtrSecretKey> aesCtr_importRawKey(List<int> keyData) async {
2222
return _AesCtrSecretKey(await _importKey(
@@ -48,7 +48,7 @@ Future<AesCtrSecretKey> aesCtr_generateKey(int length) async {
4848
}
4949

5050
class _AesCtrSecretKey implements AesCtrSecretKey {
51-
final subtle.CryptoKey _key;
51+
final subtle.JSCryptoKey _key;
5252
_AesCtrSecretKey(this._key);
5353

5454
@override

lib/src/impl_js/impl_js.aesgcm.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
part of impl_js;
1818

19-
final _aesGcmAlgorithm = subtle.Algorithm(name: 'AES-GCM');
19+
const _aesGcmAlgorithm = subtle.Algorithm(name: 'AES-GCM');
2020

2121
Future<AesGcmSecretKey> aesGcm_importRawKey(List<int> keyData) async {
2222
return _AesGcmSecretKey(await _importKey(
@@ -48,7 +48,7 @@ Future<AesGcmSecretKey> aesGcm_generateKey(int length) async {
4848
}
4949

5050
class _AesGcmSecretKey implements AesGcmSecretKey {
51-
final subtle.CryptoKey _key;
51+
final subtle.JSCryptoKey _key;
5252
_AesGcmSecretKey(this._key);
5353

5454
@override

lib/src/impl_js/impl_js.ecdh.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ Future<EcdhPublicKey> ecdhPublicKey_importJsonWebKey(
125125
}
126126

127127
class _EcdhPrivateKey implements EcdhPrivateKey {
128-
final subtle.CryptoKey _key;
128+
final subtle.JSCryptoKey _key;
129129
_EcdhPrivateKey(this._key);
130130

131131
@override
@@ -172,7 +172,7 @@ class _EcdhPrivateKey implements EcdhPrivateKey {
172172
}
173173

174174
class _EcdhPublicKey implements EcdhPublicKey {
175-
final subtle.CryptoKey _key;
175+
final subtle.JSCryptoKey _key;
176176
_EcdhPublicKey(this._key);
177177

178178
@override

lib/src/impl_js/impl_js.ecdsa.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ Future<EcdsaPublicKey> ecdsaPublicKey_importJsonWebKey(
113113
}
114114

115115
class _EcdsaPrivateKey implements EcdsaPrivateKey {
116-
final subtle.CryptoKey _key;
116+
final subtle.JSCryptoKey _key;
117117
_EcdsaPrivateKey(this._key);
118118

119119
@override
@@ -145,7 +145,7 @@ class _EcdsaPrivateKey implements EcdsaPrivateKey {
145145
}
146146

147147
class _EcdsaPublicKey implements EcdsaPublicKey {
148-
final subtle.CryptoKey _key;
148+
final subtle.JSCryptoKey _key;
149149
_EcdsaPublicKey(this._key);
150150

151151
@override

lib/src/impl_js/impl_js.hkdf.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Future<HkdfSecretKey> hkdfSecretKey_importRawKey(List<int> keyData) async {
2222
return _HkdfSecretKey(await _importKey(
2323
'raw',
2424
keyData,
25-
subtle.Algorithm(name: _hkdfAlgorithmName),
25+
const subtle.Algorithm(name: _hkdfAlgorithmName),
2626
_usagesDeriveBits,
2727
'secret',
2828
// Unlike all other key types it makes no sense to HkdfSecretKey to be
@@ -32,7 +32,7 @@ Future<HkdfSecretKey> hkdfSecretKey_importRawKey(List<int> keyData) async {
3232
}
3333

3434
class _HkdfSecretKey implements HkdfSecretKey {
35-
final subtle.CryptoKey _key;
35+
final subtle.JSCryptoKey _key;
3636
_HkdfSecretKey(this._key);
3737

3838
@override

lib/src/impl_js/impl_js.hmac.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
part of impl_js;
1818

19-
final _hmacAlgorithm = subtle.Algorithm(name: 'HMAC');
19+
const _hmacAlgorithm = subtle.Algorithm(name: 'HMAC');
2020

2121
Future<HmacSecretKey> hmacSecretKey_importRawKey(
2222
List<int> keyData,
@@ -82,7 +82,7 @@ Future<HmacSecretKey> hmacSecretKey_generateKey(Hash hash,
8282
}
8383

8484
class _HmacSecretKey implements HmacSecretKey {
85-
final subtle.CryptoKey _key;
85+
final subtle.JSCryptoKey _key;
8686
_HmacSecretKey(this._key);
8787

8888
@override

lib/src/impl_js/impl_js.pbkdf2.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Future<Pbkdf2SecretKey> pbkdf2SecretKey_importRawKey(List<int> keyData) async {
2222
return _Pbkdf2SecretKey(await _importKey(
2323
'raw',
2424
keyData,
25-
subtle.Algorithm(name: _pbkdf2AlgorithmName),
25+
const subtle.Algorithm(name: _pbkdf2AlgorithmName),
2626
_usagesDeriveBits,
2727
'secret',
2828
// Unlike all other key types it makes no sense to HkdfSecretKey to be
@@ -32,7 +32,7 @@ Future<Pbkdf2SecretKey> pbkdf2SecretKey_importRawKey(List<int> keyData) async {
3232
}
3333

3434
class _Pbkdf2SecretKey implements Pbkdf2SecretKey {
35-
final subtle.CryptoKey _key;
35+
final subtle.JSCryptoKey _key;
3636
_Pbkdf2SecretKey(this._key);
3737

3838
@override

lib/src/impl_js/impl_js.random.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ part of impl_js;
1717
void fillRandomBytes(TypedData destination) {
1818
try {
1919
subtle.getRandomValues(destination);
20-
} on subtle.DomException catch (e) {
20+
} on subtle.JSDomException catch (e) {
2121
throw _translateDomException(e);
2222
}
2323
}

0 commit comments

Comments
 (0)