Merge pull request #139 from libtom/fix/139
rand_prime undefined reference when using CFLAGS="-DLTM_DESC -DLTC_EASY
This commit is contained in:
		
						commit
						3dd0845dec
					
				| @ -4,6 +4,10 @@ compiler: | |||||||
|   - clang |   - clang | ||||||
| script: bash "${BUILDSCRIPT}" "${BUILDNAME}" "${BUILDOPTIONS}" "makefile" "-DUSE_LTM -DLTM_DESC -I/usr/include" "/usr/lib/libtommath.a" | script: bash "${BUILDSCRIPT}" "${BUILDNAME}" "${BUILDOPTIONS}" "makefile" "-DUSE_LTM -DLTM_DESC -I/usr/include" "/usr/lib/libtommath.a" | ||||||
| env: | env: | ||||||
|  |   - | | ||||||
|  |     BUILDSCRIPT="check_source.sh" | ||||||
|  |     BUILDNAME="CHECK_SOURCES" | ||||||
|  |     BUILDOPTIONS=" " | ||||||
|   - | |   - | | ||||||
|     BUILDSCRIPT="coverage.sh" |     BUILDSCRIPT="coverage.sh" | ||||||
|     BUILDNAME="COVERAGE" |     BUILDNAME="COVERAGE" | ||||||
| @ -12,6 +16,10 @@ env: | |||||||
|     BUILDSCRIPT="run.sh" |     BUILDSCRIPT="run.sh" | ||||||
|     BUILDNAME="STOCK" |     BUILDNAME="STOCK" | ||||||
|     BUILDOPTIONS=" " |     BUILDOPTIONS=" " | ||||||
|  |   - | | ||||||
|  |     BUILDSCRIPT="run.sh" | ||||||
|  |     BUILDNAME="EASY" | ||||||
|  |     BUILDOPTIONS="-DLTC_EASY" | ||||||
|   - | |   - | | ||||||
|     BUILDSCRIPT="run.sh" |     BUILDSCRIPT="run.sh" | ||||||
|     BUILDNAME="SMALL" |     BUILDNAME="SMALL" | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								build.sh
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								build.sh
									
									
									
									
									
								
							| @ -28,7 +28,17 @@ echo -n "testing..." | |||||||
| if [ -a test ] && [ -f test ] && [ -x test ]; then | if [ -a test ] && [ -f test ] && [ -x test ]; then | ||||||
|    ((./test >test_std.txt 2>test_err.txt && ./tv_gen > tv.txt) && echo "$1 test passed." && echo "y" > testok.txt) || (echo "$1 test failed, look at test_err.txt" && exit 1) |    ((./test >test_std.txt 2>test_err.txt && ./tv_gen > tv.txt) && echo "$1 test passed." && echo "y" > testok.txt) || (echo "$1 test failed, look at test_err.txt" && exit 1) | ||||||
|    if find *_tv.txt -type f 1>/dev/null 2>/dev/null ; then |    if find *_tv.txt -type f 1>/dev/null 2>/dev/null ; then | ||||||
|       for f in *_tv.txt; do if (diff -i -w -B $f notes/$f) then true; else (echo "tv_gen $f failed" && rm -f testok.txt && exit 1); fi; done |       for f in *_tv.txt; do | ||||||
|  |          # check for lines starting with '<' ($f might be a subset of notes/$f) | ||||||
|  |          difftroubles=$(diff -i -w -B $f notes/$f | grep '^<') | ||||||
|  |          if [ -n "$difftroubles" ]; then | ||||||
|  |             echo "FAILURE: $f" | ||||||
|  |             diff -i -w -B $f notes/$f | ||||||
|  |             echo "tv_gen $f failed" && rm -f testok.txt && exit 1 | ||||||
|  |          else | ||||||
|  |             true | ||||||
|  |          fi | ||||||
|  |       done | ||||||
|    fi |    fi | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -9,7 +9,6 @@ | |||||||
| use strict; | use strict; | ||||||
| use warnings; | use warnings; | ||||||
| 
 | 
 | ||||||
