- bind beecrypt md5/sha1 underneath rpmio.
authorjbj <devnull@localhost>
Wed, 26 Sep 2001 14:45:50 +0000 (14:45 +0000)
committerjbj <devnull@localhost>
Wed, 26 Sep 2001 14:45:50 +0000 (14:45 +0000)
CVS patchset: 5083
CVS date: 2001/09/26 14:45:50

38 files changed:
CHANGES
lib/verify.c
po/cs.po
po/da.po
po/de.po
po/en_RN.po
po/es.po
po/eu_ES.po
po/fi.po
po/fr.po
po/gl.po
po/hu.po
po/id.po
po/is.po
po/it.po
po/ja.po
po/ko.po
po/no.po
po/pl.po
po/pt.po
po/pt_BR.po
po/ro.po
po/rpm.pot
po/ru.po
po/sk.po
po/sl.po
po/sr.po
po/sv.po
po/tr.po
po/uk.po
po/wa.po
po/zh.po
po/zh_CN.GB2312.po
rpm.spec
rpm.spec.in
rpmio/digest.c
rpmio/rpmio_internal.h
rpmio/tdigest.c

diff --git a/CHANGES b/CHANGES
index c5dc1ef..2e77528 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -4,6 +4,7 @@
        - drop lib/md5*.[ch] files in favor of beecrypt.
        - legacy: drop brokenMD5 support (rrpm-2.3.3 to rpm-2.3.8 on sparc).
        - eliminate DYING code.
+       - bind beecrypt md5/sha1 underneath rpmio.
 
 4.0.3 -> 4.0.4:
 
index 9d6d0d8..06a5146 100644 (file)
@@ -318,9 +318,11 @@ int rpmVerifyDigest(Header h)
     if (!hge(h, RPMTAG_SHA1HEADER, &hdt, (void **) &hdigest, NULL)
     && !hge(h, RPMTAG_SHA1RHN, &hdt, (void **) &hdigest, NULL))
     {
+#ifdef DYING
        if (hge(h, RPMTAG_BADSHA1HEADER, &hdt, (void **) &hdigest, NULL))
            flags |= (RPMDIGEST_REVERSE|RPMDIGEST_BCSWAP);
        else
+#endif
            return 0;
     }
     /* Regenerate original header. */
index 67e28de..b9141ce 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-07-24 10:02+0100\n"
 "Last-Translator: Milan Kerslager <kerslage@linux.cz>\n"
 "Language-Team: Czech <cs@li.org>\n"
@@ -3495,17 +3495,17 @@ msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 "balíèek neobsahuje ani jména skupin ani seznam id (nemìlo by se nikdy stát)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "chybí      %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Nevyøe¹ené závislosti pro %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr "%s-%s-%s: kontrola digestu v hlavièce selhala\n"
index f4678ec..c83f912 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-04-05 23:03GMT\n"
 "Last-Translator: Claus Hindsgaul <claus_h@image.dk>\n"
 "Language-Team: Danish <dansk@klid.dk>\n"
@@ -3523,17 +3523,17 @@ msgstr ""
 "pakken har hverken en liste over gruppenavne eller id (det burde ikke kunne "
 "ske)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "manglende  %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Ikke-tilfredsstillede afhængighedskrav for %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index f317bd7..a66044c 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -37,7 +37,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 1998-08-03 18:02+02:00\n"
 "Last-Translator: Karl Eichwalder <ke@SuSE.DE>\n"
 "Language-Team: German <de@li.org>\n"
@@ -3773,17 +3773,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "fehlende { nach %{"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Nicht erfüllte Abhängigkeiten von %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 13839d3..5a5b312 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "Last-Translator: Raimo Koski <rkoski@pp.weppi.fi>\n"
 "Language-Team: Finnish <linux@sot.com>\n"
 "Content-Type: text/plain; charset=\n"
@@ -3608,17 +3608,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "puuttuva '{' '%':n jälkeen"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "%s-%s-%s:n tyydyttämättömät riippuvuudet:"
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 4802716..42d32e7 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3671,17 +3671,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 336ddf9..94d13cd 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.1\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-01-13 22:31+0100\n"
 "Last-Translator: Jesús Bravo Álvarez <jba@pobox.com>\n"
 "Language-Team: Galician <trasno@ceu.fi.udc.es>\n"
@@ -3426,17 +3426,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 52681c7..6f559ce 100644 (file)
--- a/po/is.po
+++ b/po/is.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-07-12 13:25+0000\n"
 "Last-Translator: Richard Allen <ra@hp.is>\n"
 "Language-Team: is <kde-isl@mmedia.is>\n"
@@ -3451,17 +3451,17 @@ msgstr "
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr "í pakkanum eru engir hópalistar (þetta ætti aldrei að koma fyrir)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "vantar     %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Óuppfyllt pakkaskilyrði fyrir %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index c5947c5..3ea610a 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 1999-12-01 22:49 +JST\n"
 "Last-Translator: Kanda Mitsuru <kanda@nn.iij4u.or.jp>\n"
 "Language-Team: JRPM <jrpm@linux.or.jp>\n"
@@ -88,7 +88,7 @@ msgstr "
 # build root [BuildRoot]
 # net share [¥Í¥Ã¥È¶¦Í­]
 # reloate [ºÆÇÛÃÖ/°ÜÆ°¤¹¤ë]
-# $Id: ja.po,v 1.170 2001/09/25 20:51:39 jbj Exp $
+# $Id: ja.po,v 1.171 2001/09/26 14:45:52 jbj Exp $
 #: rpm.c:227
 #, c-format
 msgid "rpm: %s\n"
@@ -3666,17 +3666,17 @@ msgstr ""
 "¥Ñ¥Ã¥±¡¼¥¸¤Ï¥°¥ë¡¼¥×̾¤È id ¥ê¥¹¥È¤ÎξÊý¤¬·ç¤±¤Æ¤¤¤Þ¤¹(¤³¤ì¤Ï·è¤·¤Æµ¯¤­¤Æ¤Ï¤Ê"
 "¤é¤Ê¤¤)"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "%s ¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó\n"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "%s-%s-%s ¤Î¤¿¤á¤Î°Í¸À­¤òËþ¤¿¤·¤Æ¤¤¤Þ¤»¤ó:"
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index e212431..4409ee3 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-09-07 22:03+0900\n"
 "Last-Translator: Jong-Hoon Ryu <redhat4u@netian.com>\n"
 "Language-Team: GNU Translation project <ko@li.org>\n"
@@ -3506,17 +3506,17 @@ msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 "ÆÐÅ°Áö¿¡ ±×·ì À̸§°ú id ¸ñ·ÏÀÌ ¾ø½À´Ï´Ù (Àý´ë ÀÌ·¸°Ô µÇ¾î¼­´Â ¾ÈµË´Ï´Ù)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "´ÙÀ½À» Ã£À» ¼ö ¾ø½À´Ï´Ù    %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "%s-%s-%s ¿¡ ÀÇÁ¸¼º ¹®Á¦ ¹ß»ý: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index a24c821..43744a9 100644 (file)
--- a/po/no.po
+++ b/po/no.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-06-27 12:24+0200\n"
 "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
 "Language-Team: Norwegian <no@li.org>\n"
@@ -3481,17 +3481,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "mangler    %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 0fa49d8..0bcfb93 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 1999-05-25 17:00+0100\n"
 "Last-Translator: Pawe³ Dziekoñski <pdziekonski@mml.ch.pwr.wroc.pl>\n"
 "Language-Team: Polish <pl@li.org>\n"
@@ -3613,17 +3613,17 @@ msgstr ""
 "pakiet nie specyfikuje ani nazwy grupy ani list id (to nie powinno siê "
 "zdarzyæ)"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "brak    %s\n"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Niespe³nione zale¿no¶ci dla %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 0452ac2..81bcd9c 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2000-06-22 01:13+01:00\n"
 "Last-Translator: José Nuno Coelho Sanarra Pires\n"
 "Language-Team: pt <kde@poli.org>\n"
@@ -3486,17 +3486,17 @@ msgstr "o pacote n
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr "o pacote não tem o nome do grupo nem as listas de IDs (nunca deve ocorrer)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "falta     %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Dependências não satisfeitas para o %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index bb00a44..e3f734d 100644 (file)
@@ -4,7 +4,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 
 # , c-format
 #: build.c:36
@@ -3838,17 +3838,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index fa24220..41bfa75 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 1999-04-10 12:00+EST\n"
 "Last-Translator: Cristian Gafton <gafton@redhat.com>\n"
 "Language-Team: Romanian <ro@li.org>\n"
@@ -3426,17 +3426,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 4ec1d88..63d0af0 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index e2e4e50..f905c2c 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-08-29 13:55-0400\n"
 "Last-Translator: Eugene Kanter <eugene@blackcatlinux.com>\n"
 "Language-Team:  Black Cat Linux Team <blackcat-support@blackcatlinux.com>\n"
@@ -3520,17 +3520,17 @@ msgstr ""
 "× ÐÁËÅÔÅ ÎÅÔ ÎÉ ÉÍÅΠÇÒÕÐÐ, ÎÉ ÓÐÉÓËÁ ÉÈ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× (ÔÁËÏÇÏ ÎÅ ÄÏÌÖÎÏ "
 "ÂÙÔØ)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "ÏÔÓÕÔÓÔ×ÕÅÔ %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "îÅÕÄÏ×ÌÅÔ×ÏÒÅÎÎÙÅ ÚÁ×ÉÓÉÍÏÓÔÉ ÄÌÑ %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr "%s-%s-%s: ÎÅÐÒÁ×ÉÌØÎÁÑ ÐÏÄÐÉÓØ ÏÂÌÁÓÔÉ ÚÁÇÏÌÏ×ËÁ ÐÁËÅÔÁ\n"
index 7728f8a..886b193 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 1999-04-08 21:37+02:00\n"
 "Last-Translator: Stanislav Meduna <stano@eunet.sk>\n"
 "Language-Team: Slovak <sk-i18n@rak.isternet.sk>\n"
@@ -3619,17 +3619,17 @@ msgstr ""
 "v balíku chýba tak meno skupiny, ako aj zoznamy identifikácií (nemalo by sa "
 "nikdy sta»)"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "chýbajúce    %s\n"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Nevyrie¹ené závislosti pre %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 2589467..3056b70 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -1,12 +1,12 @@
 # -*- mode:po; coding:iso-latin-2; -*- Slovenian messages for Redhat pkg. mngr.
 # Copyright (C) 2000 Free Software Foundation, Inc.
 # Primo¾ Peterlin <primoz.peterlin@biofiz.mf.uni-lj.si>, 2000.
-# $Id: sl.po,v 1.155 2001/09/25 20:51:53 jbj Exp $
+# $Id: sl.po,v 1.156 2001/09/26 14:45:59 jbj Exp $
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2000-10-08 19:05+0200\n"
 "Last-Translator: Grega Fajdiga <gregor.fajdiga@telemach.net>\n"
 "Language-Team: Slovenian <sl@li.org>\n"
@@ -3603,17 +3603,17 @@ msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 "v paketu manjka tako seznam skupin kot identitet (to se ne sme zgoditi)"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "manjka     %s\n"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Nezadovoljene soodvisnosti za %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 9f7f547..76f3e40 100644 (file)
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "Content-Type: text/plain; charset=\n"
 "Date: 1998-05-02 21:41:47-0400\n"
 
@@ -3593,17 +3593,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, fuzzy, c-format
 msgid "missing    %s"
 msgstr "nedostaje { posle %"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Nezadovoljene meðuzavisnosti za %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index db3b241..01b4f2b 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-09-12 14:18+0200\n"
 "Last-Translator: Göran Uddeborg <goeran@uddeborg.pp.se>\n"
 "Language-Team: Swedish <sv@li.org>\n"
