diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2011-06-29 12:45:30 +0100 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2011-06-29 12:45:30 +0100 |
commit | 9abccf4a63b6c887b213678d940fe912233f04c3 (patch) | |
tree | 8a22c910a0c8258f29784614aca9c0ebd2cc32d6 /apt-pkg/contrib/sha2.cc | |
parent | c56c4b82dd77258da5640bf9f63a8db10424b59a (diff) | |
parent | 627e99b0328e05b13600134655253d36575f314d (diff) |
merge lp:~mvo/apt/abi-break
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; +} + /*}}}*/ + |