| use Test::More; |  | ||||||
| use File::Find 'find'; | use File::Find 'find'; | ||||||
| use File::Basename 'basename'; | use File::Basename 'basename'; | ||||||
| use File::Glob 'bsd_glob'; | use File::Glob 'bsd_glob'; | ||||||
| @ -37,7 +36,7 @@ for my $file (sort @all_files) { | |||||||
|     $lineno++; |     $lineno++; | ||||||
|   } |   } | ||||||
|   for my $k (sort keys %$troubles) { |   for my $k (sort keys %$troubles) { | ||||||
|     warn "FAIL: [$k] $file line:" . join(",", @{$troubles->{$k}}) . "\n"; |     warn "[$k] $file line:" . join(",", @{$troubles->{$k}}) . "\n"; | ||||||
|     $fails++; |     $fails++; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
							
								
								
									
										17
									
								
								check_source.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										17
									
								
								check_source.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | # output version | ||||||
|  | bash printinfo.sh | ||||||
|  | 
 | ||||||
|  | make clean > /dev/null | ||||||
|  | 
 | ||||||
|  | if [ -f check-source.pl ] ; then | ||||||
|  |   echo "checking white spaces..." | ||||||
|  |   perl check-source.pl || exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | exit 0 | ||||||
|  | 
 | ||||||
|  | # $Source$ | ||||||
|  | # $Revision$ | ||||||
|  | # $Date$ | ||||||
| @ -67,6 +67,7 @@ int main(int argc, char **argv) | |||||||
| void register_algs(void) | void register_algs(void) | ||||||
| { | { | ||||||
|   int err; |   int err; | ||||||
|  |   LTC_UNUSED_PARAM(err); | ||||||
| 
 | 
 | ||||||
| #ifdef LTC_TIGER | #ifdef LTC_TIGER | ||||||
|   register_hash (&tiger_desc); |   register_hash (&tiger_desc); | ||||||
|  | |||||||
| @ -56,6 +56,7 @@ int main(void) | |||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
| /* LTC_OMAC */ | /* LTC_OMAC */ | ||||||
|  | #ifdef LTC_OMAC | ||||||
|    len = sizeof(buf[0]); |    len = sizeof(buf[0]); | ||||||
|    omac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); |    omac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); | ||||||
|    len2 = sizeof(buf[0]); |    len2 = sizeof(buf[0]); | ||||||
| @ -76,8 +77,10 @@ int main(void) | |||||||
|       printf("Failed: %d %lu %lu\n", __LINE__, len, len2); |       printf("Failed: %d %lu %lu\n", __LINE__, len, len2); | ||||||
|       return EXIT_FAILURE; |       return EXIT_FAILURE; | ||||||
|    } |    } | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
| /* PMAC */ | /* PMAC */ | ||||||
|  | #ifdef LTC_PMAC | ||||||
|    len = sizeof(buf[0]); |    len = sizeof(buf[0]); | ||||||
|    pmac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); |    pmac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); | ||||||
|    len2 = sizeof(buf[0]); |    len2 = sizeof(buf[0]); | ||||||
| @ -98,7 +101,7 @@ int main(void) | |||||||
|       printf("Failed: %d %lu %lu\n", __LINE__, len, len2); |       printf("Failed: %d %lu %lu\n", __LINE__, len, len2); | ||||||
|       return EXIT_FAILURE; |       return EXIT_FAILURE; | ||||||
|    } |    } | ||||||
| 
 | #endif | ||||||
| 
 | 
 | ||||||
