diff libtomcrypt/src/mac/pmac/pmac_init.c @ 1471:6dba84798cd5

Update to libtomcrypt 1.18.1, merged with Dropbear changes
author Matt Johnston <matt@ucc.asn.au>
date Fri, 09 Feb 2018 21:44:05 +0800
parents f849a5ca2efc
children
line wrap: on
line diff
--- a/libtomcrypt/src/mac/pmac/pmac_init.c	Thu Feb 08 23:11:40 2018 +0800
+++ b/libtomcrypt/src/mac/pmac/pmac_init.c	Fri Feb 09 21:44:05 2018 +0800
@@ -5,21 +5,19 @@
  *
  * The library is free for all purposes without any express
  * guarantee it works.
- *
- * Tom St Denis, [email protected], http://libtom.org
  */
 #include "tomcrypt.h"
 
-/** 
+/**
    @file pmac_init.c
-   PMAC implementation, initialize state, by Tom St Denis 
+   PMAC implementation, initialize state, by Tom St Denis
 */
 
 #ifdef LTC_PMAC
 
 static const struct {
     int           len;
-    unsigned char poly_div[MAXBLOCKSIZE], 
+    unsigned char poly_div[MAXBLOCKSIZE],
                   poly_mul[MAXBLOCKSIZE];
 } polys[] = {
 {
@@ -27,7 +25,7 @@
     { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D },
     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B }
 }, {
-    16, 
+    16,
     { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
       0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43 },
     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -39,7 +37,7 @@
    Initialize a PMAC state
    @param pmac      The PMAC state to initialize
    @param cipher    The index of the desired cipher
-   @param key       The secret key 
+   @param key       The secret key
    @param keylen    The length of the secret key (octets)
    @return CRYPT_OK if successful
 */
@@ -59,10 +57,13 @@
    /* determine which polys to use */
    pmac->block_len = cipher_descriptor[cipher].block_length;
    for (poly = 0; poly < (int)(sizeof(polys)/sizeof(polys[0])); poly++) {
-       if (polys[poly].len == pmac->block_len) { 
+       if (polys[poly].len == pmac->block_len) {
           break;
        }
    }
+   if (poly >= (int)(sizeof(polys)/sizeof(polys[0]))) {
+      return CRYPT_INVALID_ARG;
+    }
    if (polys[poly].len != pmac->block_len) {
       return CRYPT_INVALID_ARG;
    }
@@ -78,7 +79,7 @@
    if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &pmac->key)) != CRYPT_OK) {
       return err;
    }
- 
+
    /* allocate L */
    L = XMALLOC(pmac->block_len);
    if (L == NULL) {
@@ -107,41 +108,41 @@
        }
     }
 
-    /* find Lr = L / x */
-    m = L[pmac->block_len-1] & 1;
+   /* find Lr = L / x */
+   m = L[pmac->block_len-1] & 1;
 
-    /* shift right */
-    for (x = pmac->block_len - 1; x > 0; x--) {
-        pmac->Lr[x] = ((L[x] >> 1) | (L[x-1] << 7)) & 255;
-    }
-    pmac->Lr[0] = L[0] >> 1;
+   /* shift right */
+   for (x = pmac->block_len - 1; x > 0; x--) {
+      pmac->Lr[x] = ((L[x] >> 1) | (L[x-1] << 7)) & 255;
+   }
+   pmac->Lr[0] = L[0] >> 1;
 
-    if (m == 1) {
-       for (x = 0; x < pmac->block_len; x++) {
-           pmac->Lr[x] ^= polys[poly].poly_div[x];
-       }
-    }
+   if (m == 1) {
+      for (x = 0; x < pmac->block_len; x++) {
+         pmac->Lr[x] ^= polys[poly].poly_div[x];
+      }
+   }
 
-    /* zero buffer, counters, etc... */
-    pmac->block_index = 1;
-    pmac->cipher_idx  = cipher;
-    pmac->buflen      = 0;
-    zeromem(pmac->block,    sizeof(pmac->block));
-    zeromem(pmac->Li,       sizeof(pmac->Li));
-    zeromem(pmac->checksum, sizeof(pmac->checksum));
-    err = CRYPT_OK;
+   /* zero buffer, counters, etc... */
+   pmac->block_index = 1;
+   pmac->cipher_idx  = cipher;
+   pmac->buflen      = 0;
+   zeromem(pmac->block,    sizeof(pmac->block));
+   zeromem(pmac->Li,       sizeof(pmac->Li));
+   zeromem(pmac->checksum, sizeof(pmac->checksum));
+   err = CRYPT_OK;
 error:
 #ifdef LTC_CLEAN_STACK
-    zeromem(L, pmac->block_len);
+   zeromem(L, pmac->block_len);
 #endif
 
-    XFREE(L);
+   XFREE(L);
 
-    return err;
+   return err;
 }
 
 #endif
 
-/* $Source$ */
-/* $Revision$ */
-/* $Date$ */
+/* ref:         $Format:%D$ */
+/* git commit:  $Format:%H$ */
+/* commit time: $Format:%ai$ */