* Handle base-16 hashes in manifests.
This commit is contained in:
parent
041717eda3
commit
a7cee528c5
1 changed files with 12 additions and 1 deletions
|
@ -348,11 +348,22 @@ while (scalar @path > 0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Make sure that the hash declared in the manifest matches what we
|
||||||
|
# downloaded and unpacked.
|
||||||
|
|
||||||
if (defined $finalNarHash) {
|
if (defined $finalNarHash) {
|
||||||
my ($hashAlgo, $hash) = parseHash $finalNarHash;
|
my ($hashAlgo, $hash) = parseHash $finalNarHash;
|
||||||
my $hash2 = `@bindir@/nix-hash --type $hashAlgo --base32 $targetPath`
|
|
||||||
|
# The hash in the manifest can be either in base-16 or base-32.
|
||||||
|
# Handle both.
|
||||||
|
my $extraFlag =
|
||||||
|
($hashAlgo eq "sha256" && length($hash) != 64)
|
||||||
|
? "--base32" : "";
|
||||||
|
|
||||||
|
my $hash2 = `@bindir@/nix-hash --type $hashAlgo $extraFlag $targetPath`
|
||||||
or die "cannot compute hash of path `$targetPath'";
|
or die "cannot compute hash of path `$targetPath'";
|
||||||
chomp $hash2;
|
chomp $hash2;
|
||||||
|
|
||||||
die "hash mismatch in downloaded path $targetPath; expected $hash, got $hash2"
|
die "hash mismatch in downloaded path $targetPath; expected $hash, got $hash2"
|
||||||
if $hash ne $hash2;
|
if $hash ne $hash2;
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue