diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2011-06-08 12:03:34 +0200 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2011-06-08 12:03:34 +0200 |
commit | 12cd178d6eb61306cc99e5e07c463c800d406771 (patch) | |
tree | 90941ebf0adb1c4b3ef9ca780a2b42cb1f2dfb16 /apt-pkg/contrib/sha2.cc | |
parent | d953d210bb54accb416f2144104b79dcd29198ba (diff) | |
parent | 31693a8ff0fe593879ed30a4dde8f9be5b0859bf (diff) |
merge lp:~mvo/apt/sha512-template to add support for sha512
Diffstat (limited to 'apt-pkg/contrib/sha2.cc')
-rw-r--r-- | apt-pkg/contrib/sha2.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/apt-pkg/contrib/sha2.cc b/apt-pkg/contrib/sha2.cc new file mode 100644 index 000000000..4604d3167 --- /dev/null +++ b/apt-pkg/contrib/sha2.cc @@ -0,0 +1,43 @@ +/* + * Cryptographic API. {{{ + * + * SHA-512, as specified in + * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + */ /*}}}*/ + +#ifdef __GNUG__ +#pragma implementation "apt-pkg/sha2.h" +#endif + +#include <apt-pkg/sha2.h> +#include <apt-pkg/strutl.h> + +// SHA2Summation::AddFD - Add content of file into the checksum /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool SHA2SummationBase::AddFD(int Fd,unsigned long Size){ + unsigned char Buf[64 * 64]; + int Res = 0; + int ToEOF = (Size == 0); + while (Size != 0 || ToEOF) + { + unsigned n = sizeof(Buf); + if (!ToEOF) n = min(Size,(unsigned long)n); + Res = read(Fd,Buf,n); + if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read + return false; + if (ToEOF && Res == 0) // EOF + break; + Size -= Res; + Add(Buf,Res); + } + return true; +} + /*}}}*/ + |