Skip to content
  • brian m. carlson's avatar
    Add a base implementation of SHA-256 support · 13eeedb5
    brian m. carlson authored and Junio C Hamano's avatar Junio C Hamano committed
    SHA-1 is weak and we need to transition to a new hash function.  For
    some time, we have referred to this new function as NewHash.  Recently,
    we decided to pick SHA-256 as NewHash.  The reasons behind the choice of
    SHA-256 are outlined in the thread starting at [1] and in the commit
    history for the hash function transition document.
    
    Add a basic implementation of SHA-256 based off libtomcrypt, which is in
    the public domain.  Optimize it and restructure it to meet our coding
    standards.  Pull in the update and final functions from the SHA-1 block
    implementation, as we know these function correctly with all compilers.
    This implementation is slower than SHA-1, but more performant
    implementations will be introduced in future commits.
    
    Wire up SHA-256 in the list of hash algorithms, and add a test that the
    algorithm works correctly.
    
    Note that with this patch, it is still not possible to switch to using
    SHA-256 in Git.  Additional patches are needed to prepare the code to
    handle a larger hash algorithm and further test fixes are needed.
    
    [1] https://public-inbox.org/git/20180609224913.GC38834@genre.crustytoothpaste.net/
    
    
    
    Signed-off-by: default avatarbrian m. carlson <sandals@crustytoothpaste.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    13eeedb5