about summary refs log tree commit diff
path: root/scripts/readmanifest.pm.in
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2005-02-24T17·36+0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2005-02-24T17·36+0000
commit3259ae58119b93ca48a267ec90d7e1efb929fef8 (patch)
tree742731d8af77c491ddfb2c7100a3be1f4a4511a2 /scripts/readmanifest.pm.in
parent95e870a113e98bf23222535d842e525021a15f10 (diff)
* Properly specify the hash algorithm in the manifests, and read it
  too.
* Change the default hash for nix-prefetch-url back to md5, since
  that's what we use in Nixpkgs (for now; a birthday attack is rather
  unlikely there).  

Diffstat (limited to 'scripts/readmanifest.pm.in')
-rw-r--r--scripts/readmanifest.pm.in18
1 files changed, 15 insertions, 3 deletions
diff --git a/scripts/readmanifest.pm.in b/scripts/readmanifest.pm.in
index 0d14ffd1baeb..fa4ac65ac820 100644
--- a/scripts/readmanifest.pm.in
+++ b/scripts/readmanifest.pm.in
@@ -52,6 +52,7 @@ sub readManifest {
     my $narHash;
     my $references;
     my $deriver;
+    my $hashAlgo;
 
     while (<MANIFEST>) {
         chomp;
@@ -75,6 +76,7 @@ sub readManifest {
                 undef $patchType;
                 $references = "";
                 $deriver = "";
+                $hashAlgo = "md5";
 	    }
 
         } else {
@@ -104,7 +106,7 @@ sub readManifest {
                         push @{$narFileList},
                             { url => $url, hash => $hash, size => $size
                             , narHash => $narHash, references => $references
-                            , deriver => $deriver
+                            , deriver => $deriver, hashAlgo => $hashAlgo
                             };
                     }
                 
@@ -119,12 +121,14 @@ sub readManifest {
                         { url => $url, hash => $hash, size => $size
                         , basePath => $basePath, baseHash => $baseHash
                         , narHash => $narHash, patchType => $patchType
+                        , hashAlgo => $hashAlgo
                         };
                 }
 
             }
             
             elsif (/^\s*StorePath:\s*(\/\S+)\s*$/) { $storePath = $1; }
+            elsif (/^\s*HashAlgo:\s*(\S+)\s*$/) { $hashAlgo = $1; }
             elsif (/^\s*Hash:\s*(\S+)\s*$/) { $hash = $1; }
             elsif (/^\s*URL:\s*(\S+)\s*$/) { $url = $1; }
             elsif (/^\s*Size:\s*(\d+)\s*$/) { $size = $1; }
@@ -162,7 +166,11 @@ sub writeManifest
             print MANIFEST "  StorePath: $storePath\n";
             print MANIFEST "  HashAlgo: $narFile->{hashAlgo}\n";
             print MANIFEST "  NarURL: $narFile->{url}\n";
-            print MANIFEST "  MD5: $narFile->{hash}\n";
+            if ($narFile->{hashAlgo} eq "md5") {
+                print MANIFEST "  MD5: $narFile->{hash}\n";
+            } else {
+                print MANIFEST "  Hash: $narFile->{hash}\n";
+            }
             print MANIFEST "  NarHash: $narFile->{narHash}\n";
             print MANIFEST "  Size: $narFile->{size}\n";
             print MANIFEST "  References: $narFile->{references}\n"
@@ -180,7 +188,11 @@ sub writeManifest
             print MANIFEST "  StorePath: $storePath\n";
             print MANIFEST "  HashAlgo: $patch->{hashAlgo}\n";
             print MANIFEST "  NarURL: $patch->{url}\n";
-            print MANIFEST "  MD5: $patch->{hash}\n";
+            if ($patch->{hashAlgo} eq "md5") {
+                print MANIFEST "  MD5: $patch->{hash}\n";
+            } else {
+                print MANIFEST "  Hash: $patch->{hash}\n";
+            }
             print MANIFEST "  NarHash: $patch->{narHash}\n";
             print MANIFEST "  Size: $patch->{size}\n";
             print MANIFEST "  BasePath: $patch->{basePath}\n";