git.stg.codes
/
stg.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ticket 37. The stgTime argument added in TariffChangeIsAllowed()
[stg.git]
/
stglibs
/
crypto.lib
/
blowfish.c
diff --git
a/stglibs/crypto.lib/blowfish.c
b/stglibs/crypto.lib/blowfish.c
index 90c93b9da3d27ca5cd78ac63917783ddbed29bfc..384d3a10e0d45cbb667bcdc5144c641939625121 100644
(file)
--- a/
stglibs/crypto.lib/blowfish.c
+++ b/
stglibs/crypto.lib/blowfish.c
@@
-469,42
+469,59
@@
void block2bytes(uint32_t t, char * c)
//-----------------------------------------------------------------------------
void DecryptBlock(void * d, const void * s, const BLOWFISH_CTX *ctx)
{
//-----------------------------------------------------------------------------
void DecryptBlock(void * d, const void * s, const BLOWFISH_CTX *ctx)
{
-uint32_t a = bytes2block(s);
-uint32_t b = bytes2block(s + 4);
+const char * src = s;
+char * dest = d;
+uint32_t a = bytes2block(src);
+uint32_t b = bytes2block(src + 4);
Blowfish_Decrypt(ctx, &a, &b);
Blowfish_Decrypt(ctx, &a, &b);
-block2bytes(a, d);
-block2bytes(b, d + 4);
+block2bytes(a, d
est
);
+block2bytes(b, d
est
+ 4);
}
//-----------------------------------------------------------------------------
void EncryptBlock(void * d, const void * s, const BLOWFISH_CTX *ctx)
{
}
//-----------------------------------------------------------------------------
void EncryptBlock(void * d, const void * s, const BLOWFISH_CTX *ctx)
{
-uint32_t a = bytes2block(s);
-uint32_t b = bytes2block(s + 4);
+const char * src = s;
+char * dest = d;
+uint32_t a = bytes2block(src);
+uint32_t b = bytes2block(src + 4);
Blowfish_Encrypt(ctx, &a, &b);
Blowfish_Encrypt(ctx, &a, &b);
-block2bytes(a, d);
-block2bytes(b, d + 4);
+block2bytes(a, d
est
);
+block2bytes(b, d
est
+ 4);
}
//-----------------------------------------------------------------------------
void DecryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX * ctx)
{
}
//-----------------------------------------------------------------------------
void DecryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX * ctx)
{
+const char * src = s;
+char * dest = d;
size_t pos = 0;
while (pos < length)
{
size_t pos = 0;
while (pos < length)
{
- DecryptBlock(d
+ pos, s
+ pos, ctx);
+ DecryptBlock(d
est + pos, src
+ pos, ctx);
pos += 8;
}
}
//-----------------------------------------------------------------------------
void EncryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX * ctx)
{
pos += 8;
}
}
//-----------------------------------------------------------------------------
void EncryptString(void * d, const void * s, size_t length, const BLOWFISH_CTX * ctx)
{
+const char * src = s;
+char * dest = d;
size_t pos = 0;
while (pos < length)
{
size_t pos = 0;
while (pos < length)
{
- EncryptBlock(d + pos, s + pos, ctx);
+ if (pos + 8 < length)
+ EncryptBlock(dest + pos, src + pos, ctx);
+ else
+ {
+ // Short string, use 0-padded buffer.
+ char buf[8];
+ memset(buf, 0, sizeof(buf));
+ memcpy(buf, src + pos, length - pos);
+ EncryptBlock(dest + pos, buf, ctx);
+ }
pos += 8;
}
}
pos += 8;
}
}