@@ -3487,17 +3487,17 @@ msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 "paketet saknar både gruppnamn och id-listor (detta borde aldrig inträffa)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "saknas     %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "Ouppfyllda beroenden för %s-%s-%s: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr "%s-%s-%s: kontrollsumma för oföränderlig huvudregion misslyckades\n"
index 4e5c592..93196f1 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: 2001-07-05 08:02+300\n"
 "Last-Translator: Nilgun Belma Buguner <nilgun@technologist.com>\n"
 "Language-Team: Turkish <tr@li.org>\n"
@@ -3523,17 +3523,17 @@ msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 "paket hem grup ismi hem de kimlik listelerinden yoksun (bu hiç iyi deðil)\n"
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr "eksik      %s"
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr "%s-%s-%s için tatmin edici olmayan baðýmlýlýklar: "
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr "%s-%s-%s: deðiþmez baþlýk alaný özet denetimi baþarýsýz\n"
index 269be1c..103c58f 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
--- a/po/wa.po
+++ b/po/wa.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
--- a/po/zh.po
+++ b/po/zh.po
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 269be1c..103c58f 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: rpm 4.0.3\n"
-"POT-Creation-Date: 2001-09-25 16:48-0400\n"
+"POT-Creation-Date: 2001-09-26 10:44-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -3431,17 +3431,17 @@ msgstr ""
 msgid "package lacks both group name and id lists (this should never happen)\n"
 msgstr ""
 
-#: lib/verify.c:397
+#: lib/verify.c:399
 #, c-format
 msgid "missing    %s"
 msgstr ""
 
-#: lib/verify.c:490
+#: lib/verify.c:492
 #, c-format
 msgid "Unsatisfied dependencies for %s-%s-%s: "
 msgstr ""
 
-#: lib/verify.c:529
+#: lib/verify.c:531
 #, c-format
 msgid "%s-%s-%s: immutable header region digest check failed\n"
 msgstr ""
index 0aefadb..8de1613 100644 (file)
--- a/rpm.spec
+++ b/rpm.spec
@@ -516,4 +516,4 @@ fi
 - drop lib/md5*.[ch] files in favor of beecrypt.
 - legacy: drop brokenMD5 support (rrpm-2.3.3 to rpm-2.3.8 on sparc).
 - eliminate DYING code.
-
+- bind beecrypt md5/sha1 underneath rpmio.
index c0fe8f1..623af5b 100644 (file)
@@ -516,4 +516,4 @@ fi
 - drop lib/md5*.[ch] files in favor of beecrypt.
 - legacy: drop brokenMD5 support (rrpm-2.3.3 to rpm-2.3.8 on sparc).
 - eliminate DYING code.
-
+- bind beecrypt md5/sha1 underneath rpmio.
index 5c032ed..847d561 100644 (file)
@@ -4,12 +4,17 @@
 
 #include "system.h"
 #include "rpmio_internal.h"
+#include "beecrypt/beecrypt.h"
+#include "beecrypt/md5.h"
+#include "beecrypt/fips180.h"
+#include "beecrypt/sha256.h"
 #include "debug.h"
 
-/*@-redef@*/
-typedef unsigned int uint32;
-typedef unsigned char byte;
-/*@=redef@*/
+#ifdef SHA_DEBUG
+#define        DPRINTF(_a)     fprintf _a
+#else
+#define        DPRINTF(_a)
+#endif
 
 /*@access DIGEST_CTX@*/
 
@@ -20,636 +25,92 @@ struct DIGEST_CTX_s {
     rpmDigestFlags flags;      /*!< Bit(s) to control digest operation. */
     uint32 digestlen;          /*!< No. bytes of digest. */
     uint32 datalen;            /*!< No. bytes in block of plaintext data. */
-    void (*transform) (DIGEST_CTX); /*!< Digest transform. */
-    int doByteReverse;         /*!< Swap bytes in uint32? */
-    uint32 bits[2];            /*!< No. bits of plain text. */
-    uint32 digest[8];          /*!< Message digest. */
-    byte in[64];               /*!< Next block of plain text. */
+    void * param;              /*!< Digest parameters. */
+    int (*Reset) (void * param)
+       /*@modifies param @*/;  /*!< Digest initialize. */
+    int (*Update) (void * param, const byte * data, int len)
+       /*@modifies param @*/;  /*!< Digest transform. */
+    int (*Digest) (void * param, uint32 * data)
+       /*@modifies param, digest @*/;  /*!< Digest finish. */
 };
 
