Skip to content
  • Colin Watson's avatar
    libgcrypt: Import replacement CRC operations · e5ba6b26
    Colin Watson authored
    The CRC implementation imported from libgcrypt 1.5.3 is arguably
    non-free, due to being encumbered by the restrictive Internet Society
    licence on RFCs (see e.g. https://wiki.debian.org/NonFreeIETFDocuments).
    Fortunately, libgcrypt has since replaced it with a version that is both
    reportedly better-optimised and doesn't suffer from this encumbrance.
    
    The ideal solution would be to update to a new version of libgcrypt, and
    I spent some time trying to do that.  However, util/import_gcry.py
    requires complex modifications to cope with the new version, and I
    stalled part-way through; furthermore, GRUB's libgcrypt tree already
    contains some backports of upstream changes.  Rather than allowing the
    perfect to be the enemy of the good, I think it's best to backport this
    single change to at least sort out the licensing situation.  Doing so
    won't make things any harder for a future wholesale upgrade.
    
    This commit is mostly a straightforward backport of
    https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commitdiff;h=06e122baa3321483a47bbf82fd2a4540becfa0c9
    
    ,
    but I also imported bufhelp.h from libgcrypt 1.7.0 (newer versions
    required further changes elsewhere).
    
    I've tested that "hashsum -h crc32" still produces correct output for a
    variety of files on both i386-pc and x86_64-emu targets.
    
    Signed-off-by: default avatarColin Watson <cjwatson@ubuntu.com>
    Reviewed-by: default avatarDaniel Kiper <daniel.kiper@oracle.com>
    e5ba6b26