From 1f6417a9b25f05a29e8de171fb26022c996453b3 Mon Sep 17 00:00:00 2001
From: Martin Holst Swende <martin@swende.se>
Date: Mon, 12 Jan 2015 21:47:36 +0100
Subject: [PATCH] Removed dependency on openssl, added AES implementation from
 polarssl instead

---
 client/Makefile    |  5 +++--
 client/scripting.c | 22 +++++++++++++---------
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/client/Makefile b/client/Makefile
index 37616e48..523a1ad1 100644
--- a/client/Makefile
+++ b/client/Makefile
@@ -13,9 +13,9 @@ CXX=g++
 VPATH = ../common
 OBJDIR = obj
 
-LDLIBS = -L/opt/local/lib -L/usr/local/lib ../liblua/liblua.a -lreadline -lpthread -lm -lcrypto
+LDLIBS = -L/opt/local/lib -L/usr/local/lib ../liblua/liblua.a -lreadline -lpthread -lm
 LDFLAGS = $(COMMON_FLAGS)
-CFLAGS = -std=c99 -lcrypto -I. -I../include -I../common -I/opt/local/include -I../liblua -Wall $(COMMON_FLAGS) -g -O4 
+CFLAGS = -std=c99 -I. -I../include -I../common -I/opt/local/include -I../liblua -Wall $(COMMON_FLAGS) -g -O4 
 LUAPLATFORM = generic
 
 ifneq (,$(findstring MINGW,$(platform)))
@@ -94,6 +94,7 @@ CMDSRCS = 	nonce2key/crapto1.c\
 			scripting.c\
 			cmdscript.c\
 			pm3_bitlib.c\
+			aes.c\
 
 
 COREOBJS = $(CORESRCS:%.c=$(OBJDIR)/%.o)
diff --git a/client/scripting.c b/client/scripting.c
index eed5544b..0ccdeeec 100644
--- a/client/scripting.c
+++ b/client/scripting.c
@@ -18,8 +18,8 @@
 #include "util.h"
 #include "nonce2key/nonce2key.h"
 #include "../common/iso15693tools.h"
-#include <openssl/aes.h>   
 #include "../common/crc16.h"
+#include "aes.h"
 /**
  * The following params expected:
  *  UsbCommand c
@@ -240,10 +240,10 @@ static int l_aes(lua_State *L)
 
     const char *p_encTxt = luaL_checklstring(L, 2, &size);
     
-	unsigned char indata[AES_BLOCK_SIZE] = {0x00};
-	unsigned char outdata[AES_BLOCK_SIZE] = {0x00};
-    unsigned char aes_key[AES_BLOCK_SIZE] = {0x00};
-	unsigned char iv[AES_BLOCK_SIZE] = {0x00};
+	unsigned char indata[16] = {0x00};
+	unsigned char outdata[16] = {0x00};
+    unsigned char aes_key[16] = {0x00};
+	unsigned char iv[16] = {0x00};
 	
 	// convert key to bytearray
 	for (i = 0; i < 32; i += 2) {
@@ -255,10 +255,14 @@ static int l_aes(lua_State *L)
 		sscanf(&p_key[i], "%02x", (unsigned int *)&aes_key[i / 2]);
 	}
 	
-	AES_KEY key;
-	AES_set_decrypt_key(aes_key, 128, &key);
-    AES_cbc_encrypt(indata, outdata, sizeof(indata), &key, iv, AES_DECRYPT);
-
+	//AES_KEY key;
+    //AES_set_decrypt_key(aes_key, 128, &key);
+    //AES_cbc_encrypt(indata, outdata, sizeof(indata), &key, iv, AES_DECRYPT);
+
+    aes_context ctx;
+    aes_init(&ctx);
+    aes_setkey_enc(&ctx,(const unsigned char *)p_key,128);
+	aes_crypt_cbc(&ctx,AES_DECRYPT,sizeof(indata), iv, indata,outdata );
     //Push decrypted array as a string
 	lua_pushlstring(L,(const char *)&outdata, sizeof(outdata));
 	return 1;// return 1 to signal one return value
-- 
2.39.5