diff rvinterf/etmsync/pirimei.c @ 14:3d148edb87c2

eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 03 Oct 2016 07:00:55 +0000
parents e7502631a0f9
children 6d9b10633f10
line wrap: on
line diff
--- a/rvinterf/etmsync/pirimei.c	Mon Oct 03 06:15:04 2016 +0000
+++ b/rvinterf/etmsync/pirimei.c	Mon Oct 03 07:00:55 2016 +0000
@@ -3,19 +3,18 @@
  */
 
 #include <sys/types.h>
-#include <openssl/des.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <strings.h>
+#include "cl_des.h"
 #include "exitcodes.h"
 
 u_char pirelli_imeisv[8];
 
 get_pirelli_imei()
 {
-	DES_cblock ciphertext[2], dieid_key, decrypted[2];
-	DES_key_schedule keysched;
+	u_char ciphertext[2][8], dieid_key[8], decrypted[2][8];
 	int rc;
 	static char failmsg[] =
 	"decryption failed: no valid IMEI record or incompatible firmware\n";
@@ -28,9 +27,8 @@
 	rc = do_memory_read(0x027F0504, ciphertext, 16);
 	if (rc)
 		return(rc);
-	DES_set_key_unchecked(&dieid_key, &keysched);
-	DES_ecb_encrypt(&ciphertext[0], &decrypted[0], &keysched, DES_DECRYPT);
-	DES_ecb_encrypt(&ciphertext[1], &decrypted[1], &keysched, DES_DECRYPT);
+	cl_des(ciphertext[0], dieid_key, decrypted[0], CL_DES_DECRYPTION);
+	cl_des(ciphertext[1], dieid_key, decrypted[1], CL_DES_DECRYPTION);
 	if (bcmp(decrypted[1], dieid_key, 8)) {
 		printf(failmsg);
 		return(ERROR_TARGET);