Merge pull request #252 from moisesguimaraes/fix_srp_build

fixes srp build without sha512
This commit is contained in:
John Safranek
2016-01-14 15:48:39 -08:00
2 changed files with 82 additions and 50 deletions

View File

@ -29,7 +29,7 @@
#include <wolfssl/wolfcrypt/sha512.h> #include <wolfssl/wolfcrypt/sha512.h>
#include <wolfssl/wolfcrypt/srp.h> #include <wolfssl/wolfcrypt/srp.h>
#ifdef WOLFCRYPT_HAVE_SRP #if defined(WOLFCRYPT_HAVE_SRP) && defined(WOLFSSL_SHA512)
static byte username[] = "user"; static byte username[] = "user";
static word32 usernameSz = 4; static word32 usernameSz = 4;
@ -683,7 +683,7 @@ static void test_SrpKeyGenFunc_cb(void)
void SrpTest(void) void SrpTest(void)
{ {
#ifdef WOLFCRYPT_HAVE_SRP #if defined(WOLFCRYPT_HAVE_SRP) && defined(WOLFSSL_SHA512)
test_SrpInit(); test_SrpInit();
test_SrpSetUsername(); test_SrpSetUsername();
test_SrpSetParams(); test_SrpSetParams();

View File

@ -45,25 +45,33 @@ static int SrpHashInit(SrpHash* hash, SrpType type)
hash->type = type; hash->type = type;
switch (type) { switch (type) {
#ifndef NO_SHA
case SRP_TYPE_SHA: case SRP_TYPE_SHA:
return wc_InitSha(&hash->data.sha); #ifndef NO_SHA
#endif return wc_InitSha(&hash->data.sha);
#else
return BAD_FUNC_ARG;
#endif
#ifndef NO_SHA256
case SRP_TYPE_SHA256: case SRP_TYPE_SHA256:
return wc_InitSha256(&hash->data.sha256); #ifndef NO_SHA256
#endif return wc_InitSha256(&hash->data.sha256);
#else
return BAD_FUNC_ARG;
#endif
#ifdef WOLFSSL_SHA384
case SRP_TYPE_SHA384: case SRP_TYPE_SHA384:
return wc_InitSha384(&hash->data.sha384); #ifdef WOLFSSL_SHA384
#endif return wc_InitSha384(&hash->data.sha384);
#else
return BAD_FUNC_ARG;
#endif
#ifdef WOLFSSL_SHA512
case SRP_TYPE_SHA512: case SRP_TYPE_SHA512:
return wc_InitSha512(&hash->data.sha512); #ifdef WOLFSSL_SHA512
#endif return wc_InitSha512(&hash->data.sha512);
#else
return BAD_FUNC_ARG;
#endif
default: default:
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
@ -73,25 +81,33 @@ static int SrpHashInit(SrpHash* hash, SrpType type)
static int SrpHashUpdate(SrpHash* hash, const byte* data, word32 size) static int SrpHashUpdate(SrpHash* hash, const byte* data, word32 size)
{ {
switch (hash->type) { switch (hash->type) {
#ifndef NO_SHA
case SRP_TYPE_SHA: case SRP_TYPE_SHA:
return wc_ShaUpdate(&hash->data.sha, data, size); #ifndef NO_SHA
#endif return wc_ShaUpdate(&hash->data.sha, data, size);
#else
return BAD_FUNC_ARG;
#endif
#ifndef NO_SHA256
case SRP_TYPE_SHA256: case SRP_TYPE_SHA256:
return wc_Sha256Update(&hash->data.sha256, data, size); #ifndef NO_SHA256
#endif return wc_Sha256Update(&hash->data.sha256, data, size);
#else
return BAD_FUNC_ARG;
#endif
#ifdef WOLFSSL_SHA384
case SRP_TYPE_SHA384: case SRP_TYPE_SHA384:
return wc_Sha384Update(&hash->data.sha384, data, size); #ifdef WOLFSSL_SHA384
#endif return wc_Sha384Update(&hash->data.sha384, data, size);
#else
return BAD_FUNC_ARG;
#endif
#ifdef WOLFSSL_SHA512
case SRP_TYPE_SHA512: case SRP_TYPE_SHA512:
return wc_Sha512Update(&hash->data.sha512, data, size); #ifdef WOLFSSL_SHA512
#endif return wc_Sha512Update(&hash->data.sha512, data, size);
#else
return BAD_FUNC_ARG;
#endif
default: default:
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
@ -101,25 +117,33 @@ static int SrpHashUpdate(SrpHash* hash, const byte* data, word32 size)
static int SrpHashFinal(SrpHash* hash, byte* digest) static int SrpHashFinal(SrpHash* hash, byte* digest)
{ {
switch (hash->type) { switch (hash->type) {
#ifndef NO_SHA
case SRP_TYPE_SHA: case SRP_TYPE_SHA:
return wc_ShaFinal(&hash->data.sha, digest); #ifndef NO_SHA
#endif return wc_ShaFinal(&hash->data.sha, digest);
#else
return BAD_FUNC_ARG;
#endif
#ifndef NO_SHA256
case SRP_TYPE_SHA256: case SRP_TYPE_SHA256:
return wc_Sha256Final(&hash->data.sha256, digest); #ifndef NO_SHA256
#endif return wc_Sha256Final(&hash->data.sha256, digest);
#else
return BAD_FUNC_ARG;
#endif
#ifdef WOLFSSL_SHA384
case SRP_TYPE_SHA384: case SRP_TYPE_SHA384:
return wc_Sha384Final(&hash->data.sha384, digest); #ifdef WOLFSSL_SHA384
#endif return wc_Sha384Final(&hash->data.sha384, digest);
#else
return BAD_FUNC_ARG;
#endif
#ifdef WOLFSSL_SHA512
case SRP_TYPE_SHA512: case SRP_TYPE_SHA512:
return wc_Sha512Final(&hash->data.sha512, digest); #ifdef WOLFSSL_SHA512
#endif return wc_Sha512Final(&hash->data.sha512, digest);
#else
return BAD_FUNC_ARG;
#endif
default: default:
return BAD_FUNC_ARG; return BAD_FUNC_ARG;
@ -129,25 +153,33 @@ static int SrpHashFinal(SrpHash* hash, byte* digest)
static word32 SrpHashSize(SrpType type) static word32 SrpHashSize(SrpType type)
{ {
switch (type) { switch (type) {
#ifndef NO_SHA
case SRP_TYPE_SHA: case SRP_TYPE_SHA:
return SHA_DIGEST_SIZE; #ifndef NO_SHA
#endif return SHA_DIGEST_SIZE;
#else
return 0;
#endif
#ifndef NO_SHA256
case SRP_TYPE_SHA256: case SRP_TYPE_SHA256:
return SHA256_DIGEST_SIZE; #ifndef NO_SHA256
#endif return SHA256_DIGEST_SIZE;
#else
return 0;
#endif
#ifdef WOLFSSL_SHA384
case SRP_TYPE_SHA384: case SRP_TYPE_SHA384:
return SHA384_DIGEST_SIZE; #ifdef WOLFSSL_SHA384
#endif return SHA384_DIGEST_SIZE;
#else
return 0;
#endif
#ifdef WOLFSSL_SHA512
case SRP_TYPE_SHA512: case SRP_TYPE_SHA512:
return SHA512_DIGEST_SIZE; #ifdef WOLFSSL_SHA512
#endif return SHA512_DIGEST_SIZE;
#else
return 0;
#endif
default: default:
return 0; return 0;