Merge pull request #415 from libtom/pr/clang-tidy-else-after-return
fix clang-tidy warning: readability-else-after-return
This commit is contained in:
commit
4473953742
51
.ci/clang-tidy.sh
Executable file
51
.ci/clang-tidy.sh
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# output version
|
||||||
|
bash .ci/printinfo.sh
|
||||||
|
|
||||||
|
# tested with clang-tidy from llvm-6.0.0
|
||||||
|
# not tested with Travis-CI
|
||||||
|
|
||||||
|
#### we use the main test sets:
|
||||||
|
# readability
|
||||||
|
# misc
|
||||||
|
# clang-analyzer
|
||||||
|
# google
|
||||||
|
# performance
|
||||||
|
# modernize
|
||||||
|
# cert
|
||||||
|
# bugprone
|
||||||
|
# portability
|
||||||
|
|
||||||
|
#### the following checks are skipped
|
||||||
|
# google-readability-function-size
|
||||||
|
# readability-function-size
|
||||||
|
# google-readability-casting
|
||||||
|
# readability-braces-around-statements
|
||||||
|
# misc-macro-parentheses
|
||||||
|
# clang-analyzer-valist.Uninitialized
|
||||||
|
|
||||||
|
echo "Run clang-tidy version"
|
||||||
|
|
||||||
|
clang-tidy --version || exit 1
|
||||||
|
|
||||||
|
echo "Run clang-tidy..."
|
||||||
|
|
||||||
|
clang-tidy src/*/*.c src/*/*/*.c src/*/*/*/*.c src/*/*/*/*/*.c -warnings-as-errors='*' --quiet --checks=-*,\
|
||||||
|
readability-*,-readability-function-size,-readability-braces-around-statements,\
|
||||||
|
misc-*,-misc-macro-parentheses,\
|
||||||
|
clang-analyzer-*,-clang-analyzer-valist.Uninitialized,\
|
||||||
|
google-*,-google-readability-function-size,-google-readability-casting,\
|
||||||
|
performance-*,\
|
||||||
|
modernize-*,\
|
||||||
|
cert-*,\
|
||||||
|
bugprone-*,\
|
||||||
|
portability-* -- -DUSE_LTM -DLTM_DESC -Isrc/headers -I../libtommath || { echo "clang-tidy FAILED!"; exit 1; }
|
||||||
|
|
||||||
|
echo "clang-tidy ok"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# ref: $Format:%D$
|
||||||
|
# git commit: $Format:%H$
|
||||||
|
# commit time: $Format:%ai$
|
@ -723,18 +723,19 @@ int ECB_KS(int *keysize)
|
|||||||
{
|
{
|
||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
|
|
||||||
if (*keysize < 16)
|
if (*keysize < 16) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
|
}
|
||||||
if (*keysize < 24) {
|
if (*keysize < 24) {
|
||||||
*keysize = 16;
|
*keysize = 16;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else if (*keysize < 32) {
|
}
|
||||||
|
if (*keysize < 32) {
|
||||||
*keysize = 24;
|
*keysize = 24;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
*keysize = 32;
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
*keysize = 32;
|
||||||
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -580,7 +580,8 @@ int blowfish_keysize(int *keysize)
|
|||||||
|
|
||||||
if (*keysize < 8) {
|
if (*keysize < 8) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else if (*keysize > 56) {
|
}
|
||||||
|
if (*keysize > 56) {
|
||||||
*keysize = 56;
|
*keysize = 56;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
|
@ -707,7 +707,8 @@ int cast5_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 5) {
|
if (*keysize < 5) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else if (*keysize > 16) {
|
}
|
||||||
|
if (*keysize > 16) {
|
||||||
*keysize = 16;
|
*keysize = 16;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
|
@ -243,9 +243,8 @@ int kasumi_keysize(int *keysize)
|
|||||||
if (*keysize >= 16) {
|
if (*keysize >= 16) {
|
||||||
*keysize = 16;
|
*keysize = 16;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
|
||||||
}
|
}
|
||||||
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int kasumi_test(void)
|
int kasumi_test(void)
|
||||||
|
@ -843,9 +843,8 @@ int khazad_keysize(int *keysize)
|
|||||||
if (*keysize >= 16) {
|
if (*keysize >= 16) {
|
||||||
*keysize = 16;
|
*keysize = 16;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
|
||||||
}
|
}
|
||||||
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -314,10 +314,9 @@ int noekeon_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 16) {
|
if (*keysize < 16) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else {
|
|
||||||
*keysize = 16;
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
*keysize = 16;
|
||||||
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -401,7 +401,8 @@ int rc2_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 1) {
|
if (*keysize < 1) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else if (*keysize > 128) {
|
}
|
||||||
|
if (*keysize > 128) {
|
||||||
*keysize = 128;
|
*keysize = 128;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
|
@ -308,7 +308,8 @@ int rc5_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 8) {
|
if (*keysize < 8) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else if (*keysize > 128) {
|
}
|
||||||
|
if (*keysize > 128) {
|
||||||
*keysize = 128;
|
*keysize = 128;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
|
@ -318,7 +318,8 @@ int rc6_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 8) {
|
if (*keysize < 8) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else if (*keysize > 128) {
|
}
|
||||||
|
if (*keysize > 128) {
|
||||||
*keysize = 128;
|
*keysize = 128;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
|
@ -358,10 +358,9 @@ int safer_64_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 8) {
|
if (*keysize < 8) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else {
|
|
||||||
*keysize = 8;
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
*keysize = 8;
|
||||||
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int safer_128_keysize(int *keysize)
|
int safer_128_keysize(int *keysize)
|
||||||
@ -369,10 +368,9 @@ int safer_128_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 16) {
|
if (*keysize < 16) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else {
|
|
||||||
*keysize = 16;
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
*keysize = 16;
|
||||||
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int safer_k64_test(void)
|
int safer_k64_test(void)
|
||||||
|
@ -330,7 +330,8 @@ int skipjack_keysize(int *keysize)
|
|||||||
LTC_ARGCHK(keysize != NULL);
|
LTC_ARGCHK(keysize != NULL);
|
||||||
if (*keysize < 10) {
|
if (*keysize < 10) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
} else if (*keysize > 10) {
|
}
|
||||||
|
if (*keysize > 10) {
|
||||||
*keysize = 10;
|
*keysize = 10;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
|
@ -689,25 +689,24 @@ void twofish_done(symmetric_key *skey)
|
|||||||
int twofish_keysize(int *keysize)
|
int twofish_keysize(int *keysize)
|
||||||
{
|
{
|
||||||
LTC_ARGCHK(keysize);
|
LTC_ARGCHK(keysize);
|
||||||
if (*keysize < 16)
|
if (*keysize < 16) {
|
||||||
return CRYPT_INVALID_KEYSIZE;
|
return CRYPT_INVALID_KEYSIZE;
|
||||||
|
}
|
||||||
if (*keysize < 24) {
|
if (*keysize < 24) {
|
||||||
*keysize = 16;
|
*keysize = 16;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else if (*keysize < 32) {
|
}
|
||||||
|
if (*keysize < 32) {
|
||||||
*keysize = 24;
|
*keysize = 24;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
*keysize = 32;
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
*keysize = 32;
|
||||||
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ref: $Format:%D$ */
|
/* ref: $Format:%D$ */
|
||||||
/* git commit: $Format:%H$ */
|
/* git commit: $Format:%H$ */
|
||||||
/* commit time: $Format:%ai$ */
|
/* commit time: $Format:%ai$ */
|
||||||
|
@ -614,11 +614,11 @@ int hmac_test(void)
|
|||||||
|
|
||||||
if (failed != 0) {
|
if (failed != 0) {
|
||||||
return CRYPT_FAIL_TESTVECTOR;
|
return CRYPT_FAIL_TESTVECTOR;
|
||||||
} else if (tested == 0) {
|
|
||||||
return CRYPT_NOP;
|
|
||||||
} else {
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
if (tested == 0) {
|
||||||
|
return CRYPT_NOP;
|
||||||
|
}
|
||||||
|
return CRYPT_OK;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,16 +104,16 @@ static int _base64_decode_internal(const char *in, unsigned long inlen,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (c == 253) {
|
if (c == 253) {
|
||||||
if (mode == strict)
|
if (mode == strict) {
|
||||||
return CRYPT_INVALID_PACKET;
|
return CRYPT_INVALID_PACKET;
|
||||||
else
|
}
|
||||||
continue; /* allow to ignore white-spaces (relaxed+insane) */
|
continue; /* allow to ignore white-spaces (relaxed+insane) */
|
||||||
}
|
}
|
||||||
if (c == 255) {
|
if (c == 255) {
|
||||||
if (mode == insane)
|
if (mode == insane) {
|
||||||
continue; /* allow to ignore invalid garbage (insane) */
|
continue; /* allow to ignore invalid garbage (insane) */
|
||||||
else
|
}
|
||||||
return CRYPT_INVALID_PACKET;
|
return CRYPT_INVALID_PACKET;
|
||||||
}
|
}
|
||||||
if ((g > 0) && (mode != insane)) {
|
if ((g > 0) && (mode != insane)) {
|
||||||
/* we only allow '=' to be at the end (strict+relaxed) */
|
/* we only allow '=' to be at the end (strict+relaxed) */
|
||||||
|
@ -68,9 +68,8 @@ const char *error_to_string(int err)
|
|||||||
{
|
{
|
||||||
if (err < 0 || err >= (int)(sizeof(err_2_str)/sizeof(err_2_str[0]))) {
|
if (err < 0 || err >= (int)(sizeof(err_2_str)/sizeof(err_2_str[0]))) {
|
||||||
return "Invalid error code.";
|
return "Invalid error code.";
|
||||||
} else {
|
|
||||||
return err_2_str[err];
|
|
||||||
}
|
}
|
||||||
|
return err_2_str[err];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,9 +30,8 @@ int hkdf_extract(int hash_idx, const unsigned char *salt, unsigned long saltlen
|
|||||||
valid results for HKDF. */
|
valid results for HKDF. */
|
||||||
if (salt == NULL || saltlen == 0) {
|
if (salt == NULL || saltlen == 0) {
|
||||||
return hmac_memory(hash_idx, (const unsigned char *)"", 1, in, inlen, out, outlen);
|
return hmac_memory(hash_idx, (const unsigned char *)"", 1, in, inlen, out, outlen);
|
||||||
} else {
|
|
||||||
return hmac_memory(hash_idx, salt, saltlen, in, inlen, out, outlen);
|
|
||||||
}
|
}
|
||||||
|
return hmac_memory(hash_idx, salt, saltlen, in, inlen, out, outlen);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hkdf_expand(int hash_idx, const unsigned char *info, unsigned long infolen,
|
int hkdf_expand(int hash_idx, const unsigned char *info, unsigned long infolen,
|
||||||
|
@ -278,11 +278,11 @@ int hkdf_test(void)
|
|||||||
|
|
||||||
if (failed != 0) {
|
if (failed != 0) {
|
||||||
return CRYPT_FAIL_TESTVECTOR;
|
return CRYPT_FAIL_TESTVECTOR;
|
||||||
} else if (tested == 0) {
|
|
||||||
return CRYPT_NOP;
|
|
||||||
} else {
|
|
||||||
return CRYPT_OK;
|
|
||||||
}
|
}
|
||||||
|
if (tested == 0) {
|
||||||
|
return CRYPT_NOP;
|
||||||
|
}
|
||||||
|
return CRYPT_OK;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,32 +58,31 @@ int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s
|
|||||||
|
|
||||||
if (cipher_descriptor[cbc->cipher].accel_cbc_decrypt != NULL) {
|
if (cipher_descriptor[cbc->cipher].accel_cbc_decrypt != NULL) {
|
||||||
return cipher_descriptor[cbc->cipher].accel_cbc_decrypt(ct, pt, len / cbc->blocklen, cbc->IV, &cbc->key);
|
return cipher_descriptor[cbc->cipher].accel_cbc_decrypt(ct, pt, len / cbc->blocklen, cbc->IV, &cbc->key);
|
||||||
} else {
|
}
|
||||||
while (len) {
|
while (len) {
|
||||||
/* decrypt */
|
/* decrypt */
|
||||||
if ((err = cipher_descriptor[cbc->cipher].ecb_decrypt(ct, tmp, &cbc->key)) != CRYPT_OK) {
|
if ((err = cipher_descriptor[cbc->cipher].ecb_decrypt(ct, tmp, &cbc->key)) != CRYPT_OK) {
|
||||||
return err;
|
return err;
|
||||||
}
|
|
||||||
|
|
||||||
/* xor IV against plaintext */
|
|
||||||
#if defined(LTC_FAST)
|
|
||||||
for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) {
|
|
||||||
tmpy = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^ *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)tmp + x));
|
|
||||||
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x));
|
|
||||||
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)) = tmpy;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
for (x = 0; x < cbc->blocklen; x++) {
|
|
||||||
tmpy = tmp[x] ^ cbc->IV[x];
|
|
||||||
cbc->IV[x] = ct[x];
|
|
||||||
pt[x] = tmpy;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ct += cbc->blocklen;
|
|
||||||
pt += cbc->blocklen;
|
|
||||||
len -= cbc->blocklen;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* xor IV against plaintext */
|
||||||
|
#if defined(LTC_FAST)
|
||||||
|
for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) {
|
||||||
|
tmpy = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^ *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)tmp + x));
|
||||||
|
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x));
|
||||||
|
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)) = tmpy;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
for (x = 0; x < cbc->blocklen; x++) {
|
||||||
|
tmpy = tmp[x] ^ cbc->IV[x];
|
||||||
|
cbc->IV[x] = ct[x];
|
||||||
|
pt[x] = tmpy;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ct += cbc->blocklen;
|
||||||
|
pt += cbc->blocklen;
|
||||||
|
len -= cbc->blocklen;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
@ -52,39 +52,38 @@ int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s
|
|||||||
|
|
||||||
if (cipher_descriptor[cbc->cipher].accel_cbc_encrypt != NULL) {
|
if (cipher_descriptor[cbc->cipher].accel_cbc_encrypt != NULL) {
|
||||||
return cipher_descriptor[cbc->cipher].accel_cbc_encrypt(pt, ct, len / cbc->blocklen, cbc->IV, &cbc->key);
|
return cipher_descriptor[cbc->cipher].accel_cbc_encrypt(pt, ct, len / cbc->blocklen, cbc->IV, &cbc->key);
|
||||||
} else {
|
}
|
||||||
while (len) {
|
while (len) {
|
||||||
/* xor IV against plaintext */
|
/* xor IV against plaintext */
|
||||||
#if defined(LTC_FAST)
|
#if defined(LTC_FAST)
|
||||||
for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) {
|
for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) {
|
||||||
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^= *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x));
|
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^= *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x));
|
||||||
}
|
|
||||||
#else
|
|
||||||
for (x = 0; x < cbc->blocklen; x++) {
|
|
||||||
cbc->IV[x] ^= pt[x];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* encrypt */
|
|
||||||
if ((err = cipher_descriptor[cbc->cipher].ecb_encrypt(cbc->IV, ct, &cbc->key)) != CRYPT_OK) {
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* store IV [ciphertext] for a future block */
|
|
||||||
#if defined(LTC_FAST)
|
|
||||||
for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) {
|
|
||||||
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
for (x = 0; x < cbc->blocklen; x++) {
|
|
||||||
cbc->IV[x] = ct[x];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ct += cbc->blocklen;
|
|
||||||
pt += cbc->blocklen;
|
|
||||||
len -= cbc->blocklen;
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
for (x = 0; x < cbc->blocklen; x++) {
|
||||||
|
cbc->IV[x] ^= pt[x];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* encrypt */
|
||||||
|
if ((err = cipher_descriptor[cbc->cipher].ecb_encrypt(cbc->IV, ct, &cbc->key)) != CRYPT_OK) {
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* store IV [ciphertext] for a future block */
|
||||||
|
#if defined(LTC_FAST)
|
||||||
|
for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) {
|
||||||
|
*(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x));
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
for (x = 0; x < cbc->blocklen; x++) {
|
||||||
|
cbc->IV[x] = ct[x];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ct += cbc->blocklen;
|
||||||
|
pt += cbc->blocklen;
|
||||||
|
len -= cbc->blocklen;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
@ -39,15 +39,14 @@ int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s
|
|||||||
/* check for accel */
|
/* check for accel */
|
||||||
if (cipher_descriptor[ecb->cipher].accel_ecb_decrypt != NULL) {
|
if (cipher_descriptor[ecb->cipher].accel_ecb_decrypt != NULL) {
|
||||||
return cipher_descriptor[ecb->cipher].accel_ecb_decrypt(ct, pt, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key);
|
return cipher_descriptor[ecb->cipher].accel_ecb_decrypt(ct, pt, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key);
|
||||||
} else {
|
}
|
||||||
while (len) {
|
while (len) {
|
||||||
if ((err = cipher_descriptor[ecb->cipher].ecb_decrypt(ct, pt, &ecb->key)) != CRYPT_OK) {
|
if ((err = cipher_descriptor[ecb->cipher].ecb_decrypt(ct, pt, &ecb->key)) != CRYPT_OK) {
|
||||||
return err;
|
return err;
|
||||||
}
|
|
||||||
pt += cipher_descriptor[ecb->cipher].block_length;
|
|
||||||
ct += cipher_descriptor[ecb->cipher].block_length;
|
|
||||||
len -= cipher_descriptor[ecb->cipher].block_length;
|
|
||||||
}
|
}
|
||||||
|
pt += cipher_descriptor[ecb->cipher].block_length;
|
||||||
|
ct += cipher_descriptor[ecb->cipher].block_length;
|
||||||
|
len -= cipher_descriptor[ecb->cipher].block_length;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
@ -39,15 +39,14 @@ int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s
|
|||||||
/* check for accel */
|
/* check for accel */
|
||||||
if (cipher_descriptor[ecb->cipher].accel_ecb_encrypt != NULL) {
|
if (cipher_descriptor[ecb->cipher].accel_ecb_encrypt != NULL) {
|
||||||
return cipher_descriptor[ecb->cipher].accel_ecb_encrypt(pt, ct, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key);
|
return cipher_descriptor[ecb->cipher].accel_ecb_encrypt(pt, ct, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key);
|
||||||
} else {
|
}
|
||||||
while (len) {
|
while (len) {
|
||||||
if ((err = cipher_descriptor[ecb->cipher].ecb_encrypt(pt, ct, &ecb->key)) != CRYPT_OK) {
|
if ((err = cipher_descriptor[ecb->cipher].ecb_encrypt(pt, ct, &ecb->key)) != CRYPT_OK) {
|
||||||
return err;
|
return err;
|
||||||
}
|
|
||||||
pt += cipher_descriptor[ecb->cipher].block_length;
|
|
||||||
ct += cipher_descriptor[ecb->cipher].block_length;
|
|
||||||
len -= cipher_descriptor[ecb->cipher].block_length;
|
|
||||||
}
|
}
|
||||||
|
pt += cipher_descriptor[ecb->cipher].block_length;
|
||||||
|
ct += cipher_descriptor[ecb->cipher].block_length;
|
||||||
|
len -= cipher_descriptor[ecb->cipher].block_length;
|
||||||
}
|
}
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
}
|
}
|
||||||
|
@ -41,9 +41,11 @@ int der_decode_asn1_length(const unsigned char *in, unsigned long *inlen, unsign
|
|||||||
real_len &= 0x7F;
|
real_len &= 0x7F;
|
||||||
if (real_len == 0) {
|
if (real_len == 0) {
|
||||||
return CRYPT_PK_ASN1_ERROR;
|
return CRYPT_PK_ASN1_ERROR;
|
||||||
} else if (real_len > sizeof(decoded_len)) {
|
}
|
||||||
|
if (real_len > sizeof(decoded_len)) {
|
||||||
return CRYPT_OVERFLOW;
|
return CRYPT_OVERFLOW;
|
||||||
} else if (real_len > (*inlen - 1)) {
|
}
|
||||||
|
if (real_len > (*inlen - 1)) {
|
||||||
return CRYPT_BUFFER_OVERFLOW;
|
return CRYPT_BUFFER_OVERFLOW;
|
||||||
}
|
}
|
||||||
decoded_len = 0;
|
decoded_len = 0;
|
||||||
|
@ -41,16 +41,15 @@ int der_encode_asn1_identifier(const ltc_asn1_list *id, unsigned char *out, unsi
|
|||||||
}
|
}
|
||||||
*outlen = 1;
|
*outlen = 1;
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
}
|
||||||
if (id->klass < LTC_ASN1_CL_UNIVERSAL || id->klass > LTC_ASN1_CL_PRIVATE) {
|
if (id->klass < LTC_ASN1_CL_UNIVERSAL || id->klass > LTC_ASN1_CL_PRIVATE) {
|
||||||
return CRYPT_INVALID_ARG;
|
return CRYPT_INVALID_ARG;
|
||||||
}
|
}
|
||||||
if (id->pc < LTC_ASN1_PC_PRIMITIVE || id->pc > LTC_ASN1_PC_CONSTRUCTED) {
|
if (id->pc < LTC_ASN1_PC_PRIMITIVE || id->pc > LTC_ASN1_PC_CONSTRUCTED) {
|
||||||
return CRYPT_INVALID_ARG;
|
return CRYPT_INVALID_ARG;
|
||||||
}
|
}
|
||||||
if (id->tag > (ULONG_MAX >> (8 + 7))) {
|
if (id->tag > (ULONG_MAX >> (8 + 7))) {
|
||||||
return CRYPT_INVALID_ARG;
|
return CRYPT_INVALID_ARG;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (out != NULL) {
|
if (out != NULL) {
|
||||||
|
@ -112,7 +112,8 @@ YYYYMMDDhhmmss.fs-hh'mm'
|
|||||||
/* now is it Z or . */
|
/* now is it Z or . */
|
||||||
if (buf[x] == 'Z') {
|
if (buf[x] == 'Z') {
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else if (buf[x] == '.') {
|
}
|
||||||
|
if (buf[x] == '.') {
|
||||||
x++;
|
x++;
|
||||||
while (buf[x] >= '0' && buf[x] <= '9') {
|
while (buf[x] >= '0' && buf[x] <= '9') {
|
||||||
unsigned fs = out->fs;
|
unsigned fs = out->fs;
|
||||||
@ -127,14 +128,14 @@ YYYYMMDDhhmmss.fs-hh'mm'
|
|||||||
/* now is it Z, +, - */
|
/* now is it Z, +, - */
|
||||||
if (buf[x] == 'Z') {
|
if (buf[x] == 'Z') {
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else if (buf[x] == '+' || buf[x] == '-') {
|
}
|
||||||
|
if (buf[x] == '+' || buf[x] == '-') {
|
||||||
out->off_dir = (buf[x++] == '+') ? 0 : 1;
|
out->off_dir = (buf[x++] == '+') ? 0 : 1;
|
||||||
DECODE_V(out->off_hh, 24);
|
DECODE_V(out->off_hh, 24);
|
||||||
DECODE_V(out->off_mm, 60);
|
DECODE_V(out->off_mm, 60);
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
return CRYPT_INVALID_PACKET;
|
|
||||||
}
|
}
|
||||||
|
return CRYPT_INVALID_PACKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -33,9 +33,8 @@ static int _qsort_helper(const void *a, const void *b)
|
|||||||
if (r == 0) {
|
if (r == 0) {
|
||||||
/* their order in the original list now determines the position */
|
/* their order in the original list now determines the position */
|
||||||
return A->used - B->used;
|
return A->used - B->used;
|
||||||
} else {
|
|
||||||
return r;
|
|
||||||
}
|
}
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -95,7 +95,8 @@ YYMMDDhhmmss-hh'mm'
|
|||||||
/* now is it Z, +, - or 0-9 */
|
/* now is it Z, +, - or 0-9 */
|
||||||
if (buf[x] == 'Z') {
|
if (buf[x] == 'Z') {
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else if (buf[x] == '+' || buf[x] == '-') {
|
}
|
||||||
|
if (buf[x] == '+' || buf[x] == '-') {
|
||||||
out->off_dir = (buf[x++] == '+') ? 0 : 1;
|
out->off_dir = (buf[x++] == '+') ? 0 : 1;
|
||||||
DECODE_V(out->off_hh, 24);
|
DECODE_V(out->off_hh, 24);
|
||||||
DECODE_V(out->off_mm, 60);
|
DECODE_V(out->off_mm, 60);
|
||||||
@ -108,14 +109,14 @@ YYMMDDhhmmss-hh'mm'
|
|||||||
/* now is it Z, +, - */
|
/* now is it Z, +, - */
|
||||||
if (buf[x] == 'Z') {
|
if (buf[x] == 'Z') {
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else if (buf[x] == '+' || buf[x] == '-') {
|
}
|
||||||
|
if (buf[x] == '+' || buf[x] == '-') {
|
||||||
out->off_dir = (buf[x++] == '+') ? 0 : 1;
|
out->off_dir = (buf[x++] == '+') ? 0 : 1;
|
||||||
DECODE_V(out->off_hh, 24);
|
DECODE_V(out->off_hh, 24);
|
||||||
DECODE_V(out->off_mm, 60);
|
DECODE_V(out->off_mm, 60);
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
return CRYPT_INVALID_PACKET;
|
|
||||||
}
|
}
|
||||||
|
return CRYPT_INVALID_PACKET;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,18 +23,17 @@ unsigned long der_utf8_charsize(const wchar_t c)
|
|||||||
{
|
{
|
||||||
if (c <= 0x7F) {
|
if (c <= 0x7F) {
|
||||||
return 1;
|
return 1;
|
||||||
} else if (c <= 0x7FF) {
|
}
|
||||||
|
if (c <= 0x7FF) {
|
||||||
return 2;
|
return 2;
|
||||||
|
}
|
||||||
#if LTC_WCHAR_MAX == 0xFFFF
|
#if LTC_WCHAR_MAX == 0xFFFF
|
||||||
} else {
|
return 3;
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
} else if (c <= 0xFFFF) {
|
if (c <= 0xFFFF) {
|
||||||
return 3;
|
return 3;
|
||||||
} else {
|
|
||||||
return 4;
|
|
||||||
}
|
}
|
||||||
|
return 4;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,27 +19,25 @@ static int _dh_groupsize_to_keysize(int groupsize)
|
|||||||
if (groupsize <= 0) {
|
if (groupsize <= 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else if (groupsize <= 192) {
|
if (groupsize <= 192) {
|
||||||
return 30; /* 1536-bit => key size 240-bit */
|
return 30; /* 1536-bit => key size 240-bit */
|
||||||
}
|
}
|
||||||
else if (groupsize <= 256) {
|
if (groupsize <= 256) {
|
||||||
return 40; /* 2048-bit => key size 320-bit */
|
return 40; /* 2048-bit => key size 320-bit */
|
||||||
}
|
}
|
||||||
else if (groupsize <= 384) {
|
if (groupsize <= 384) {
|
||||||
return 52; /* 3072-bit => key size 416-bit */
|
return 52; /* 3072-bit => key size 416-bit */
|
||||||
}
|
}
|
||||||
else if (groupsize <= 512) {
|
if (groupsize <= 512) {
|
||||||
return 60; /* 4096-bit => key size 480-bit */
|
return 60; /* 4096-bit => key size 480-bit */
|
||||||
}
|
}
|
||||||
else if (groupsize <= 768) {
|
if (groupsize <= 768) {
|
||||||
return 67; /* 6144-bit => key size 536-bit */
|
return 67; /* 6144-bit => key size 536-bit */
|
||||||
}
|
}
|
||||||
else if (groupsize <= 1024) {
|
if (groupsize <= 1024) {
|
||||||
return 77; /* 8192-bit => key size 616-bit */
|
return 77; /* 8192-bit => key size 616-bit */
|
||||||
}
|
}
|
||||||
else {
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int dh_generate_key(prng_state *prng, int wprng, dh_key *key)
|
int dh_generate_key(prng_state *prng, int wprng, dh_key *key)
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
int dsa_export(unsigned char *out, unsigned long *outlen, int type, const dsa_key *key)
|
int dsa_export(unsigned char *out, unsigned long *outlen, int type, const dsa_key *key)
|
||||||
{
|
{
|
||||||
unsigned long zero=0;
|
unsigned long zero=0;
|
||||||
|
unsigned char flags[1];
|
||||||
int err, std;
|
int err, std;
|
||||||
|
|
||||||
LTC_ARGCHK(out != NULL);
|
LTC_ARGCHK(out != NULL);
|
||||||
@ -35,15 +36,10 @@ int dsa_export(unsigned char *out, unsigned long *outlen, int type, const dsa_ke
|
|||||||
std = type & PK_STD;
|
std = type & PK_STD;
|
||||||
type &= ~PK_STD;
|
type &= ~PK_STD;
|
||||||
|
|
||||||
/* can we store the static header? */
|
|
||||||
if (type == PK_PRIVATE && key->type != PK_PRIVATE) {
|
if (type == PK_PRIVATE && key->type != PK_PRIVATE) {
|
||||||
return CRYPT_PK_TYPE_MISMATCH;
|
return CRYPT_PK_TYPE_MISMATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type != PK_PUBLIC && type != PK_PRIVATE) {
|
|
||||||
return CRYPT_INVALID_ARG;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (type == PK_PRIVATE) {
|
if (type == PK_PRIVATE) {
|
||||||
if (std) {
|
if (std) {
|
||||||
return der_encode_sequence_multi(out, outlen,
|
return der_encode_sequence_multi(out, outlen,
|
||||||
@ -55,10 +51,8 @@ int dsa_export(unsigned char *out, unsigned long *outlen, int type, const dsa_ke
|
|||||||
LTC_ASN1_INTEGER, 1UL, key->x,
|
LTC_ASN1_INTEGER, 1UL, key->x,
|
||||||
LTC_ASN1_EOL, 0UL, NULL);
|
LTC_ASN1_EOL, 0UL, NULL);
|
||||||
}
|
}
|
||||||
else {
|
flags[0] = 1;
|
||||||
unsigned char flags[1];
|
return der_encode_sequence_multi(out, outlen,
|
||||||
flags[0] = 1;
|
|
||||||
return der_encode_sequence_multi(out, outlen,
|
|
||||||
LTC_ASN1_BIT_STRING, 1UL, flags,
|
LTC_ASN1_BIT_STRING, 1UL, flags,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->g,
|
LTC_ASN1_INTEGER, 1UL, key->g,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->p,
|
LTC_ASN1_INTEGER, 1UL, key->p,
|
||||||
@ -66,8 +60,9 @@ int dsa_export(unsigned char *out, unsigned long *outlen, int type, const dsa_ke
|
|||||||
LTC_ASN1_INTEGER, 1UL, key->y,
|
LTC_ASN1_INTEGER, 1UL, key->y,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->x,
|
LTC_ASN1_INTEGER, 1UL, key->x,
|
||||||
LTC_ASN1_EOL, 0UL, NULL);
|
LTC_ASN1_EOL, 0UL, NULL);
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
if (type == PK_PUBLIC) {
|
||||||
if (std) {
|
if (std) {
|
||||||
unsigned long tmplen = (unsigned long)(mp_count_bits(key->y) / 8) + 8;
|
unsigned long tmplen = (unsigned long)(mp_count_bits(key->y) / 8) + 8;
|
||||||
unsigned char* tmp = XMALLOC(tmplen);
|
unsigned char* tmp = XMALLOC(tmplen);
|
||||||
@ -94,18 +89,17 @@ error:
|
|||||||
XFREE(tmp);
|
XFREE(tmp);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
else {
|
flags[0] = 0;
|
||||||
unsigned char flags[1];
|
return der_encode_sequence_multi(out, outlen,
|
||||||
flags[0] = 0;
|
|
||||||
return der_encode_sequence_multi(out, outlen,
|
|
||||||
LTC_ASN1_BIT_STRING, 1UL, flags,
|
LTC_ASN1_BIT_STRING, 1UL, flags,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->g,
|
LTC_ASN1_INTEGER, 1UL, key->g,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->p,
|
LTC_ASN1_INTEGER, 1UL, key->p,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->q,
|
LTC_ASN1_INTEGER, 1UL, key->q,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->y,
|
LTC_ASN1_INTEGER, 1UL, key->y,
|
||||||
LTC_ASN1_EOL, 0UL, NULL);
|
LTC_ASN1_EOL, 0UL, NULL);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return CRYPT_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -208,10 +208,8 @@ static int _name_match(const char *left, const char *right)
|
|||||||
right++;
|
right++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((*left == '\0') && (*right == '\0'))
|
if ((*left == '\0') && (*right == '\0')) return 1;
|
||||||
return 1;
|
return 0;
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ecc_get_curve(const char *name_or_oid, const ltc_ecc_curve **cu)
|
int ecc_get_curve(const char *name_or_oid, const ltc_ecc_curve **cu)
|
||||||
|
@ -26,14 +26,16 @@
|
|||||||
int rsa_export(unsigned char *out, unsigned long *outlen, int type, const rsa_key *key)
|
int rsa_export(unsigned char *out, unsigned long *outlen, int type, const rsa_key *key)
|
||||||
{
|
{
|
||||||
unsigned long zero=0;
|
unsigned long zero=0;
|
||||||
int err;
|
int err, std;
|
||||||
LTC_ARGCHK(out != NULL);
|
LTC_ARGCHK(out != NULL);
|
||||||
LTC_ARGCHK(outlen != NULL);
|
LTC_ARGCHK(outlen != NULL);
|
||||||
LTC_ARGCHK(key != NULL);
|
LTC_ARGCHK(key != NULL);
|
||||||
|
|
||||||
/* type valid? */
|
std = type & PK_STD;
|
||||||
if (!(key->type == PK_PRIVATE) && (type == PK_PRIVATE)) {
|
type &= ~PK_STD;
|
||||||
return CRYPT_PK_INVALID_TYPE;
|
|
||||||
|
if (type == PK_PRIVATE && key->type != PK_PRIVATE) {
|
||||||
|
return CRYPT_PK_TYPE_MISMATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == PK_PRIVATE) {
|
if (type == PK_PRIVATE) {
|
||||||
@ -52,12 +54,14 @@ int rsa_export(unsigned char *out, unsigned long *outlen, int type, const rsa_ke
|
|||||||
LTC_ASN1_INTEGER, 1UL, key->dQ,
|
LTC_ASN1_INTEGER, 1UL, key->dQ,
|
||||||
LTC_ASN1_INTEGER, 1UL, key->qP,
|
LTC_ASN1_INTEGER, 1UL, key->qP,
|
||||||
LTC_ASN1_EOL, 0UL, NULL);
|
LTC_ASN1_EOL, 0UL, NULL);
|
||||||
} else {
|
}
|
||||||
|
|
||||||
|
if (type == PK_PUBLIC) {
|
||||||
/* public key */
|
/* public key */
|
||||||
unsigned long tmplen, *ptmplen;
|
unsigned long tmplen, *ptmplen;
|
||||||
unsigned char* tmp = NULL;
|
unsigned char* tmp = NULL;
|
||||||
|
|
||||||
if (type & PK_STD) {
|
if (std) {
|
||||||
tmplen = (unsigned long)(mp_count_bits(key->N) / 8) * 2 + 8;
|
tmplen = (unsigned long)(mp_count_bits(key->N) / 8) * 2 + 8;
|
||||||
tmp = XMALLOC(tmplen);
|
tmp = XMALLOC(tmplen);
|
||||||
ptmplen = &tmplen;
|
ptmplen = &tmplen;
|
||||||
@ -75,7 +79,7 @@ int rsa_export(unsigned char *out, unsigned long *outlen, int type, const rsa_ke
|
|||||||
LTC_ASN1_INTEGER, 1UL, key->e,
|
LTC_ASN1_INTEGER, 1UL, key->e,
|
||||||
LTC_ASN1_EOL, 0UL, NULL);
|
LTC_ASN1_EOL, 0UL, NULL);
|
||||||
|
|
||||||
if ((err != CRYPT_OK) || !(type & PK_STD)) {
|
if ((err != CRYPT_OK) || !std) {
|
||||||
goto finish;
|
goto finish;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,8 +90,9 @@ finish:
|
|||||||
if (tmp != out)
|
if (tmp != out)
|
||||||
XFREE(tmp);
|
XFREE(tmp);
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return CRYPT_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* LTC_MRSA */
|
#endif /* LTC_MRSA */
|
||||||
|
@ -297,13 +297,12 @@ int rabbit_crypt(rabbit_state* st, const unsigned char *in, unsigned long inlen,
|
|||||||
/* copy remainder to block */
|
/* copy remainder to block */
|
||||||
for (i = inlen; i < 16; ++i) st->block[i] = buf[i];
|
for (i = inlen; i < 16; ++i) st->block[i] = buf[i];
|
||||||
return CRYPT_OK;
|
return CRYPT_OK;
|
||||||
} else {
|
|
||||||
/* XOR entire buf and send to out */
|
|
||||||
for (i = 0; i < 16; ++i) out[i] = in[i] ^ buf[i];
|
|
||||||
inlen -= 16;
|
|
||||||
out += 16;
|
|
||||||
in += 16;
|
|
||||||
}
|
}
|
||||||
|
/* XOR entire buf and send to out */
|
||||||
|
for (i = 0; i < 16; ++i) out[i] = in[i] ^ buf[i];
|
||||||
|
inlen -= 16;
|
||||||
|
out += 16;
|
||||||
|
in += 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user