X-Git-Url: https://git.cryptolib.org/?a=blobdiff_plain;f=sha256.c;h=1896deea2c5c8a03a71f652ec142264f64e7356d;hb=96ebafd201c9e8441c7677577b24aa402c1defc6;hp=30ab0a53494a6aff4cb147b119c796681b264723;hpb=6e51024d966bd015cb8f9c8460c5c21da6a08f9e;p=avr-crypto-lib.git diff --git a/sha256.c b/sha256.c index 30ab0a5..1896dee 100644 --- a/sha256.c +++ b/sha256.c @@ -1,3 +1,21 @@ +/* sha256.c */ +/* + This file is part of the Crypto-avr-lib/microcrypt-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 @@ -93,7 +111,7 @@ uint32_t k[]={ /** * block must be, 512, Bit = 64, Byte, long !!! */ -void sha256_nextBlock (sha256_ctx_t *state, void* block){ +void sha256_nextBlock (sha256_ctx_t *state, const void* block){ uint32_t w[64]; /* this is 256, byte, large, */ uint8_t i; uint32_t a[8],t1,t2; @@ -140,7 +158,7 @@ void sha256_nextBlock (sha256_ctx_t *state, void* block){ * bits are big endian, meaning high bits come first. * if you have a message with bits at the end, the byte must be padded with zeros */ -void sha256_lastBlock(sha256_ctx_t *state, void* block, uint16_t length){ +void sha256_lastBlock(sha256_ctx_t *state, const void* block, uint16_t length){ uint8_t lb[SHA256_BLOCK_BITS/8]; /* local block */ state->length += length; memcpy (&(lb[0]), block, length/8); @@ -180,12 +198,12 @@ void sha256_lastBlock(sha256_ctx_t *state, void* block, uint16_t length){ /* * length in bits! */ -void sha256(sha256_hash_t *dest, void* msg, uint32_t length){ /* length could be choosen longer but this is for µC */ +void sha256(sha256_hash_t *dest, const void* msg, uint32_t length){ /* length could be choosen longer but this is for µC */ sha256_ctx_t s; sha256_init(&s); while(length >= SHA256_BLOCK_BITS){ sha256_nextBlock(&s, msg); - msg += SHA256_BLOCK_BITS/8; + msg = (uint8_t*)msg + SHA256_BLOCK_BITS/8; length -= SHA256_BLOCK_BITS; } sha256_lastBlock(&s, msg, length); @@ -196,7 +214,7 @@ void sha256(sha256_hash_t *dest, void* msg, uint32_t length){ /* length could be /*************************************************************************/ -void sha256_ctx2hash(sha256_hash_t *dest, sha256_ctx_t *state){ +void sha256_ctx2hash(sha256_hash_t *dest, const sha256_ctx_t *state){ #if defined LITTLE_ENDIAN uint8_t i; for(i=0; i<8; ++i){