• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

google / webcrypto.dart / 25232696112

01 May 2026 08:53PM UTC coverage: 90.337% (-0.1%) from 90.474%
25232696112

push

github

web-flow
ci: trim browser matrix and cache Android AVD (#266)

3730 of 4129 relevant lines covered (90.34%)

1.31 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

80.39
/lib/src/testing/webcrypto/aescbc.dart
1
// Copyright 2020 Google LLC
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
//      http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15
import 'package:webcrypto/webcrypto.dart';
16
import '../utils/utils.dart';
17
import '../utils/testrunner.dart';
18

19
final runner = TestRunner.symmetric<AesCbcSecretKey>(
3✔
20
  algorithm: 'AES-CBC',
21
  importPrivateRawKey: (keyData, keyImportParams) =>
1✔
22
      AesCbcSecretKey.importRawKey(keyData),
1✔
23
  exportPrivateRawKey: (key) => key.exportRawKey(),
2✔
24
  importPrivatePkcs8Key: null, // not supported
25
  exportPrivatePkcs8Key: null,
26
  importPrivateJsonWebKey: (jsonWebKeyData, keyImportParams) =>
1✔
27
      AesCbcSecretKey.importJsonWebKey(jsonWebKeyData),
1✔
28
  exportPrivateJsonWebKey: (key) => key.exportJsonWebKey(),
2✔
29
  generateKey: (generateKeyPairParams) =>
×
30
      AesCbcSecretKey.generateKey(generateKeyPairParams['length']),
×
31
  encryptBytes: (key, data, encryptParams) =>
1✔
32
      key.encryptBytes(data, bytesFromJson(encryptParams, 'iv')!),
2✔
33
  encryptStream: (key, data, encryptParams) =>
1✔
34
      key.encryptStream(data, bytesFromJson(encryptParams, 'iv')!),
2✔
35
  decryptBytes: (key, data, decryptParams) =>
1✔
36
      key.decryptBytes(data, bytesFromJson(decryptParams, 'iv')!),
2✔
37
  decryptStream: (key, data, decryptParams) =>
1✔
38
      key.decryptStream(data, bytesFromJson(decryptParams, 'iv')!),
2✔
39
  testData: _testData,
1✔
40
);
41

42
void main() async {
×
43
  log('generate AES-CBC test case');
×
44
  await runner.generate(
×
45
    generateKeyParams: {'length': 256},
×
46
    importKeyParams: {},
×
47
    encryptDecryptParams: {'iv': bytesToJson(List.generate(16, (i) => i * i))},
×
48
    maxPlaintext: 80,
49
  );
50
  log('--------------------');
×
51

52
  await runner.tests().runTests();
×
53
}
54

55
// Allow single quotes for hardcoded testData written as JSON:
56
// ignore_for_file: prefer_single_quotes
57
final _testData = [
3✔
58
  {
1✔
59
    "name": "A128CBC generated on boringssl/linux at 2020-01-17T22:56:41",
60
    "privateRawKeyData": "nJ0IrxKwen1VN2/rfLsmmA==",
61
    "privateJsonWebKeyData": {
1✔
62
      "kty": "oct",
63
      "use": "enc",
64
      "alg": "A128CBC",
65
      "k": "nJ0IrxKwen1VN2_rfLsmmA",
66
    },
67
    "plaintext":
68
        "dmVzdGlidWx1bSBsdWN0dXMgZGlhbSwgcXVpcwppbnRlcmR1bSBsZW8gYWxpcXVhbSBhYy4gTnVuYyBhYyBtaSBpbiBs",
69
    "ciphertext":
70
        "MlBdzmsDQSRORkwayz7U9P7v87lgsVRRTrWsZi3qnWiqTW+m6K3KRQ4B1I1u+W7r/kBCBQt404253SV0DeIHNe/HUesVja7CB5jvJUQ6GmQ=",
71
    "importKeyParams": {},
1✔
72
    "encryptDecryptParams": {"iv": "AAEECRAZJDFAUWR5kKnE4Q=="},
1✔
73
  },
74
  {
1✔
75
    "name": "A128CBC generated on chrome/linux at 2020-01-17T22:56:49",
76
    "privateRawKeyData": "S9yXvDZ0nsH6cKF5+O6mfA==",
77
    "privateJsonWebKeyData": {
1✔
78
      "kty": "oct",
79
      "alg": "A128CBC",
80
      "k": "S9yXvDZ0nsH6cKF5-O6mfA",
81
    },
82
    "plaintext":
83
        "SW4gdml2ZXJyYSBzZW0gaWQgZXN0IHRpbmNpZHVudApkaWduaXNzaW0uIFBlbGxlbnRlc3F1ZSB0cmlzdGlxdWUsIG5pc2wgc2VkIGw=",
84
    "ciphertext":
85
        "1sh9WWx/u82vLF4BIFG4NtK9eRv8j11m9YkxP5iYpLyBcJn8YYboUM5GDJ3Jz7XO3MAIXO7EXlHcu1R9yaYWwsprjON/tDhjEhYuSGjIz8M=",
86
    "importKeyParams": {},
1✔
87
    "encryptDecryptParams": {"iv": "AAEECRAZJDFAUWR5kKnE4Q=="},
1✔
88
  },
89
  {
1✔
90
    "name": "A128CBC generated on firefox/linux at 2020-01-17T22:56:55",
91
    "privateRawKeyData": "o4QOi2ASkWTf5W9tCLSkAw==",
92
    "privateJsonWebKeyData": {
1✔
93
      "kty": "oct",
94
      "alg": "A128CBC",
95
      "k": "o4QOi2ASkWTf5W9tCLSkAw",
96
    },
97
    "plaintext": "dWUgc2VtcGVyIGp1c3RvIG9yY2ksIHZpdGFlCnZlbmVuYXRp",
98
    "ciphertext":
99
        "Apckyp9bxHAVpo0+MAlAgtcWAa6JZz9OdT/WGskcTVd/e542dAZJ88byiZ2So+2U",
100
    "importKeyParams": {},
1✔
101
    "encryptDecryptParams": {"iv": "AAEECRAZJDFAUWR5kKnE4Q=="},
1✔
102
  },
103
  {
1✔
104
    "name": "A256CBC generated on boringssl/linux at 2020-01-17T22:59:11",
105
    "privateRawKeyData": "b0y6+MqS0ShCvZiloJJAeG8ei8tVIN3OCYIdn1FN74o=",
106
    "privateJsonWebKeyData": {
1✔
107
      "kty": "oct",
108
      "use": "enc",
109
      "alg": "A256CBC",
110
      "k": "b0y6-MqS0ShCvZiloJJAeG8ei8tVIN3OCYIdn1FN74o",
111
    },
112
    "plaintext":
113
        "Z2V0IGZlbGlzLiBWZXN0aWJ1bHVtIHZlc3RpYnVsdW0gbHVjdHVzIGRpYW0sIHF1aQ==",
114
    "ciphertext":
115
        "V8tNAuLWzVMZElQGnNysrBdH6BSRmL1Ui5v5OE6iAqkeI9So2RriGhWbkko9YMtz58qwW70EmVCA4wCM29zAjg==",
116
    "importKeyParams": {},
1✔
117
    "encryptDecryptParams": {"iv": "AAEECRAZJDFAUWR5kKnE4Q=="},
1✔
118
  },
119
  {
1✔
120
    "name": "A256CBC generated on chrome/linux at 2020-01-17T22:59:19",
121
    "privateRawKeyData": "QGCU25fcU5zkTZyaQjX7cAbMCLw+elW/QxwzWzPz74c=",
122
    "privateJsonWebKeyData": {
1✔
123
      "kty": "oct",
124
      "alg": "A256CBC",
125
      "k": "QGCU25fcU5zkTZyaQjX7cAbMCLw-elW_QxwzWzPz74c",
126
    },
127
    "plaintext": "bGlzLCBhdWd1ZSBtYWduYSBtYXhpbXVzCm5lcQ==",
128
    "ciphertext": "EvgXzycWuyiHl72eTX6u2dKKrq2afchTzy5ipVd0DxE=",
129
    "importKeyParams": {},
1✔
130
    "encryptDecryptParams": {"iv": "AAEECRAZJDFAUWR5kKnE4Q=="},
1✔
131
  },
132
  {
1✔
133
    "name": "A256CBC generated on firefox/linux at 2020-01-17T22:59:24",
134
    "privateRawKeyData": "1mfFKdMKMTCHSbor0ZzCLJJoUR5VUZ6Io+ypUuBeAWI=",
135
    "privateJsonWebKeyData": {
1✔
136
      "kty": "oct",
137
      "alg": "A256CBC",
138
      "k": "1mfFKdMKMTCHSbor0ZzCLJJoUR5VUZ6Io-ypUuBeAWI",
139
    },
140
    "plaintext": "c2NlIGEgdmVsaXQgY29tbW9kbywgbGFvcmVldCBuaXNsIGV0LA==",
141
    "ciphertext":
142
        "pjuEkxaRURuXYdb4vMgTJboTw9aFYOYYS10AoqJx4QYb3wDg6yzCec/LpGpqaPXY",
143
    "importKeyParams": {},
1✔
144
    "encryptDecryptParams": {"iv": "AAEECRAZJDFAUWR5kKnE4Q=="},
1✔
145
  },
146
];
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc