]> AND Private Git Repository - Cipher_code.git/commitdiff
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
new
authorcouturie <you@example.com>
Sat, 30 Sep 2017 12:16:48 +0000 (14:16 +0200)
committercouturie <you@example.com>
Sat, 30 Sep 2017 12:16:48 +0000 (14:16 +0200)
Arduino/libraries/Arduino-crypto-master/Crypto.cpp
Arduino/libraries/Arduino-crypto-master/Crypto.h

index d2d8adfed7d986e0b21c3b7f35b0a3b5d2b9a8d9..29990268939538332de03f7058b3e8da3f5b61ce 100644 (file)
@@ -652,6 +652,46 @@ void AES::process(const uint8_t *in, uint8_t *out, int length)
         decryptCBC(in, out, length);
 }
 
+
+void AES::encryptCTR(const uint8_t *in, uint8_t *out, int length)
+{
+    int i;
+    uint32_t tin[4], tout[4], iv[4];
+
+    memcpy(iv, _iv, AES_IV_SIZE);
+    for (i = 0; i < 4; i++)
+        tout[i] = crypto_ntohl(iv[i]);
+
+    for (length -= AES_BLOCKSIZE; length >= 0; length -= AES_BLOCKSIZE)
+    {
+        uint32_t msg_32[4];
+        uint32_t out_32[4];
+        memcpy(msg_32, in, AES_BLOCKSIZE);
+        in += AES_BLOCKSIZE;
+
+        for (i = 0; i < 4; i++)
+            tin[i] = crypto_ntohl(tout[i]);
+
+        AES::encrypt(tin);
+
+        for (i = 0; i < 4; i++)
+        {
+          
+            out_32[i] = crypto_htonl(tin[i])^msg_32[i];
+        }
+        // tout[0]= tout[0]+1; 
+
+        memcpy(out, out_32, AES_BLOCKSIZE);
+        out += AES_BLOCKSIZE;
+    }
+
+    for (i = 0; i < 4; i++)
+        iv[i] = crypto_htonl(tout[i])+1;
+    memcpy(_iv, iv, AES_IV_SIZE);
+}
+
+
+
 void AES::encryptCBC(const uint8_t *in, uint8_t *out, int length)
 {
     int i;
index 651d9f82467a471a2a635fe4adbe190590685126..8959817de643fde897f785540ba4414391bdc70b 100644 (file)
@@ -124,6 +124,7 @@ class AES
          * Note: the length must be a multiple of 16 bytes
          */
         void process(const uint8_t *in, uint8_t *out, int length);
+       void encryptCTR(const uint8_t *in, uint8_t *out, int length);
        void encryptCBC(const uint8_t *in, uint8_t *out, int length);
         void decryptCBC(const uint8_t *in, uint8_t *out, int length);
         void convertKey();