about summary refs log tree commit diff
path: root/src/libutil/hash.hh
AgeCommit message (Collapse)AuthorFilesLines
2018-12-13 Support SRI hashesEelco Dolstra1-3/+4
SRI hashes (https://www.w3.org/TR/SRI/) combine the hash algorithm and a base-64 hash. This allows more concise and standard hash specifications. For example, instead of import <nix/fetchurl.nl> { url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz; sha256 = "5d22dad058d5c800d65a115f919da22938c50dd6ba98c5e3a183172d149840a4"; }; you can write import <nix/fetchurl.nl> { url = https://nixos.org/releases/nix/nix-2.1.3/nix-2.1.3.tar.xz; hash = "sha256-XSLa0FjVyADWWhFfkZ2iKTjFDda6mMXjoYMXLRSYQKQ="; }; In fixed-output derivations, the outputHashAlgo is no longer mandatory if outputHash specifies the hash (either as an SRI or in the old "<type>:<hash>" format). 'nix hash-{file,path}' now print hashes in SRI format by default. I also reverted them to use SHA-256 by default because that's what we're using most of the time in Nixpkgs. Suggested by @zimbatm.
2017-10-30 builtins.fetchgit: Support importing a working treeEelco Dolstra1-2/+0
For example, you can write src = fetchgit ./.; and if ./. refers to an unclean working tree, that tree will be copied to the Nix store. This removes the need for "cleanSource".
2017-07-30 Replace Unicode quotes in user-facing strings by ASCIIJörg Thalheim1-1/+1
Relevant RFC: NixOS/rfcs#4 $ ag -l | xargs sed -i -e "/\"/s/’/'/g;/\"/s/‘/'/g"
2017-07-04 Support base-64 hashesEelco Dolstra1-26/+25
Also simplify the Hash API. Fixes #1437.
2016-04-20 Cache path info lookups in SQLiteEelco Dolstra1-1/+11
This re-implements the binary cache database in C++, allowing it to be used by other Store backends, in particular the S3 backend.
2016-01-27 Define HashType's size to allow it to be forward-declaredEelco Dolstra1-1/+1
2016-01-27 Make hashLength32() a method of HashEelco Dolstra1-3/+12
2015-11-04 Support SHA-512 hashesEelco Dolstra1-2/+3
Fixes #679. Note: on x86_64, SHA-512 is considerably faster than SHA-256 (198 MB/s versus 131 MB/s).
2012-10-23 If hashes do not match, print them in base-32 for SHA-1/SHA-256Eelco Dolstra1-0/+3
Fixes #57.
2012-07-18 Use "#pragma once" to prevent repeated header file inclusionEelco Dolstra1-5/+1
2011-12-15 * Refactoring: move sink/source buffering into separate classes.Eelco Dolstra1-2/+3
* Buffer the HashSink. This speeds up hashing a bit because it prevents lots of calls to the hash update functions (e.g. nix-hash went from 9.3s to 8.7s of user time on the closure of my /var/run/current-system).
2011-12-02 * Move parseHash16or32 into libutil, and use in nix-hash.Eelco Dolstra1-0/+3
2010-11-16 * Store the size of a store path in the database (to be precise, theEelco Dolstra1-3/+4
size of the NAR serialisation of the path, i.e., `nix-store --dump PATH'). This is useful for Hydra.
2010-03-09 * In `nix-store --export', abort if the contents of a path hasEelco Dolstra1-1/+2
changed. This prevents corrupt paths from spreading to other machines. Note that checking the hash is cheap because we're hashing anyway (because of the --sign feature).
2008-12-03 * Pass HashType values instead of strings.Eelco Dolstra1-0/+3
2008-05-21 * GCC 4.3.0 (Fedora 9) compatibility fixes. Reported by Gour andEelco Dolstra1-1/+1
Armijn Hemel.
2007-02-21 * `nix-store --export --sign': sign the Nix archive using the RSA keyEelco Dolstra1-1/+18
in /nix/etc/nix/signing-key.sec
2006-12-12 * New primop builtins.filterSource, which can be used to filter filesEelco Dolstra1-1/+4
from a source directory. All files for which a predicate function returns true are copied to the store. Typical example is to leave out the .svn directory: stdenv.mkDerivation { ... src = builtins.filterSource (path: baseNameOf (toString path) != ".svn") ./source-dir; # as opposed to # src = ./source-dir; } This is important because the .svn directory influences the hash in a rather unpredictable and variable way.
2006-09-20 * Print a better error message for wrong hashes (NIX-49).Eelco Dolstra1-0/+3
2006-09-04 * Use a proper namespace.Eelco Dolstra1-3/+5
* Optimise header file usage a bit. * Compile the parser as C++.
2006-02-01 * bsdiff updated to 4.3. This makes Nix depend on libbz2.Eelco Dolstra1-1/+1
2005-11-16 * Did something useful while waiting at IAD: reference scanning is nowEelco Dolstra1-0/+2
much faster.
2005-01-17 * Removed the `id' attribute hack.Eelco Dolstra1-3/+6
* Formalise the notion of fixed-output derivations, i.e., derivations for which a cryptographic hash of the output is known in advance. Changes to such derivations should not propagate upwards through the dependency graph. Previously this was done by specifying the hash component of the output path through the `id' attribute, but this is insecure since you can lie about it (i.e., you can specify any hash and then produce a completely different output). Now the responsibility for checking the output is moved from the builder to Nix itself. A fixed-output derivation can be created by specifying the `outputHash' and `outputHashAlgo' attributes, the latter taking values `md5', `sha1', and `sha256', and the former specifying the actual hash in hexadecimal or in base-32 (auto-detected by looking at the length of the attribute value). MD5 is included for compatibility but should be considered deprecated. * Removed the `drvPath' pseudo-attribute in derivation results. It's no longer necessary. * Cleaned up the support for multiple output paths in derivation store expressions. Each output now has a unique identifier (e.g., `out', `devel', `docs'). Previously there was no way to tell output paths apart at the store expression level. * `nix-hash' now has a flag `--base32' to specify that the hash should be printed in base-32 notation. * `fetchurl' accepts parameters `sha256' and `sha1' in addition to `md5'. * `nix-prefetch-url' now prints out a SHA-1 hash in base-32. (TODO: a flag to specify the hash.)
2005-01-14 * Shorten SHA-256 hashes used in store path name generation to 160Eelco Dolstra1-5/+19
bits, then encode them in a radix-32 representation (using digits and letters except e, o, u, and t). This produces store paths like /nix/store/4i0zb0z7f88mwghjirkz702a71dcfivn-aterm-2.3.1. The nice thing about this is that the hash part of the file name is still 32 characters, as before with MD5. (Of course, shortening SHA-256 to 160 bits makes it no better than SHA-160 in theory, but hopefully it's a bit more resistant to attacks; it's certainly a lot slower.)
2005-01-14 * Start move towards SHA-256 hashes instead of MD5.Eelco Dolstra1-1/+1
* Start cleaning up unique store path generation (they weren't always unique; in particular the suffix ("-aterm-2.2", "-builder.sh") was not part of the hash, therefore changes to the suffix would cause multiple store objects with the same hash).
2005-01-14 * Add SHA-256.Eelco Dolstra1-3/+3
* Tests for the various hashes.
2005-01-13 * Added SHA-1 support. `nix-hash' now has an option `--type sha1' toEelco Dolstra1-3/+3
select SHA-1 hashing.
2005-01-13 * Refactoring to support SHA-1.Eelco Dolstra1-3/+13
2003-11-18 * Source tree refactoring.Eelco Dolstra1-0/+51