Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / foam / primitives / hashes / SHA1 / SHA1Digest.C
blob271f1235d74dfd9cd231033c0ec7ddb71534a441
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 \*---------------------------------------------------------------------------*/
26 #include "SHA1Digest.H"
27 #include "IOstreams.H"
29 #include <cstring>
31 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
33 //! @cond fileScope
34 const char hexChars[] = "0123456789abcdef";
35 //! @endcond fileScope
38 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
40 Foam::SHA1Digest::SHA1Digest()
42     clear();
46 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
48 void Foam::SHA1Digest::clear()
50     memset(v_, 0, length);
54 // * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
56 bool Foam::SHA1Digest::operator==(const SHA1Digest& rhs) const
58     for (unsigned i = 0; i < length; ++i)
59     {
60         if (v_[i] != rhs.v_[i])
61         {
62             return false;
63         }
64     }
66     return true;
70 bool Foam::SHA1Digest::operator!=(const SHA1Digest& rhs) const
72     return !operator==(rhs);
76 // * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * //
78 Foam::Ostream& Foam::operator<<(Ostream& os, const SHA1Digest& dig)
80     const unsigned char *v = dig.v_;
82     for (unsigned i = 0; i < dig.length; ++i)
83     {
84         os.write(hexChars[((v[i] >> 4) & 0xF)]);
85         os.write(hexChars[(v[i] & 0xF)]);
86     }
88     os.check("Ostream& operator<<(Ostream&, const SHA1Digest&)");
89     return os;
93 // ************************************************************************* //