|    printf("All passed\n"); |    printf("All passed\n"); | ||||||
|    return EXIT_SUCCESS; |    return EXIT_SUCCESS; | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ | |||||||
| void reg_algs(void) | void reg_algs(void) | ||||||
| { | { | ||||||
|   int err; |   int err; | ||||||
|  |   LTC_UNUSED_PARAM(err); | ||||||
| 
 | 
 | ||||||
| #ifdef LTC_RIJNDAEL | #ifdef LTC_RIJNDAEL | ||||||
|   register_cipher (&aes_desc); |   register_cipher (&aes_desc); | ||||||
| @ -285,6 +286,7 @@ void hmac_gen(void) | |||||||
| 
 | 
 | ||||||
| void omac_gen(void) | void omac_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_OMAC | ||||||
|    unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; |    unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; | ||||||
|    int err, x, y, z, kl; |    int err, x, y, z, kl; | ||||||
|    FILE *out; |    FILE *out; | ||||||
| @ -336,10 +338,12 @@ void omac_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void pmac_gen(void) | void pmac_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_PMAC | ||||||
|    unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; |    unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; | ||||||
|    int err, x, y, z, kl; |    int err, x, y, z, kl; | ||||||
|    FILE *out; |    FILE *out; | ||||||
| @ -391,10 +395,12 @@ void pmac_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void eax_gen(void) | void eax_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_EAX_MODE | ||||||
|    int err, kl, x, y1, z; |    int err, kl, x, y1, z; | ||||||
|    FILE *out; |    FILE *out; | ||||||
|    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], header[MAXBLOCKSIZE*2], |    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], header[MAXBLOCKSIZE*2], | ||||||
| @ -451,10 +457,12 @@ void eax_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ocb_gen(void) | void ocb_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_OCB_MODE | ||||||
|    int err, kl, x, y1, z; |    int err, kl, x, y1, z; | ||||||
|    FILE *out; |    FILE *out; | ||||||
|    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], |    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], | ||||||
| @ -514,10 +522,12 @@ void ocb_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ocb3_gen(void) | void ocb3_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_OCB3_MODE | ||||||
|    int err, kl, x, y1, z; |    int err, kl, x, y1, z; | ||||||
|    FILE *out; |    FILE *out; | ||||||
|    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], |    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], | ||||||
| @ -577,10 +587,12 @@ void ocb3_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ccm_gen(void) | void ccm_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_CCM_MODE | ||||||
|    int err, kl, x, y1, z; |    int err, kl, x, y1, z; | ||||||
|    FILE *out; |    FILE *out; | ||||||
|    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], |    unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], | ||||||
| @ -640,10 +652,12 @@ void ccm_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void gcm_gen(void) | void gcm_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_GCM_MODE | ||||||
|    int err, kl, x, y1, z; |    int err, kl, x, y1, z; | ||||||
|    FILE *out; |    FILE *out; | ||||||
|    unsigned char key[MAXBLOCKSIZE], plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; |    unsigned char key[MAXBLOCKSIZE], plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; | ||||||
| @ -697,6 +711,7 @@ void gcm_gen(void) | |||||||
|       fprintf(out, "\n"); |       fprintf(out, "\n"); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void base64_gen(void) | void base64_gen(void) | ||||||
| @ -764,6 +779,7 @@ void ecc_gen(void) | |||||||
| 
 | 
 | ||||||
