You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.6 KiB
44 lines
1.6 KiB
// Writes the samples of the interoperability of the writer of capsules of
|
|
// datekeys-dart, stage 6b: the capsules of the recipes of
|
|
// test/capsule_interop_support.dart, which this library writes with
|
|
// SeededRandomSource or with the CSPRNG of the platform, their .dkk, and
|
|
// samples.json, the recipes with the name of each file, into a directory.
|
|
// tool/capsule_interop_go_verdicts.go then opens them with Go and writes
|
|
// test/vectors/capsule_interop.json; the tests write the seeded ones again
|
|
// and compare them with what Go read.
|
|
//
|
|
// dart run tool/capsule_interop_dart_samples.dart <directory>
|
|
//
|
|
// ignore_for_file: avoid_print
|
|
import 'dart:convert';
|
|
import 'dart:io';
|
|
|
|
import '../test/capsule_interop_support.dart';
|
|
|
|
Future<void> main(List<String> args) async {
|
|
if (args.length != 1) {
|
|
stderr.writeln(
|
|
'usage: dart run tool/capsule_interop_dart_samples.dart <dir>',
|
|
);
|
|
exit(2);
|
|
}
|
|
final dir = Directory(args.single)..createSync(recursive: true);
|
|
final samples = interopSamples();
|
|
for (var i = 0; i < samples.length; i++) {
|
|
final s = samples[i];
|
|
final w = await writeSample(s);
|
|
File('${dir.path}/$i.dkc').writeAsBytesSync(w.dkc);
|
|
s['file'] = '$i.dkc';
|
|
final dkk = w.dkk;
|
|
if (dkk != null) {
|
|
File('${dir.path}/$i.dkk').writeAsBytesSync(dkk);
|
|
s['dkk'] = '$i.dkk';
|
|
}
|
|
print('${s['name']}: ${w.dkc.length} bytes');
|
|
}
|
|
File('${dir.path}/samples.json').writeAsStringSync(
|
|
const JsonEncoder.withIndent(' ').convert({'samples': samples}),
|
|
);
|
|
print('wrote ${samples.length} samples to ${dir.path}');
|
|
}
|