-/*
- * This code implements SHA-1 as defined in FIPS publication 180-1.
- * Based on SHA code originally posted to sci.crypt by Peter Gutmann
- * in message <30ajo5$oe8@ccu2.auckland.ac.nz>.
- * Modified to test for endianness on creation of SHA objects by AMK.
- * Also, the original specification of SHA was found to have a weakness
- * by NSA/NIST.  This code implements the fixed version of SHA.
- *
- * Here's the first paragraph of Peter Gutmann's original posting:
- * - The following is my SHA (FIPS 180) code updated to allow use of the "fixed"
- * SHA, thanks to Jim Gillogly and an anonymous contributor for the information
- * on what's changed in the new version.  The fix is a simple change which
- * involves adding a single rotate in the initial expansion function. It is
- * unknown whether this is an optimal solution to the problem which was
- * discovered in the SHA or whether it's simply a bandaid which fixes the
- * problem with a minimum of effort (for example the reengineering of a great
- * many Capstone chips).
- *
- * Copyright (C) 1995, A.M. Kuchling
- *
- * Distribute and use freely; there are no restrictions on further 
- * dissemination and usage except those imposed by the laws of your 
- * country of residence.
- *
- * Adapted to pike and some cleanup by Niels Möller.
- * Adapted for rpm use from mhash-0.8.3.
- */
-
-/**
- * The SHA f()-functions.  The f1 and f3 functions can be optimized to
- * save one boolean operation each - thanks to Rich Schroeppel,
- * rcs@cs.arizona.edu for discovering this.
- */
-/*#define f1(x,y,z) ( ( x & y ) | ( ~x & z ) )         // Rounds  0-19 */
-#define f1(x,y,z)   ( z ^ ( x & ( y ^ z ) ) )          /* Rounds  0-19 */
-#define f2(x,y,z)   ( x ^ y ^ z )                      /* Rounds 20-39 */
-/*#define f3(x,y,z) ( ( x & y ) | ( x & z ) | ( y & z ) ) // Rounds 40-59 */
-#define f3(x,y,z)   ( ( x & y ) | ( z & ( x | y ) ) )  /* Rounds 40-59 */
-#define f4(x,y,z)   ( x ^ y ^ z )                      /* Rounds 60-79 */
-
-/**
- * The SHA Mysterious Constants.
- */
-#define K1  0x5A827999L                                        /* Rounds  0-19 */
-#define K2  0x6ED9EBA1L                                        /* Rounds 20-39 */
-#define K3  0x8F1BBCDCL                                        /* Rounds 40-59 */
-#define K4  0xCA62C1D6L                                        /* Rounds 60-79 */
-
-/**
- * 32-bit rotate left - kludged with shifts.
- */
-#define ROTL(n,X)  ( ( (X) << (n) ) | ( (X) >> ( 32 - (n) ) ) )
-
-/**
- * The initial expanding function.  The hash function is defined over an
- * 80-word expanded input array W, where the first 16 are copies of the input
- * data, and the remaining 64 are defined by
- *
- * \verbatim
- *      W[ i ] = W[ i - 16 ] ^ W[ i - 14 ] ^ W[ i - 8 ] ^ W[ i - 3 ]
- * \endverbatim
- *
- * This implementation generates these values on the fly in a circular
- * buffer - thanks to Colin Plumb, colin@nyx10.cs.du.edu for this
- * optimization.
- *
- * The updated SHA changes the expanding function by adding a rotate of 1
- * bit.  Thanks to Jim Gillogly, jim@rand.org, and an anonymous contributor
- * for this information
- */
-#define expand(W,i) ( W[ i & 15 ] = \
-                     ROTL( 1, ( W[ i & 15 ] ^ W[ (i - 14) & 15 ] ^ \
-                                W[ (i - 8) & 15 ] ^ W[ (i - 3) & 15 ] ) ) )
-
-/**
- * The prototype SHA sub-round.
- * The fundamental sub-round is:
- *
- * \verbatim
- *      a' = e + ROTL( 5, a ) + f( b, c, d ) + k + data;
- *      b' = a;
- *      c' = ROTL( 30, b );
- *      d' = c;
- *      e' = d;
- * \endverbatim
- *
- * but this is implemented by unrolling the loop 5 times and renaming the
- * variables ( e, a, b, c, d ) = ( a', b', c', d', e' ) each iteration.
- * This code is then replicated 20 times for each of the 4 functions, using
- * the next 20 values from the W[] array each time.
- */
-
-#define subRound(a, b, c, d, e, f, k, data) \
-    ( e += ROTL( 5, a ) + f( b, c, d ) + k + data, b = ROTL( 30, b ) )
-
-/**
- * Perform the SHA transformation.  Note that this code, like MD5, seems to
- * break some optimizing compilers due to the complexity of the expressions
- * and the size of the basic block.  It may be necessary to split it into
- * sections, e.g. based on the four subrounds
- *
- * Note that this function destroys the data area.
- */
-
-/**
- * The core of the SHA algorithm.
- * This alters an existing SHA hash to reflect the addition of 16 longwords
- * of new data.
- * @param private      SHA private data
- */
-static void
-SHA1Transform(DIGEST_CTX ctx)
-{
-    uint32 * in = (uint32 *) ctx->in;
-    uint32 A, B, C, D, E;     /* Local vars */
-#ifdef SHA_DEBUG
-int i;
-#define        DPRINTF(_a)     fprintf _a
-#else
-#define        DPRINTF(_a)
-#endif
-
-    /* Set up first buffer and local data buffer */
-    A = ctx->digest[0];
-    B = ctx->digest[1];
-    C = ctx->digest[2];
-    D = ctx->digest[3];
-    E = ctx->digest[4];
-
-#ifdef SHA_DEBUG
-for (i = 0; i < 16; i++)
-DPRINTF((stderr, "W[%2d]: %08X\n", i, in[i]));
-#endif
-    /* Heavy mangling, in 4 sub-rounds of 20 interations each. */
-#ifdef SHA_DEBUG
-i = 0;
-#endif
-    subRound( A, B, C, D, E, f1, K1, in[ 0] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f1, K1, in[ 1] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f1, K1, in[ 2] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f1, K1, in[ 3] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f1, K1, in[ 4] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f1, K1, in[ 5] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f1, K1, in[ 6] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f1, K1, in[ 7] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f1, K1, in[ 8] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f1, K1, in[ 9] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f1, K1, in[10] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f1, K1, in[11] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f1, K1, in[12] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f1, K1, in[13] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f1, K1, in[14] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f1, K1, in[15] );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f1, K1, expand( in, 16 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f1, K1, expand( in, 17 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f1, K1, expand( in, 18 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f1, K1, expand( in, 19 ) );
-
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f2, K2, expand( in, 20 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f2, K2, expand( in, 21 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f2, K2, expand( in, 22 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f2, K2, expand( in, 23 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f2, K2, expand( in, 24 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f2, K2, expand( in, 25 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f2, K2, expand( in, 26 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f2, K2, expand( in, 27 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f2, K2, expand( in, 28 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f2, K2, expand( in, 29 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f2, K2, expand( in, 30 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f2, K2, expand( in, 31 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f2, K2, expand( in, 32 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f2, K2, expand( in, 33 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f2, K2, expand( in, 34 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f2, K2, expand( in, 35 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f2, K2, expand( in, 36 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f2, K2, expand( in, 37 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f2, K2, expand( in, 38 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f2, K2, expand( in, 39 ) );
-
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f3, K3, expand( in, 40 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f3, K3, expand( in, 41 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f3, K3, expand( in, 42 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f3, K3, expand( in, 43 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f3, K3, expand( in, 44 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f3, K3, expand( in, 45 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f3, K3, expand( in, 46 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f3, K3, expand( in, 47 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f3, K3, expand( in, 48 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f3, K3, expand( in, 49 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f3, K3, expand( in, 50 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f3, K3, expand( in, 51 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f3, K3, expand( in, 52 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f3, K3, expand( in, 53 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f3, K3, expand( in, 54 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f3, K3, expand( in, 55 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f3, K3, expand( in, 56 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f3, K3, expand( in, 57 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f3, K3, expand( in, 58 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f3, K3, expand( in, 59 ) );
-
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f4, K4, expand( in, 60 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f4, K4, expand( in, 61 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f4, K4, expand( in, 62 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f4, K4, expand( in, 63 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f4, K4, expand( in, 64 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f4, K4, expand( in, 65 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f4, K4, expand( in, 66 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f4, K4, expand( in, 67 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f4, K4, expand( in, 68 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f4, K4, expand( in, 69 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f4, K4, expand( in, 70 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f4, K4, expand( in, 71 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f4, K4, expand( in, 72 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f4, K4, expand( in, 73 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f4, K4, expand( in, 74 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, A,B,C,D,E ));
-    subRound( A, B, C, D, E, f4, K4, expand( in, 75 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, E,A,B,C,D ));
-    subRound( E, A, B, C, D, f4, K4, expand( in, 76 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, D,E,A,B,C ));
-    subRound( D, E, A, B, C, f4, K4, expand( in, 77 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, C,D,E,A,B ));
-    subRound( C, D, E, A, B, f4, K4, expand( in, 78 ) );
-DPRINTF((stderr, "%5d: %08X %08X %08X %08X %08X\n", i++, B,C,D,E,A ));
-    subRound( B, C, D, E, A, f4, K4, expand( in, 79 ) );
-
-    /* Build message digest */
-    ctx->digest[0] += A;
-    ctx->digest[1] += B;
-    ctx->digest[2] += C;
-    ctx->digest[3] += D;
-    ctx->digest[4] += E;
-}
-
-/*
- * This code implements the MD5 message-digest algorithm.
- * The algorithm is due to Ron Rivest.  This code was
- * written by Colin Plumb in 1993, no copyright is claimed.
- * This code is in the public domain; do with it what you wish.
- *
- * Equivalent code is available from RSA Data Security, Inc.
- * This code has been tested against that, and is equivalent,
- * except that you don't need to include two pages of legalese
- * with every copy.
- *
- * To compute the message digest of a chunk of bytes, declare an
- * MD5Context structure, pass it to MD5Init, call MD5Update as
- * needed on buffers full of bytes, and then call MD5Final, which
- * will fill a supplied 16-byte array with the digest.
- */
-
-/** The four core functions used in MD5 - F1 is optimized somewhat. */
-/* #define F1(x, y, z) (x & y | ~x & z) */
-#define F1(x, y, z) (z ^ (x & (y ^ z)))
-#define F2(x, y, z) F1(z, x, y)
-#define F3(x, y, z) (x ^ y ^ z)
-#define F4(x, y, z) (y ^ (x | ~z))
-
-/** The central step in the MD5 algorithm. */
-#define MD5STEP(f, w, x, y, z, data, s) \
-       ( w += f(x, y, z) + data,  w = w<<s | w>>(32-s),  w += x )
-
-/**
- * The core of the MD5 algorithm.
- * Update MD5 context with next 64 bytes of plain text.
- * @param private      MD5 private data
- */
-static void
-MD5Transform(DIGEST_CTX ctx)
-{
-    register uint32 * in = (uint32 *)ctx->in;
-    register uint32 a = ctx->digest[0];
-    register uint32 b = ctx->digest[1];
-    register uint32 c = ctx->digest[2];
-    register uint32 d = ctx->digest[3];
-
-    MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
-    MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
-    MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
-    MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
-    MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
-    MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
-    MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
-    MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
-    MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
-    MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
-    MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
-    MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
-    MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
-    MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
-    MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
-    MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
-
-    MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
-    MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
-    MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
-    MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
-    MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
-    MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
-    MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
-    MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
-    MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
-    MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
-    MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
-    MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
-    MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
-    MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
-    MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
-    MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
-
-    MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
-    MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
-    MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
-    MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
-    MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
-    MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
-    MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
-    MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
-    MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
-    MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
-    MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
-    MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
-    MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
-    MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
-    MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
-    MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
-
-    MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
-    MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
-    MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
-    MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
-    MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
-    MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
-    MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
-    MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
-    MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
-    MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
-    MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
-    MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
-    MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
-    MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
-    MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
-    MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
-
-    ctx->digest[0] += a;
-    ctx->digest[1] += b;
-    ctx->digest[2] += c;
-    ctx->digest[3] += d;
-}
-
-static int _ie = 0x44332211;
-/*@-redef@*/
-static union _mendian {
-/*@unused@*/ int i;
-    char b[4];
-} *_endian = (union _mendian *)&_ie;
-/*@=redef@*/
-#define        IS_BIG_ENDIAN()         (_endian->b[0] == '\x44')
-#define        IS_LITTLE_ENDIAN()      (_endian->b[0] == '\x11')
-
-/*
- * Reverse bytes for each integer in buffer.
- * @param buf          data buffer (uint32 aligned address)
- * @param nbytes       no. bytes of data (multiple of sizeof(uint32))
- */
-/*@-shadow@*/
-static void
-byteReverse(byte *buf, unsigned nbytes)
-       /*@modifies *buf @*/
-{
-    unsigned nlongs = nbytes / sizeof(uint32);
-    uint32 t;
-    if (IS_BIG_ENDIAN()) {
-       do {
-           t = (uint32) ((unsigned) buf[3] << 8 | buf[2]) << 16 |
-               ((unsigned) buf[1] << 8 | buf[0]);
-           *(uint32 *) buf = t;
-           buf += 4;
-       } while (--nlongs);
-    } else {
-       do {
-           t = (uint32) ((unsigned) buf[0] << 8 | buf[1]) << 16 |
-               ((unsigned) buf[2] << 8 | buf[3]);
-           *(uint32 *) buf = t;
-           buf += 4;
-       } while (--nlongs);
-    }
-}
-/*@=shadow@*/
-
 DIGEST_CTX
 rpmDigestInit(rpmDigestFlags flags)
 {
     DIGEST_CTX ctx = xcalloc(1, sizeof(*ctx));
 
-#ifdef SHA_DEBUG
-int i;
-DPRINTF((stderr, "*** Init(%x)\n", flags));
-#endif
     ctx->flags = flags;
 
     if (flags & RPMDIGEST_MD5) {
        ctx->digestlen = 16;
        ctx->datalen = 64;
-       ctx->transform = MD5Transform;
-       ctx->digest[0] = 0x67452301;
-       ctx->digest[1] = 0xefcdab89;
-       ctx->digest[2] = 0x98badcfe;
-       ctx->digest[3] = 0x10325476;
-       /* md5 sums are little endian (no swap) so big endian needs the swap. */
-       ctx->doByteReverse = (IS_BIG_ENDIAN()) ? 1 : 0;
+       ctx->param = xcalloc(1, sizeof(md5Param));
+       ctx->Reset = (void *) md5Reset;
+       ctx->Update = (void *) md5Update;
+       ctx->Digest = (void *) md5Digest;
     }
 
     if (flags & RPMDIGEST_SHA1) {
        ctx->digestlen = 20;
        ctx->datalen = 64;
-       ctx->transform = SHA1Transform;
-       ctx->digest[ 0 ] = 0x67452301;
-       ctx->digest[ 1 ] = 0xefcdab89;
-       ctx->digest[ 2 ] = 0x98badcfe;
-       ctx->digest[ 3 ] = 0x10325476;
-       ctx->digest[ 4 ] = 0xc3d2e1f0;
-       /* md5 sums are little endian (no swap) so big endian needs the swap. */
-       ctx->doByteReverse = (IS_BIG_ENDIAN()) ? 0 : 1;
-#ifdef SHA_DEBUG
-for (i =0; i < 5; i++)
-DPRINTF((stderr, "H[%2d]: %X\n", i, ctx->digest[i]));
-#endif
+       ctx->param = xcalloc(1, sizeof(sha1Param));
+       ctx->Reset = (void *) sha1Reset;
+       ctx->Update = (void *) sha1Update;
+       ctx->Digest = (void *) sha1Digest;
     }
 
-    if (flags & RPMDIGEST_REVERSE)
-       ctx->doByteReverse ^= 1;
-
-    ctx->bits[0] = 0;
-    ctx->bits[1] = 0;
+    (void) (*ctx->Reset) (ctx->param);
 
+DPRINTF((stderr, "*** Init(%x) ctx %p param %p\n", flags, ctx, ctx->param));
     return ctx;
 }
 
 void
 rpmDigestUpdate(DIGEST_CTX ctx, const void * data, size_t len)
 {
-    const byte * buf = data;
-    uint32 t;
-
-    /* Update bitcount */
-
-    t = ctx->bits[0];
-    if ((ctx->bits[0] = t + ((uint32) len << 3)) < t)
-       ctx->bits[1]++;         /* Carry from low to high */
-    ctx->bits[1] += len >> 29;
-
-    t = (t >> 3) % ctx->datalen;       /* Bytes already in ctx->in */
-
-    /* Handle any leading odd-sized chunks */
-    if (t) {
-       byte *p = (byte *) ctx->in + t;
-
-       t = ctx->datalen - t;   /* Bytes left in ctx->in */
-       if (len < t) {
-           memcpy(p, buf, len);
-           return;
-       }
-       memcpy(p, buf, t);
-       if (ctx->doByteReverse)
-           byteReverse(ctx->in, ctx->datalen);
-       /*@-moduncon@*/
-       ctx->transform(ctx);
-       /*@=moduncon@*/
-       buf += t;
-       len -= t;
-    }
-
-    /* Process data in ctx->datalen chunks */
-    for (; len >= ctx->datalen; buf += ctx->datalen, len -= ctx->datalen) {
-       memmove(ctx->in, buf, ctx->datalen);
-       if (ctx->doByteReverse)
-           byteReverse(ctx->in, ctx->datalen);
-       /*@-moduncon@*/
-       ctx->transform(ctx);
-       /*@=moduncon@*/
-    }
-
-    /* Handle any remaining bytes of data. */
-    memmove(ctx->in, buf, len);
+DPRINTF((stderr, "*** Update(%p,%p,%d) param %p \"%s\"\n", ctx, data, len, ctx->param, ((char *)data)));
+    (void) (*ctx->Update) (ctx->param, data, len);
 }
 
+static int _ie = 0x44332211;
+/*@-redef@*/
+static union _dendian {
+/*@unused@*/ int i;
+    char b[4];
+} *_endian = (union _dendian *)&_ie;
+/*@=redef@*/
+#define        IS_BIG_ENDIAN()         (_endian->b[0] == '\x44')
+#define        IS_LITTLE_ENDIAN()      (_endian->b[0] == '\x11')
+
 void
 rpmDigestFinal(/*@only@*/ DIGEST_CTX ctx, /*@out@*/ void ** datap,
        /*@out@*/ size_t *lenp, int asAscii)
 {
-    unsigned count = (ctx->bits[0] >> 3) % ctx->datalen;
-    byte * p = ctx->in + count;
+    uint32 * digest = xmalloc(ctx->digestlen);
+    char * t;
+    int i;
 
-    /* Set the first char of padding to 0x80.  This is safe since there is
-       always at least one byte free */
-    *p++ = 0x80;
-
-    /* No. bytes of padding needed to fill buffer. */
-    count = ctx->datalen - 1 - count;
-
-    /* Insure that next block has room for no. of plaintext bits. */
-    if (count < sizeof(ctx->bits)) {
-       memset(p, 0, count);
-       if (ctx->doByteReverse)
-           byteReverse(ctx->in, ctx->datalen);
-       /*@-moduncon@*/
-       ctx->transform(ctx);
-       /*@=moduncon@*/
-       p = ctx->in;
-       count = ctx->datalen;
-    }
+DPRINTF((stderr, "*** Final(%p,%p,%p,%d) param %p digest %p\n", ctx, datap, lenp, asAscii, ctx->param, digest));
+    (void) (*ctx->Digest) (ctx->param, digest);
 
-    /* Pad next block with zeroes, add no. of plaintext bits. */
-    memset(p, 0, count - sizeof(ctx->bits));
-    if (ctx->doByteReverse)
-       byteReverse(ctx->in, ctx->datalen - sizeof(ctx->bits));
-
-    if (ctx->flags & (RPMDIGEST_MD5|RPMDIGEST_BCSWAP)) {
-       ((uint32 *) ctx->in)[14] = ctx->bits[0];
-       ((uint32 *) ctx->in)[15] = ctx->bits[1];
-    } else {
-       ((uint32 *) ctx->in)[14] = ctx->bits[1];
-       ((uint32 *) ctx->in)[15] = ctx->bits[0];
-    }
-    /*@-moduncon@*/
-    ctx->transform(ctx);
-    /*@=moduncon@*/
-
-    if (ctx->doByteReverse)
-       byteReverse((byte *) ctx->digest, ctx->digestlen);
+    if (IS_LITTLE_ENDIAN())
+    for (i = 0; i < (ctx->digestlen/sizeof(uint32)); i++)
+       digest[i] = swapu32(digest[i]);
 
     /* Return final digest. */
     if (!asAscii) {
        if (lenp) *lenp = ctx->digestlen;
        if (datap) {
-           *datap = xmalloc(ctx->digestlen);
-           memcpy(*datap, ctx->digest, ctx->digestlen);
+           *datap = digest;
+           digest = NULL;
        }
     } else {
        if (lenp) *lenp = (2*ctx->digestlen) + 1;
        if (datap) {
-           const byte * s = (const byte *) ctx->digest;
+           const byte * s = (const byte *) digest;
            static const char hex[] = "0123456789abcdef";
-           char * t;
-           int i;
 
            *datap = t = xmalloc((2*ctx->digestlen) + 1);
-
            for (i = 0 ; i < ctx->digestlen; i++) {
                *t++ = hex[ (unsigned)((*s >> 4) & 0x0f) ];
                *t++ = hex[ (unsigned)((*s++   ) & 0x0f) ];
@@ -657,6 +118,11 @@ rpmDigestFinal(/*@only@*/ DIGEST_CTX ctx, /*@out@*/ void ** datap,
            *t = '\0';
        }
     }
+    if (digest) {
+       memset(digest, 0, ctx->digestlen);      /* In case it's sensitive */
+       free(digest);
+    }
+    free(ctx->param);
     memset(ctx, 0, sizeof(*ctx));      /* In case it's sensitive */
     free(ctx);
 }
index 3148649..9773e7b 100644 (file)
@@ -50,10 +50,13 @@ typedef     /*@abstract@*/ struct {
  */
 typedef enum rpmDigestFlags_e {
     RPMDIGEST_MD5      = (1 <<  0),    /*!< MD5 digest. */
-    RPMDIGEST_SHA1     = (1 <<  1),    /*!< SHA1 digest. */
+    RPMDIGEST_SHA1     = (1 <<  1)     /*!< SHA1 digest. */
+#ifdef DYING
     RPMDIGEST_REVERSE  = (1 << 16),    /*!< Should bytes be reversed? */
     RPMDIGEST_BCSWAP   = (1 << 17),    /*!< Should bit count be reversed? */
+#endif
 } rpmDigestFlags;
+#define        RPMDIGEST_MASK  0xffff
 
 typedef /*@abstract@*/ struct DIGEST_CTX_s * DIGEST_CTX;
 
@@ -429,7 +432,9 @@ FD_t c2f(/*@null@*/ void * cookie)
 void fdInitMD5(FD_t fd, int flags)
        /*@modifies fd @*/
 {
+#ifdef DYING
     if (flags) flags = RPMDIGEST_REVERSE;
+#endif
     flags |= RPMDIGEST_MD5;
     fd->digest = rpmDigestInit(flags);
 }
@@ -440,7 +445,9 @@ void fdInitMD5(FD_t fd, int flags)
 void fdInitSHA1(FD_t fd, int flags)
        /*@modifies fd @*/
 {
+#ifdef DYING
     if (flags) flags = RPMDIGEST_REVERSE;
+#endif
     flags |= RPMDIGEST_SHA1;
     fd->digest = rpmDigestInit(flags);
 }
index e268370..ab9627e 100644 (file)
@@ -1,15 +1,6 @@
-#define        ENABLE_BEECRYPT 1
-
 #include "system.h"
 #include "rpmio_internal.h"
 #include "popt.h"
-#ifdef ENABLE_BEECRYPT
-#define        BEEDLLAPI
-#include "beecrypt.h"
-#include "md5.h"
-#include "fips180.h"
-#include "sha256.h"
-#endif
 #include "debug.h"
 
 
@@ -25,7 +16,9 @@ const char * FIPSCdigest = "34aa973cd4c4daa4f61eeb2bdbad27316534016f";
 static struct poptOption optionsTable[] = {
  { "md5", '\0', POPT_BIT_SET,  &flags, RPMDIGEST_MD5,  NULL, NULL },
  { "sha1",'\0', POPT_BIT_SET,  &flags, RPMDIGEST_SHA1, NULL, NULL },
+#ifdef DYING
  { "reverse",'\0', POPT_BIT_SET, &flags, RPMDIGEST_REVERSE,    NULL, NULL },
+#endif
  { "fipsa",'\0', POPT_BIT_SET, &fips, 1,       NULL, NULL },
  { "fipsb",'\0', POPT_BIT_SET, &fips, 2,       NULL, NULL },
  { "fipsc",'\0', POPT_BIT_SET, &fips, 3,       NULL, NULL },
@@ -51,31 +44,22 @@ main(int argc, const char *argv[])
     const char * digest;
     size_t digestlen;
     int asAscii = 1;
-    int reverse;
+    int reverse = 0;
     int rc;
     char appendix;
     int i;
-#ifdef ENABLE_BEECRYPT
-    sha1Param sparam;
-    md5Param mparam;
-    uint32 bdigest[5];
-
-    memset(&sparam, 0, sizeof(sparam));
-    memset(&mparam, 0, sizeof(mparam));
-#endif
 
     optCon = poptGetContext(argv[0], argc, argv, optionsTable, 0);
     while ((rc = poptGetNextOpt(optCon)) > 0)
        ;
 
     if (flags & RPMDIGEST_SHA1) flags &= ~RPMDIGEST_MD5;
+#ifdef DYING
     reverse = (flags & RPMDIGEST_REVERSE);
+#endif
     if (fips) {
        flags &= ~RPMDIGEST_MD5;
        flags |= RPMDIGEST_SHA1;
-#ifdef ENABLE_BEECRYPT
-       (void) sha1Reset(&sparam);
-#endif
        ctx = rpmDigestInit(flags);
        ifn = NULL;
        appendix = ' ';
@@ -83,39 +67,26 @@ main(int argc, const char *argv[])
        switch (fips) {
        case 1:
            ifn = "abc";
-#ifdef ENABLE_BEECRYPT
-           (void) sha1Update(&sparam, (const unsigned char*) ifn, strlen(ifn));
-#endif
            rpmDigestUpdate(ctx, ifn, strlen(ifn));
            sdigest = FIPSAdigest;
            appendix = 'A';
            break;
        case 2:
            ifn = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
-#ifdef ENABLE_BEECRYPT
-           (void) sha1Update(&sparam, (const unsigned char*) ifn, strlen(ifn));
-#endif
            rpmDigestUpdate(ctx, ifn, strlen(ifn));
            sdigest = FIPSBdigest;
            appendix = 'B';
            break;
        case 3:
            ifn = "aaaaaaaaaaa ...";
-           for (i = 0; i < 1000000; i++) {
-#ifdef ENABLE_BEECRYPT
-               (void) sha1Update(&sparam, (const unsigned char*) ifn, 1);
-#endif
+           for (i = 0; i < 1000000; i++)
                rpmDigestUpdate(ctx, ifn, 1);
-           }
            sdigest = FIPSCdigest;
            appendix = 'C';
            break;
        }
        if (ifn == NULL)
            return 1;
-#ifdef ENABLE_BEECRYPT
-       (void) sha1Digest(&sparam, bdigest);
-#endif
        rpmDigestFinal(ctx, (void **)&digest, &digestlen, asAscii);
 
        if (digest) {
@@ -123,11 +94,6 @@ main(int argc, const char *argv[])
            fflush(stdout);
            free((void *)digest);
        }
-#ifdef ENABLE_BEECRYPT
-       for (i = 0; i < 5; i++)
-           fprintf(stdout, "%08x", bdigest[i]);
-       fprintf(stdout, "     BeeCrypt\n");
-#endif
        if (sdigest) {
            fprintf(stdout, "%s     FIPS PUB 180-1 Appendix %c\n", sdigest,
                appendix);
@@ -184,19 +150,9 @@ main(int argc, const char *argv[])
        odigest = NULL;
        (flags & RPMDIGEST_SHA1) ? fdInitSHA1(ofd, reverse) : fdInitMD5(ofd, reverse);
 
-#ifdef ENABLE_BEECRYPT
-       (flags & RPMDIGEST_SHA1)
-           ? (void) sha1Reset(&sparam)
-           : (void) md5Reset(&mparam);
-#endif
        ctx = rpmDigestInit(flags);
 
        while ((nb = Fread(buf, 1, sizeof(buf), ifd)) > 0) {
-#ifdef ENABLE_BEECRYPT
-           (flags & RPMDIGEST_SHA1)
-               ? (void) sha1Update(&sparam, (const unsigned char*) buf, nb)
-               : (void) md5Update(&mparam, (const unsigned char*) buf, nb);
-#endif
            rpmDigestUpdate(ctx, buf, nb);
            (void) Fwrite(buf, 1, nb, ofd);
        }
@@ -212,22 +168,10 @@ main(int argc, const char *argv[])
            : fdFiniMD5(ofd, (void **)&odigest, NULL, asAscii);
        Fclose(ofd);
 
-#ifdef ENABLE_BEECRYPT
-       (flags & RPMDIGEST_SHA1)
-           ? (void) sha1Digest(&sparam, bdigest)
-           : (void) md5Digest(&mparam, bdigest);
-#endif
        rpmDigestFinal(ctx, (void **)&digest, &digestlen, asAscii);
 
        if (digest) {
            fprintf(stdout, "%s     %s\n", digest, ifn);
-#ifdef ENABLE_BEECRYPT
-           {   int imax = (flags & RPMDIGEST_SHA1) ? 5 : 4;
-               for (i = 0; i < imax; i++)
-                   fprintf(stdout, "%08x", bdigest[i]);
-           }
-           fprintf(stdout, "     BeeCrypt\n");
-#endif
            fflush(stdout);
            free((void *)digest);
        }