| void lrw_gen(void) | void lrw_gen(void) | ||||||
| { | { | ||||||
|  | #ifdef LTC_LRW_MODE | ||||||
|    FILE *out; |    FILE *out; | ||||||
|    unsigned char tweak[16], key[16], iv[16], buf[1024]; |    unsigned char tweak[16], key[16], iv[16], buf[1024]; | ||||||
|    int x, y, err; |    int x, y, err; | ||||||
| @ -825,6 +841,7 @@ void lrw_gen(void) | |||||||
|        lrw_done(&lrw); |        lrw_done(&lrw); | ||||||
|    } |    } | ||||||
|    fclose(out); |    fclose(out); | ||||||
|  | #endif | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int main(void) | int main(void) | ||||||
| @ -833,17 +850,33 @@ int main(void) | |||||||
|    printf("Generating hash   vectors..."); fflush(stdout); hash_gen();   printf("done\n"); |    printf("Generating hash   vectors..."); fflush(stdout); hash_gen();   printf("done\n"); | ||||||
|    printf("Generating cipher vectors..."); fflush(stdout); cipher_gen(); printf("done\n"); |    printf("Generating cipher vectors..."); fflush(stdout); cipher_gen(); printf("done\n"); | ||||||
|    printf("Generating HMAC   vectors..."); fflush(stdout); hmac_gen();   printf("done\n"); |    printf("Generating HMAC   vectors..."); fflush(stdout); hmac_gen();   printf("done\n"); | ||||||
|  | #ifdef LTC_OMAC | ||||||
|    printf("Generating OMAC   vectors..."); fflush(stdout); omac_gen();   printf("done\n"); |    printf("Generating OMAC   vectors..."); fflush(stdout); omac_gen();   printf("done\n"); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_PMAC | ||||||
|    printf("Generating PMAC   vectors..."); fflush(stdout); pmac_gen();   printf("done\n"); |    printf("Generating PMAC   vectors..."); fflush(stdout); pmac_gen();   printf("done\n"); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_EAX_MODE | ||||||
|    printf("Generating EAX    vectors..."); fflush(stdout); eax_gen();    printf("done\n"); |    printf("Generating EAX    vectors..."); fflush(stdout); eax_gen();    printf("done\n"); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_OCB_MODE | ||||||
|    printf("Generating OCB    vectors..."); fflush(stdout); ocb_gen();    printf("done\n"); |    printf("Generating OCB    vectors..."); fflush(stdout); ocb_gen();    printf("done\n"); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_OCB3_MODE | ||||||
|    printf("Generating OCB3   vectors..."); fflush(stdout); ocb3_gen();   printf("done\n"); |    printf("Generating OCB3   vectors..."); fflush(stdout); ocb3_gen();   printf("done\n"); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_CCM_MODE | ||||||
|    printf("Generating CCM    vectors..."); fflush(stdout); ccm_gen();    printf("done\n"); |    printf("Generating CCM    vectors..."); fflush(stdout); ccm_gen();    printf("done\n"); | ||||||
|  | #endif | ||||||
|  | #ifdef LTC_GCM_MODE | ||||||
|    printf("Generating GCM    vectors..."); fflush(stdout); gcm_gen();    printf("done\n"); |    printf("Generating GCM    vectors..."); fflush(stdout); gcm_gen();    printf("done\n"); | ||||||
|  | #endif | ||||||
|    printf("Generating BASE64 vectors..."); fflush(stdout); base64_gen(); printf("done\n"); |    printf("Generating BASE64 vectors..."); fflush(stdout); base64_gen(); printf("done\n"); | ||||||
|    printf("Generating MATH   vectors..."); fflush(stdout); math_gen();   printf("done\n"); |    printf("Generating MATH   vectors..."); fflush(stdout); math_gen();   printf("done\n"); | ||||||
|    printf("Generating ECC    vectors..."); fflush(stdout); ecc_gen();    printf("done\n"); |    printf("Generating ECC    vectors..."); fflush(stdout); ecc_gen();    printf("done\n"); | ||||||
|  | #ifdef LTC_LRW_MODE | ||||||
|    printf("Generating LRW    vectors..."); fflush(stdout); lrw_gen();    printf("done\n"); |    printf("Generating LRW    vectors..."); fflush(stdout); lrw_gen();    printf("done\n"); | ||||||
|  | #endif | ||||||
|    return 0; |    return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -10,7 +10,7 @@ | |||||||
|  */ |  */ | ||||||
| #include "tomcrypt.h" | #include "tomcrypt.h" | ||||||
| 
 | 
 | ||||||
| #if !defined LTC_NO_MATH && !defined LTC_NO_PRNGS | #if defined(LTC_MRSA) || (!defined(LTC_NO_MATH) && !defined(LTC_NO_PRNGS)) | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|   @file rand_prime.c |   @file rand_prime.c | ||||||
|  | |||||||
| @ -45,8 +45,8 @@ static const unsigned char map_base64[256] = { | |||||||
| 255, 255, 255, 255 }; | 255, 255, 255, 255 }; | ||||||
| #endif /* LTC_BASE64 */ | #endif /* LTC_BASE64 */ | ||||||
| 
 | 
 | ||||||
|  | static const unsigned char map_base64url[] = { | ||||||
| #if defined(LTC_BASE64_URL) | #if defined(LTC_BASE64_URL) | ||||||
| static const unsigned char map_base64url[256] = { |  | ||||||
| 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | ||||||
| 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | ||||||
| 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | ||||||
| @ -68,8 +68,9 @@ static const unsigned char map_base64url[256] = { | |||||||
| 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | ||||||
| 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | ||||||
| 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, | ||||||
| 255, 255, 255, 255 }; | 255, 255, 255, 255 | ||||||
| #endif /* LTC_BASE64_URL */ | #endif /* LTC_BASE64_URL */ | ||||||
|  | }; | ||||||
| 
 | 
 | ||||||
| enum { | enum { | ||||||
|    relaxed = 0, |    relaxed = 0, | ||||||
|  | |||||||
| @ -10,9 +10,15 @@ fi | |||||||
| # date | # date | ||||||
| echo "date="`date` | echo "date="`date` | ||||||
| 
 | 
 | ||||||
|  | # check sources | ||||||
|  | bash check_source.sh "CHECK_SOURCES" " " "$1" "$2" "$3" || exit 1 | ||||||
|  | 
 | ||||||
| # stock build | # stock build | ||||||
| bash run.sh "STOCK" " " "$1" "$2" "$3" || exit 1 | bash run.sh "STOCK" " " "$1" "$2" "$3" || exit 1 | ||||||
| 
 | 
 | ||||||
|  | # EASY build | ||||||
|  | bash run.sh "EASY" "-DLTC_EASY" "$1" "$2" "$3" || exit 1 | ||||||
|  | 
 | ||||||
| # SMALL code | # SMALL code | ||||||
| bash run.sh "SMALL" "-DLTC_SMALL_CODE" "$1" "$2" "$3" || exit 1 | bash run.sh "SMALL" "-DLTC_SMALL_CODE" "$1" "$2" "$3" || exit 1 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,10 +1,12 @@ | |||||||
| #include  <tomcrypt_test.h> | #include  <tomcrypt_test.h> | ||||||
| 
 | 
 | ||||||
| #ifdef LTC_BASE64 | #if defined(LTC_BASE64) || defined(LTC_BASE64_URL) | ||||||
| int base64_test(void) | int base64_test(void) | ||||||
| { | { | ||||||
|    unsigned char in[64], out[256], tmp[64]; |    unsigned char in[64], out[256], tmp[64]; | ||||||
|    unsigned long x, l1, l2, slen1; |    unsigned long x, l1, l2, slen1; | ||||||
|  | 
 | ||||||
|  | #if defined(LTC_BASE64) | ||||||
|    const char special_case[] = { |    const char special_case[] = { | ||||||
|          0xbe, 0xe8, 0x92, 0x3c, 0xa2, 0x25, 0xf0, 0xf8, |          0xbe, 0xe8, 0x92, 0x3c, 0xa2, 0x25, 0xf0, 0xf8, | ||||||
|          0x91, 0xe4, 0xef, 0xab, 0x0b, 0x8c, 0xfd, 0xff, |          0x91, 0xe4, 0xef, 0xab, 0x0b, 0x8c, 0xfd, 0xff, | ||||||
| @ -31,7 +33,9 @@ int base64_test(void) | |||||||
|        {"foobar", "Zm9vYmFy"}, |        {"foobar", "Zm9vYmFy"}, | ||||||
|        {special_case,"vuiSPKIl8PiR5O+rC4z9/xTQKZ0="} |        {special_case,"vuiSPKIl8PiR5O+rC4z9/xTQKZ0="} | ||||||
|    }; |    }; | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|  | #ifdef LTC_BASE64_URL | ||||||
|    const struct { |    const struct { | ||||||
|       const char* s; |       const char* s; | ||||||
|       int is_strict; |       int is_strict; | ||||||
| @ -48,20 +52,6 @@ int base64_test(void) | |||||||
|          {"vuiS*===PKIl8P*iR5O-rC4*z9_xTQKZ0=", 0}, |          {"vuiS*===PKIl8P*iR5O-rC4*z9_xTQKZ0=", 0}, | ||||||
|    }; |    }; | ||||||
| 
 | 
 | ||||||
|    for (x = 0; x < sizeof(cases)/sizeof(cases[0]); ++x) { |  | ||||||
|        memset(out, 0, sizeof(out)); |  | ||||||
|        memset(tmp, 0, sizeof(tmp)); |  | ||||||
|        slen1 = strlen(cases[x].s); |  | ||||||
|        l1 = sizeof(out); |  | ||||||
|        DO(base64_encode((unsigned char*)cases[x].s, slen1, out, &l1)); |  | ||||||
|        l2 = sizeof(tmp); |  | ||||||
|        DO(base64_strict_decode(out, l1, tmp, &l2)); |  | ||||||
|        if (compare_testvector(out, l1, cases[x].b64, strlen(cases[x].b64), "base64 encode", x) || |  | ||||||
|              compare_testvector(tmp, l2, cases[x].s, slen1, "base64 decode", x)) { |  | ||||||
|            return 1; |  | ||||||
|        } |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    for (x = 0; x < sizeof(url_cases)/sizeof(url_cases[0]); ++x) { |    for (x = 0; x < sizeof(url_cases)/sizeof(url_cases[0]); ++x) { | ||||||
|        slen1 = strlen(url_cases[x].s); |        slen1 = strlen(url_cases[x].s); | ||||||
|        l1 = sizeof(out); |        l1 = sizeof(out); | ||||||
| @ -85,6 +75,22 @@ int base64_test(void) | |||||||
|    } |    } | ||||||
| 
 | 
 | ||||||
|    DO(base64url_strict_decode((unsigned char*)url_cases[4].s, slen1, out, &l1) == CRYPT_INVALID_PACKET ? CRYPT_OK : CRYPT_INVALID_PACKET); |    DO(base64url_strict_decode((unsigned char*)url_cases[4].s, slen1, out, &l1) == CRYPT_INVALID_PACKET ? CRYPT_OK : CRYPT_INVALID_PACKET); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | #if defined(LTC_BASE64) | ||||||
|  |    for (x = 0; x < sizeof(cases)/sizeof(cases[0]); ++x) { | ||||||
|  |        memset(out, 0, sizeof(out)); | ||||||
|  |        memset(tmp, 0, sizeof(tmp)); | ||||||
|  |        slen1 = strlen(cases[x].s); | ||||||
|  |        l1 = sizeof(out); | ||||||
|  |        DO(base64_encode((unsigned char*)cases[x].s, slen1, out, &l1)); | ||||||
|  |        l2 = sizeof(tmp); | ||||||
|  |        DO(base64_strict_decode(out, l1, tmp, &l2)); | ||||||
|  |        if (compare_testvector(out, l1, cases[x].b64, strlen(cases[x].b64), "base64 encode", x) || | ||||||
|  |              compare_testvector(tmp, l2, cases[x].s, slen1, "base64 decode", x)) { | ||||||
|  |            return 1; | ||||||
|  |        } | ||||||
|  |    } | ||||||
| 
 | 
 | ||||||
|    for  (x = 0; x < 64; x++) { |    for  (x = 0; x < 64; x++) { | ||||||
|        yarrow_read(in, x, &yarrow_prng); |        yarrow_read(in, x, &yarrow_prng); | ||||||
| @ -109,6 +115,8 @@ int base64_test(void) | |||||||
|    } |    } | ||||||
|    l2 = sizeof(tmp); |    l2 = sizeof(tmp); | ||||||
|    DO(base64_strict_decode(out, l1, tmp, &l2) == CRYPT_INVALID_PACKET ? CRYPT_OK : CRYPT_INVALID_PACKET); |    DO(base64_strict_decode(out, l1, tmp, &l2) == CRYPT_INVALID_PACKET ? CRYPT_OK : CRYPT_INVALID_PACKET); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|    return 0; |    return 0; | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user