]> git.stg.codes - stg.git/commitdiff
Fixed interface in stgcrypto
authorMaxim Mamontov <faust.madf@gmail.com>
Wed, 27 Jul 2011 14:08:09 +0000 (17:08 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Wed, 27 Jul 2011 14:08:09 +0000 (17:08 +0300)
stglibs/crypto.lib/blowfish.c
stglibs/crypto.lib/blowfish.h

index e11bb1a27f0e9ad692fa82735b59b55cc9b032cd..69c467bdd888f7cfc62132d0cb5e9fdfdbe99c79 100644 (file)
@@ -16,6 +16,8 @@
 #define endianBig ((unsigned char) 0x45)
 #define endianLittle ((unsigned char) 0x54)
 
+#define MIN(a,b) ((a) < (b) ? a : b)
+
 #ifdef WIN32 /* Win32 doesn't have random() or lstat */
     #define random() rand()
     #define initstate(x,y,z) srand(x)
@@ -27,7 +29,7 @@
 #endif
 
 
-#define N               16
+#define N 16
 
 static uint32_t F(BLOWFISH_CTX *ctx, uint32_t x);
 static const uint32_t ORIG_P[16 + 2] = {
@@ -435,13 +437,13 @@ for (i = 0; i < 4; ++i)
     }
 }
 //-----------------------------------------------------------------------------
-void EnDecodeInit(const char * passwd, int length, BLOWFISH_CTX *ctx)
+void EnDecodeInit(const char * passwd, size_t length, BLOWFISH_CTX *ctx)
 {
 unsigned char keyL[PASSWD_LEN];
 
 memset(keyL, 0, PASSWD_LEN);
 
-strncpy((char *)keyL, passwd, PASSWD_LEN);
+strncpy((char *)keyL, passwd, MIN(length, PASSWD_LEN));
 
 Blowfish_Init(ctx, keyL, PASSWD_LEN);
 }
index 20f2fff76f951463ac7faefc740401f14fcbef78..a8800d7533201b6fe8ac195bd43d7d612544f362 100644 (file)
@@ -25,7 +25,7 @@ void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen);
 void Blowfish_Encrypt(BLOWFISH_CTX *ctx, uint32_t *xl, uint32_t *xr);
 void Blowfish_Decrypt(BLOWFISH_CTX *ctx, uint32_t *xl, uint32_t *xr);
 
-void EnDecodeInit(const char * key, int passwdLen, BLOWFISH_CTX *ctx);
+void EnDecodeInit(const char * key, size_t length, BLOWFISH_CTX *ctx);
 void DecodeString(char * d, const char * s, BLOWFISH_CTX *ctx);
 void EncodeString(char * d, const char * s, BLOWFISH_CTX *ctx);