]> git.cryptolib.org Git - avr-crypto-lib.git/blobdiff - twister-small.c
big bug fixed, still some problems with flow control
[avr-crypto-lib.git] / twister-small.c
index 68e8e827b67b96e11212e1455d5386382c943486..5fb05368ce9ff7d9255d1553ad38bd06006dff6b 100644 (file)
@@ -17,7 +17,7 @@ void twister_small_init(twister_state_t* ctx, uint16_t hashsize_b){
 
 /*********************************************************************/
 
-void twister_small_nextBlock(twister_state_t* ctx, void* msg){
+void twister_small_nextBlock(twister_state_t* ctx, const void* msg){
        uint8_t tmp[8][8];
        /* round 1 */
        memcpy(tmp, ctx->s, 64);
@@ -51,9 +51,9 @@ void twister_small_nextBlock(twister_state_t* ctx, void* msg){
 
 /*********************************************************************/
 
-void twister_small_lastBlock(twister_state_t* ctx, void* msg, uint16_t length_b){
+void twister_small_lastBlock(twister_state_t* ctx, const void* msg, uint16_t length_b){
        uint8_t tmp[64];        
-       while(length_b>512){
+       while(length_b>=512){
                twister_small_nextBlock(ctx, msg);
                msg = ((uint8_t*)msg)+64;
                length_b -= 512;
@@ -63,6 +63,7 @@ void twister_small_lastBlock(twister_state_t* ctx, void* msg, uint16_t length_b)
        tmp[length_b/8] |= 0x80 >> (length_b&0x07);
        twister_small_nextBlock(ctx, tmp);
        ctx->length_counter_b -= 512 - length_b;
+
        twister_mini_round(ctx, &(ctx->length_counter_b));
        twister_blank_round(ctx);
 }
@@ -84,13 +85,13 @@ void twister256_init(twister256_ctx_t* ctx){
 
 /*********************************************************************/
 
-void twister256_nextBlock(twister256_ctx_t* ctx, void* msg){
+void twister256_nextBlock(twister256_ctx_t* ctx, const void* msg){
        twister_small_nextBlock(ctx, msg);
 }
 
 /*********************************************************************/
 
-void twister256_lastBlock(twister256_ctx_t* ctx, void* msg, uint16_t length_b){
+void twister256_lastBlock(twister256_ctx_t* ctx, const void* msg, uint16_t length_b){
        twister_small_lastBlock(ctx, msg, length_b);
 }
 
@@ -102,7 +103,7 @@ void twister256_ctx2hash(void* dest, twister256_ctx_t* ctx){
 
 /*********************************************************************/
 
-void twister256(void* dest, void* msg, uint32_t msg_length_b){
+void twister256(void* dest, const void* msg, uint32_t msg_length_b){
        twister_state_t ctx;
        twister_small_init(&ctx, 256);
        while(msg_length_b >=512){
@@ -129,13 +130,13 @@ void twister224_init(twister224_ctx_t* ctx){
 
 /*********************************************************************/
 
-void twister224_nextBlock(twister224_ctx_t* ctx, void* msg){
+void twister224_nextBlock(twister224_ctx_t* ctx, const void* msg){
        twister_small_nextBlock(ctx, msg);
 }
 
 /*********************************************************************/
 
-void twister224_lastBlock(twister224_ctx_t* ctx, void* msg, uint16_t length_b){
+void twister224_lastBlock(twister224_ctx_t* ctx, const void* msg, uint16_t length_b){
        twister_small_lastBlock(ctx, msg, length_b);
 }
 
@@ -147,7 +148,7 @@ void twister224_ctx2hash(void* dest, twister224_ctx_t* ctx){
 
 /*********************************************************************/
 
-void twister224(void* dest, void* msg, uint32_t msg_length_b){
+void twister224(void* dest, const void* msg, uint32_t msg_length_b){
        twister_state_t ctx;
        twister_small_init(&ctx, 224);
        while(msg_length_b >=512){