|
16 | 16 |
|
17 | 17 | part of 'impl_ffi.dart';
|
18 | 18 |
|
19 |
| -Future<EcdhPrivateKey> ecdhPrivateKey_importPkcs8Key( |
| 19 | +Future<EcdhPrivateKeyImpl> ecdhPrivateKey_importPkcs8Key( |
20 | 20 | List<int> keyData,
|
21 | 21 | EllipticCurve curve,
|
22 | 22 | ) async =>
|
23 |
| - _EcdhPrivateKey(_importPkcs8EcPrivateKey(keyData, curve)); |
| 23 | + _EcdhPrivateKeyImpl(_importPkcs8EcPrivateKey(keyData, curve)); |
24 | 24 |
|
25 |
| -Future<EcdhPrivateKey> ecdhPrivateKey_importJsonWebKey( |
| 25 | +Future<EcdhPrivateKeyImpl> ecdhPrivateKey_importJsonWebKey( |
26 | 26 | Map<String, dynamic> jwk,
|
27 | 27 | EllipticCurve curve,
|
28 | 28 | ) async =>
|
29 |
| - _EcdhPrivateKey(_importJwkEcPrivateOrPublicKey( |
| 29 | + _EcdhPrivateKeyImpl(_importJwkEcPrivateOrPublicKey( |
30 | 30 | JsonWebKey.fromJson(jwk),
|
31 | 31 | curve,
|
32 | 32 | isPrivateKey: true,
|
33 | 33 | expectedUse: 'enc',
|
34 | 34 | expectedAlg: null, // ECDH has no validation of 'jwk.alg'
|
35 | 35 | ));
|
36 | 36 |
|
37 |
| -Future<KeyPair<EcdhPrivateKey, EcdhPublicKey>> ecdhPrivateKey_generateKey( |
| 37 | +Future<KeyPair<EcdhPrivateKeyImpl, EcdhPublicKeyImpl>> ecdhPrivateKey_generateKey( |
38 | 38 | EllipticCurve curve,
|
39 | 39 | ) async {
|
40 | 40 | final p = _generateEcKeyPair(curve);
|
41 |
| - return _KeyPair( |
42 |
| - privateKey: _EcdhPrivateKey(p.privateKey), |
43 |
| - publicKey: _EcdhPublicKey(p.publicKey), |
| 41 | + return createKeyPair( |
| 42 | + _EcdhPrivateKeyImpl(p.privateKey), |
| 43 | + _EcdhPublicKeyImpl(p.publicKey), |
44 | 44 | );
|
45 | 45 | }
|
46 | 46 |
|
47 |
| -Future<EcdhPublicKey> ecdhPublicKey_importRawKey( |
| 47 | +Future<EcdhPublicKeyImpl> ecdhPublicKey_importRawKey( |
48 | 48 | List<int> keyData,
|
49 | 49 | EllipticCurve curve,
|
50 | 50 | ) async =>
|
51 |
| - _EcdhPublicKey(_importRawEcPublicKey(keyData, curve)); |
| 51 | + _EcdhPublicKeyImpl(_importRawEcPublicKey(keyData, curve)); |
52 | 52 |
|
53 |
| -Future<EcdhPublicKey> ecdhPublicKey_importSpkiKey( |
| 53 | +Future<EcdhPublicKeyImpl> ecdhPublicKey_importSpkiKey( |
54 | 54 | List<int> keyData,
|
55 | 55 | EllipticCurve curve,
|
56 | 56 | ) async =>
|
57 |
| - _EcdhPublicKey(_importSpkiEcPublicKey(keyData, curve)); |
| 57 | + _EcdhPublicKeyImpl(_importSpkiEcPublicKey(keyData, curve)); |
58 | 58 |
|
59 |
| -Future<EcdhPublicKey> ecdhPublicKey_importJsonWebKey( |
| 59 | +Future<EcdhPublicKeyImpl> ecdhPublicKey_importJsonWebKey( |
60 | 60 | Map<String, dynamic> jwk,
|
61 | 61 | EllipticCurve curve,
|
62 | 62 | ) async =>
|
63 |
| - _EcdhPublicKey(_importJwkEcPrivateOrPublicKey( |
| 63 | + _EcdhPublicKeyImpl(_importJwkEcPrivateOrPublicKey( |
64 | 64 | JsonWebKey.fromJson(jwk),
|
65 | 65 | curve,
|
66 | 66 | isPrivateKey: false,
|
67 | 67 | expectedUse: 'enc',
|
68 | 68 | expectedAlg: null, // ECDH has no validation of 'jwk.alg'
|
69 | 69 | ));
|
70 | 70 |
|
71 |
| -class _EcdhPrivateKey implements EcdhPrivateKey { |
| 71 | +final class _StaticEcdhPrivateKeyImpl implements StaticEcdhPrivateKeyImpl { |
| 72 | + const _StaticEcdhPrivateKeyImpl(); |
| 73 | + |
| 74 | + @override |
| 75 | + Future<EcdhPrivateKeyImpl> importPkcs8Key(List<int> keyData, EllipticCurve curve) => |
| 76 | + ecdhPrivateKey_importPkcs8Key(keyData, curve); |
| 77 | + |
| 78 | + @override |
| 79 | + Future<EcdhPrivateKeyImpl> importJsonWebKey(Map<String, dynamic> jwk, EllipticCurve curve) => |
| 80 | + ecdhPrivateKey_importJsonWebKey(jwk, curve); |
| 81 | + |
| 82 | + @override |
| 83 | + Future<(EcdhPrivateKeyImpl, EcdhPublicKeyImpl)> generateKey(EllipticCurve curve) async { |
| 84 | + final KeyPair<EcdhPrivateKeyImpl, EcdhPublicKeyImpl> keyPair = await ecdhPrivateKey_generateKey(curve); |
| 85 | + |
| 86 | + return (keyPair.privateKey, keyPair.publicKey); |
| 87 | + } |
| 88 | +} |
| 89 | + |
| 90 | +final class _EcdhPrivateKeyImpl implements EcdhPrivateKeyImpl { |
72 | 91 | final _EvpPKey _key;
|
73 | 92 |
|
74 |
| - _EcdhPrivateKey(this._key); |
| 93 | + _EcdhPrivateKeyImpl(this._key); |
75 | 94 |
|
76 | 95 | @override
|
77 | 96 | String toString() {
|
78 | 97 | return 'Instance of \'EcdhPrivateKey\'';
|
79 | 98 | }
|
80 | 99 |
|
81 | 100 | @override
|
82 |
| - Future<Uint8List> deriveBits(int length, EcdhPublicKey publicKey) async { |
83 |
| - if (publicKey is! _EcdhPublicKey) { |
| 101 | + Future<Uint8List> deriveBits(int length, EcdhPublicKeyImpl publicKey) async { |
| 102 | + if (publicKey is! _EcdhPublicKeyImpl) { |
84 | 103 | throw ArgumentError.value(
|
85 | 104 | publicKey,
|
86 | 105 | 'publicKey',
|
@@ -167,10 +186,26 @@ class _EcdhPrivateKey implements EcdhPrivateKey {
|
167 | 186 | Future<Uint8List> exportPkcs8Key() async => _exportPkcs8Key(_key);
|
168 | 187 | }
|
169 | 188 |
|
170 |
| -class _EcdhPublicKey implements EcdhPublicKey { |
| 189 | +final class _StaticEcdhPublicKeyImpl implements StaticEcdhPublicKeyImpl { |
| 190 | + const _StaticEcdhPublicKeyImpl(); |
| 191 | + |
| 192 | + @override |
| 193 | + Future<EcdhPublicKeyImpl> importRawKey(List<int> keyData, EllipticCurve curve) => |
| 194 | + ecdhPublicKey_importRawKey(keyData, curve); |
| 195 | + |
| 196 | + @override |
| 197 | + Future<EcdhPublicKeyImpl> importSpkiKey(List<int> keyData, EllipticCurve curve) => |
| 198 | + ecdhPublicKey_importSpkiKey(keyData, curve); |
| 199 | + |
| 200 | + @override |
| 201 | + Future<EcdhPublicKeyImpl> importJsonWebKey(Map<String, dynamic> jwk, EllipticCurve curve) => |
| 202 | + ecdhPublicKey_importJsonWebKey(jwk, curve); |
| 203 | +} |
| 204 | + |
| 205 | +final class _EcdhPublicKeyImpl implements EcdhPublicKeyImpl { |
171 | 206 | final _EvpPKey _key;
|
172 | 207 |
|
173 |
| - _EcdhPublicKey(this._key); |
| 208 | + _EcdhPublicKeyImpl(this._key); |
174 | 209 |
|
175 | 210 | @override
|
176 | 211 | String toString() {
|
|
0 commit comments