Просмотр исходного кода

* Move AES String crypt functions to aes_util.c

Bryan Drewery 16 лет назад
Родитель
Сommit
aa40c43d72
4 измененных файлов с 75 добавлено и 92 удалено
  1. 0 81
      src/crypt.c
  2. 0 11
      src/crypt.h
  3. 67 0
      src/crypto/aes_util.c
  4. 8 0
      src/crypto/aes_util.h

+ 0 - 81
src/crypt.c

@@ -35,54 +35,6 @@ char *encrypt_string(const char *keydata, char *in)
   }
 }
 
-/**
- * @brief Encrypt a string with AES 256 ECB
- * @param key The key to encrypt with
- * @param data The string to encrypt
- * @return A new, encrypted string
- */
-bd::String encrypt_string(const bd::String& key, const bd::String& data) {
-  if (!key) return data;
-  size_t len = data.length();
-  char *bdata = (char*) aes_encrypt_ecb_binary(key.c_str(), (unsigned char*) data.c_str(), &len);
-  bd::String encrypted(bdata, len);
-  free(bdata);
-  return encrypted;
-}
-
-#ifdef not_needed
-/**
- * @brief Encrypt a string with Blowfish ECB
- * @param key The key to encrypt with
- * @param data The string to encrypt
- * @return A new, encrypted string
- */
-bd::String encrypt_string_bf(const bd::String& key, const bd::String& data) {
-  if (!key) return data;
-  size_t len = data.length();
-  char *bdata = (char*) bf_encrypt_ecb_binary(key.c_str(), (unsigned char*) data.c_str(), &len);
-  bd::String encrypted(bdata, len);
-  free(bdata);
-  return encrypted;
-}
-#endif
-
-/**
- * @brief Encrypt a string with AES 256 CBC
- * @param key The key to encrypt with
- * @param data The string to encrypt
- * @param IV The IV to use (WARNING: This is modified inplace)
- * @return A new, encrypted string
- */
-bd::String encrypt_string_cbc(const bd::String& key, const bd::String& data, unsigned char* IV) {
-  if (!key) return data;
-  size_t len = data.length();
-  char *bdata = (char*) aes_encrypt_cbc_binary(key.c_str(), (unsigned char*) data.c_str(), &len, IV);
-  bd::String encrypted(bdata, len);
-  free(bdata);
-  return encrypted;
-}
-
 char *decrypt_string(const char *keydata, char *in)
 {
   size_t len = strlen(in);
@@ -101,39 +53,6 @@ char *decrypt_string(const char *keydata, char *in)
   }
 }
 
