X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=sha256.c;h=f654968a906818d6b8e878cc0f381880b65ed68a;hb=d1d3ca64870a4cc4ee0659db7b4387e1dd51549f;hp=f2dea4b076b48f17cc58a704bc4eb0825d855566;hpb=61444fd31d322390f89b2c3955728eeea1193a67;p=avr-crypto-lib.git diff --git a/sha256.c b/sha256.c index f2dea4b..f654968 100644 --- a/sha256.c +++ b/sha256.c @@ -1,3 +1,21 @@ +/* sha256.c */ +/* + This file is part of the AVR-Crypto-Lib. + Copyright (C) 2008 Daniel Otte (daniel.otte@rub.de) + + 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 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ /** * \file sha256.c * \author Daniel Otte @@ -146,12 +164,12 @@ void sha256_lastBlock(sha256_ctx_t *state, const void* block, uint16_t length){ memcpy (&(lb[0]), block, length/8); /* set the final one bit */ - if (length & 0x3){ // if we have single bits at the end + if (length & 0x7){ // if we have single bits at the end lb[length/8] = ((uint8_t*)(block))[length/8]; } else { lb[length/8] = 0; } - lb[length/8] |= 0x80>>(length & 0x3); + lb[length/8] |= 0x80>>(length & 0x7); length =(length >> 3) + 1; /* from now on length contains the number of BYTES in lb*/ /* pad with zeros */ if (length>64-8){ /* not enouth space for 64bit length value */