Upgrade pub to work with crypto 1.0.0 or later.
This is necessary since the SDK's repo requires that.
R=kevmoo@google.com
Review URL: https://codereview.chromium.org//1902993003 .
diff --git a/lib/src/barback/barback_server.dart b/lib/src/barback/barback_server.dart
index 2e89284..19082c9 100644
--- a/lib/src/barback/barback_server.dart
+++ b/lib/src/barback/barback_server.dart
@@ -3,11 +3,9 @@
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
-import 'dart:convert';
import 'dart:io';
import 'package:barback/barback.dart';
-import "package:crypto/crypto.dart";
import 'package:mime/mime.dart';
import 'package:path/path.dart' as path;
import 'package:shelf/shelf.dart' as shelf;
@@ -163,12 +161,7 @@
var hashStream = pair.last;
// Allow the asset to be cached based on its content hash.
- var sha = new SHA1();
- await hashStream.forEach((chunk) {
- sha.add(chunk);
- });
-
- var assetSha = BASE64.encode(sha.close());
+ var assetSha = await sha1Stream(hashStream);
var previousSha = request.headers["if-none-match"];
var headers = {
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 569a04f..9683223 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -8,7 +8,8 @@
import 'dart:io';
import 'dart:math' as math;
-import "package:crypto/crypto.dart";
+import "package:convert/convert.dart";
+import "package:crypto/crypto.dart" as crypto;
import 'package:path/path.dart' as path;
import "package:stack_trace/stack_trace.dart";
@@ -486,10 +487,33 @@
}
/// Returns the hex-encoded sha1 hash of [source].
-String sha1(String source) {
- var sha = new SHA1();
- sha.add(source.codeUnits);
- return CryptoUtils.bytesToHex(sha.close());
+String sha1(String source) =>
+ hex.encode(crypto.sha1.convert(source.codeUnits).bytes);
+
+/// Returns the base64-encoded sha1 hash of [stream].
+Future<String> sha1Stream(Stream<List<int>> stream) async {
+ crypto.Digest digest;
+
+ var digestSink = new ChunkedConversionSink<crypto.Digest>.withCallback(
+ (digests) {
+ digest = digests.single;
+ });
+
+ var byteSink = crypto.sha1.startChunkedConversion(digestSink);
+
+ await stream.forEach((chunk) {
+ byteSink.add(chunk);
+ });
+
+ byteSink.close();
+
+ // TODO(rnystrom): this call to `close` should not be needed. Remove when
+ // https://github.com/dart-lang/crypto/issues/33
+ // is fixed.
+ // Does not cause any problems in the mean time.
+ digestSink.close();
+
+ return BASE64.encode(digest.bytes);
}
/// Configures [future] so that its result (success or exception) is passed on
diff --git a/pubspec.yaml b/pubspec.yaml
index aedae65..e49c490 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -10,7 +10,8 @@
args: "^0.13.0"
barback: "^0.15.2"
compiler_unsupported: "^1.13.0-dev"
- crypto: "^0.9.0"
+ convert: "^1.0.0"
+ crypto: "^1.0.0"
glob: "^1.0.0"
http: "^0.11.0"
http_multi_server: ">=1.0.0 <3.0.0"
diff --git a/test/global/activate/activate_hosted_after_git_test.dart b/test/global/activate/activate_hosted_after_git_test.dart
index 50e1c8d..000f041 100644
--- a/test/global/activate/activate_hosted_after_git_test.dart
+++ b/test/global/activate/activate_hosted_after_git_test.dart
@@ -2,8 +2,6 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-import 'package:pub/src/io.dart';
-
import '../../descriptor.dart' as d;
import '../../test_pub.dart';
diff --git a/test/transformer/gets_and_upgrades_a_package_with_a_dev_transformer_test.dart b/test/transformer/gets_and_upgrades_a_package_with_a_dev_transformer_test.dart
index c47a226..d64303b 100644
--- a/test/transformer/gets_and_upgrades_a_package_with_a_dev_transformer_test.dart
+++ b/test/transformer/gets_and_upgrades_a_package_with_a_dev_transformer_test.dart
@@ -6,7 +6,6 @@
import '../descriptor.dart' as d;
import '../test_pub.dart';
-import '../serve/utils.dart';
// Regression test for #1369.
main() {