-/**
- * @brief Decrypt an AES 256 ECB ciphered string
- * @param key The key to decrypt with
- * @param data The string to decrypt
- * @return A new, decrypted string
- */
-bd::String decrypt_string(const bd::String& key, const bd::String& data) {
-  if (!key) return data;
-  size_t len = data.length();
-  char *bdata = (char*) aes_decrypt_ecb_binary(key.c_str(), (unsigned char*) data.c_str(), &len);
-  bd::String decrypted(bdata, len);
-  OPENSSL_cleanse(bdata, len);
-  free(bdata);
-  return decrypted;
-}
-
-/**
- * @brief Decrypt anAES 256 CBC ciphered string
- * @param key The key to decrypt with
- * @param data The string to decrypt
- * @param IV The IV to use (WARNING: This is modified inplace)
- * @return A new, decrypted string
- */
-bd::String decrypt_string_cbc(const bd::String& key, const bd::String& data, unsigned char* IV) {
-  if (!key) return data;
-  size_t len = data.length();
-  char *bdata = (char*) aes_decrypt_cbc_binary(key.c_str(), (unsigned char*) data.c_str(), &len, IV);
-  bd::String decrypted(bdata, len);
-  OPENSSL_cleanse(bdata, len);
-  free(bdata);
-  return decrypted;
-}
-
 int salted_sha1cmp(const char *salted_hash, const char *string) {
   char* cmp = salted_sha1(string, &salted_hash[1]); //Pass in the salt from the given hash
   int n = strcmp(salted_hash, cmp);

+ 0 - 11
src/crypt.h

@@ -11,10 +11,6 @@
 #include "src/crypto/crypto.h"
 #include "users.h"
 
-namespace bd {
-  class String;
-};
-
 #define SHA_HASH_LENGTH (SHA_DIGEST_LENGTH << 1)
 #define SHA256_HASH_LENGTH (SHA256_DIGEST_LENGTH << 1)
 #define MD5_HASH_LENGTH (MD5_DIGEST_LENGTH << 1)
@@ -30,16 +26,9 @@ char *SHA256(const char *);
 int sha256cmp(const char *, const char*);
 
 char *encrypt_string(const char *, char *);
-bd::String encrypt_string(const bd::String&, const bd::String&);
-#ifdef not_needed
-bd::String encrypt_string_bf(const bd::String&, const bd::String&);
-#endif
-bd::String encrypt_string_cbc(const bd::String&, const bd::String&, unsigned char *);
 char *decrypt_string(const char *, char *);
 char *salted_sha1(const char *, const char* = NULL);
 int salted_sha1cmp(const char *, const char*);
-bd::String decrypt_string(const bd::String&, const bd::String&);
-bd::String decrypt_string_cbc(const bd::String&, const bd::String&, unsigned char *);
 char *cryptit (char *);
 char *decryptit (char *);
 void Encrypt_File(char *, char *);

+ 67 - 0
src/crypto/aes_util.c

@@ -4,6 +4,7 @@
 
 #include "crypto.h"
 #include "src/compat/compat.h"
+#include <bdlib/src/String.h>
 
 #define CRYPT_BLOCKSIZE AES_BLOCK_SIZE
 #define CRYPT_KEYBITS 256
@@ -11,6 +12,72 @@
 
 AES_KEY e_key, d_key;
 
+/**
+ * @brief Encrypt a string with AES 256 ECB
+ * @param key The key to encrypt with
+ * @param data The string to encrypt
+ * @return A new, encrypted string
+ */
+bd::String encrypt_string(const bd::String& key, const bd::String& data) {
+  if (!key) return data;
+  size_t len = data.length();
+  char *bdata = (char*) aes_encrypt_ecb_binary(key.c_str(), (unsigned char*) data.c_str(), &len);
+  bd::String encrypted(bdata, len);
+  free(bdata);
+  return encrypted;
+}
+
+/**
+ * @brief Encrypt a string with AES 256 CBC
+ * @param key The key to encrypt with
+ * @param data The string to encrypt
+ * @param IV The IV to use (WARNING: This is modified inplace)
+ * @return A new, encrypted string
+ */
+bd::String encrypt_string_cbc(const bd::String& key, const bd::String& data, unsigned char* IV) {
+  if (!key) return data;
+  size_t len = data.length();
+  char *bdata = (char*) aes_encrypt_cbc_binary(key.c_str(), (unsigned char*) data.c_str(), &len, IV);
+  bd::String encrypted(bdata, len);
+  free(bdata);
+  return encrypted;
+}
+
+/**
+ * @brief Decrypt an AES 256 ECB ciphered string
+ * @param key The key to decrypt with
+ * @param data The string to decrypt
+ * @return A new, decrypted string
+ */
+bd::String decrypt_string(const bd::String& key, const bd::String& data) {
+  if (!key) return data;
+  size_t len = data.length();
+  char *bdata = (char*) aes_decrypt_ecb_binary(key.c_str(), (unsigned char*) data.c_str(), &len);
+  bd::String decrypted(bdata, len);
+  OPENSSL_cleanse(bdata, len);
+  free(bdata);
+  return decrypted;
+}
+
+/**
+ * @brief Decrypt anAES 256 CBC ciphered string
+ * @param key The key to decrypt with
+ * @param data The string to decrypt
+ * @param IV The IV to use (WARNING: This is modified inplace)
+ * @return A new, decrypted string
+ */
+bd::String decrypt_string_cbc(const bd::String& key, const bd::String& data, unsigned char* IV) {
+  if (!key) return data;
+  size_t len = data.length();
+  char *bdata = (char*) aes_decrypt_cbc_binary(key.c_str(), (unsigned char*) data.c_str(), &len, IV);
+  bd::String decrypted(bdata, len);
+  OPENSSL_cleanse(bdata, len);
+  free(bdata);
+  return decrypted;
+}
+
+
+
 unsigned char *
 aes_encrypt_ecb_binary(const char *keydata, unsigned char *in, size_t *inlen)
 {

+ 8 - 0
src/crypto/aes_util.h

@@ -7,8 +7,16 @@
 
 #include <sys/types.h>
 
+namespace bd {
+  class String;
+};
+
 unsigned char *aes_encrypt_ecb_binary(const char *, unsigned char *, size_t *);
 unsigned char *aes_decrypt_ecb_binary(const char *, unsigned char *, size_t *);
 unsigned char *aes_encrypt_cbc_binary(const char *, unsigned char *, size_t *, unsigned char *);
 unsigned char *aes_decrypt_cbc_binary(const char *, unsigned char *, size_t *, unsigned char *);
+bd::String encrypt_string(const bd::String&, const bd::String&);
+bd::String encrypt_string_cbc(const bd::String&, const bd::String&, unsigned char *);
+bd::String decrypt_string(const bd::String&, const bd::String&);
+bd::String decrypt_string_cbc(const bd::String&, const bd::String&, unsigned char *);
 #endif