Changeset 554

Show
Ignore:
Timestamp:
03/05/08 16:13:52
Author:
rachel
Message:

Rationalise decrypt tests.
All supported symmetric algorithms tested in all permutations of
compress algorithms and levels, with and without armour,
with and without a password on the key.
Also, some redundant code removed from test_packet_types.
Better error information added to tests.c

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openpgpsdk/trunk/tests/test_packet_types.c

    r550 r554  
    503503    } 
    504504 
    505 #ifdef XXX 
    506 static void test_ops_encrypted_pk_sk() 
    507     { 
    508     ops_pk_session_key_t *encrypted_pk_session_key; 
    509     ops_create_info_t *cinfo; 
    510     ops_parse_info_t *pinfo; 
    511     ops_memory_t *mem; 
    512     int rtn=0; 
    513  
    514     // setup for write 
    515     ops_setup_memory_write(&cinfo,&mem,MAXBUF); 
    516  
    517     // write 
    518     const ops_key_data_t *pub_key=ops_keyring_find_key_by_userid(&pub_keyring, alpha_user_id); 
    519     assert(pub_key); 
    520  
    521     encrypted_pk_session_key=ops_create_pk_session_key(pub_key); 
    522     ops_write_pk_session_key(cinfo,encrypted_pk_session_key); 
    523  
    524     // setup for read 
    525     ops_setup_memory_read(&pinfo,mem,callback_encrypted_pk_session_key); 
    526  
    527     // read 
    528     rtn=ops_parse(pinfo); 
    529     CU_ASSERT(rtn==1); 
    530  
    531     // test 
    532     CU_ASSERT(memcmp(encrypted_pk_session_key, encrypted_pk_sk, sz_encrypted_pk_sk)==0); 
    533  
    534     // cleanup 
    535     local_cleanup(); 
    536     ops_teardown_memory_read(pinfo,mem); 
    537     } 
    538 #endif 
    539  
    540505CU_pSuite suite_packet_types() 
    541506{ 
  • openpgpsdk/trunk/tests/test_rsa_decrypt.c

    r553 r554  
    1111#include "openpgpsdk/std_print.h" 
    1212 
    13 static char *filename_rsa_noarmour_nopassphrase="gpg_rsa_enc_noarmour_nopassphrase.txt"; 
    14  
    15 static char *filename_rsa_armour_nopassphrase="gpg_rsa_enc_armour_nopassphrase.txt"; 
    16 static char *filename_rsa_noarmour_passphrase="gpg_rsa_enc_noarmour_passphrase.txt"; 
    17 static char *filename_rsa_armour_passphrase="gpg_rsa_enc_armour_passphrase.txt"; 
    18 static char *filename_rsa_noarmour_compress_base="gpg_rsa_enc_noarmour_compress"; 
    19 static char *filename_rsa_armour_compress_base="gpg_rsa_enc_armour_compress"; 
    20  
    2113static char *nopassphrase=""; 
    2214static char *current_passphrase=NULL; 
    2315 
    24 static char *algos[]={ "zip", "zlib", "bzip2" }; 
    25 static int n_algos=3; 
     16static char *compress_algos[]={ "zip", "zlib", "bzip2" }; 
     17static int n_compress_algos=3; 
    2618 
    2719static ops_parse_cb_return_t 
     
    10294int init_suite_rsa_decrypt(void) 
    10395    { 
    104     char cmd[MAXBUF+1]; 
    105  
    106     // Create RSA test files 
    107  
    108     create_testfile(filename_rsa_noarmour_nopassphrase); 
    109     create_testfile(filename_rsa_armour_nopassphrase); 
    110     create_testfile(filename_rsa_noarmour_passphrase); 
    111     create_testfile(filename_rsa_armour_passphrase); 
    112  
    113     /* 
    114      * Now encrypt the test files with GPG 
    115      * Note:: To make it do SE_IP packets, do NOT use --openpgp and DO use --force-mdc 
    116      */ 
    117  
    118     // default symmetric algorithm 
    119     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --force-mdc --compress-level 0 --quiet --encrypt --recipient Alpha %s/%s", dir, dir, filename_rsa_noarmour_nopassphrase); 
    120     if (system(cmd)) 
    121         { 
    122         return 1; 
    123         } 
    124  
    125 #ifndef OPENSSL_NO_IDEA 
    126     // \todo write test which uses PGP2 instead of using gpg to test IDEA 
    127     /* 
    128     // IDEA 
    129     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"IDEA\" --output=%s/IDEA_%s.gpg  --force-mdc --compress-level 0 --quiet --encrypt --recipient Alpha %s/%s", dir, dir, filename_rsa_noarmour_nopassphrase, dir, filename_rsa_noarmour_nopassphrase); 
    130     if (system(cmd)) 
    131         { 
    132         return 1; 
    133         } 
    134     */ 
    135 #endif 
    136  
    137     // TripleDES  
    138     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"3DES\" --output=%s/3DES_%s.gpg  --force-mdc --compress-level 0 --encrypt --recipient Alpha %s/%s", dir, dir, filename_rsa_noarmour_nopassphrase, dir, filename_rsa_noarmour_nopassphrase); 
    139     if (system(cmd)) 
    140         { 
    141         return 1; 
    142         } 
    143  
    144     // Cast5 
    145     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"CAST5\" --output=%s/CAST5_%s.gpg  --force-mdc --compress-level 0 --encrypt --recipient Alpha %s/%s", dir, dir, filename_rsa_noarmour_nopassphrase, dir, filename_rsa_noarmour_nopassphrase); 
    146     if (system(cmd)) 
    147         { 
    148         return 1; 
    149         } 
    150  
    151     // AES128 
    152     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"AES\" --output=%s/AES128_%s.gpg  --force-mdc --compress-level 0 --encrypt --recipient Alpha %s/%s", dir, dir, filename_rsa_noarmour_nopassphrase, dir, filename_rsa_noarmour_nopassphrase); 
    153     if (system(cmd)) 
    154         { 
    155         return 1; 
    156         } 
    157  
    158     // AES256 
    159     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"AES256\" --output=%s/AES256_%s.gpg  --force-mdc --compress-level 0 --encrypt --recipient Alpha %s/%s", dir, dir, filename_rsa_noarmour_nopassphrase, dir, filename_rsa_noarmour_nopassphrase); 
    160     if (system(cmd)) 
    161         { 
    162         return 1; 
    163         } 
    164  
    165     // Armour, no passphrase 
    166     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --force-mdc --compress-level 0 --personal-cipher-preferences='CAST5' --encrypt --armor --recipient Alpha %s/%s", dir, dir, filename_rsa_armour_nopassphrase); 
    167     if (system(cmd)) 
    168         { 
    169         return 1; 
    170         } 
    171      
    172     // No armour, passphrase 
    173     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --force-mdc --compress-level 0 --personal-cipher-preferences='CAST5' --encrypt --recipient Bravo %s/%s", dir, dir, filename_rsa_noarmour_passphrase); 
    174     if (system(cmd)) 
    175         { 
    176         return 1; 
    177         } 
    178      
    179     // Armour, passphrase 
    180     snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --force-mdc --compress-level 0 --personal-cipher-preferences='CAST5' --encrypt --armor --recipient Bravo %s/%s", dir, dir, filename_rsa_armour_passphrase); 
    181     if (system(cmd)) 
    182         { 
    183         return 1; 
    184         } 
    185  
    186     int level=0; 
    187     int alg=0; 
    188     for (level=0; level<=MAX_COMPRESS_LEVEL; level++) 
    189         { 
    190         for (alg=0; alg < n_algos; alg++) 
    191             { 
    192             char filename[MAXBUF+1]; 
    193  
    194             // unarmoured 
    195             snprintf(filename, sizeof filename, "%s_%s_%d.txt",  
    196                      filename_rsa_noarmour_compress_base, algos[alg], level); 
    197             create_testfile(filename); 
    198  
    199             snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"CAST5\" --output=%s/%s.gpg  --force-mdc --compress-algo \"%s\" --compress-level %d --encrypt --recipient Alpha %s/%s", dir, dir, filename, algos[alg], level, dir, filename); 
    200             if (system(cmd)) 
    201                 { 
    202                 return 1; 
    203                 } 
    204  
    205             // armoured 
    206             snprintf(filename, sizeof filename, "%s_%s_%d.txt",  
    207                      filename_rsa_armour_compress_base, algos[alg], level); 
    208             create_testfile(filename); 
    209  
    210             snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"CAST5\" --output=%s/%s.asc  --force-mdc --compress-algo \"%s\" --compress-level %d --encrypt --armor --recipient Alpha %s/%s", dir, dir, filename, algos[alg], level, dir, filename); 
    211          
    212             if (system(cmd)) 
    213                 { 
    214                 return 1; 
    215                 } 
    216             } 
    217         } 
    218  
    21996    // Return success 
    22097    return 0; 
     
    229106    } 
    230107 
    231 static void test_rsa_decrypt(const int has_armour, const int has_passphrase, const char *filename, const char* protocol
     108static void test_rsa_decrypt(const int has_armour, const int has_passphrase, const char *filename
    232109    { 
    233110    char encfile[MAXBUF+1]; 
     
    239116     
    240117    // open encrypted file 
    241     snprintf(encfile,sizeof encfile,"%s/%s%s%s.%s",dir, 
    242              protocol==NULL ? "" : protocol, 
    243              protocol==NULL ? "" : "_", 
     118    snprintf(encfile,sizeof encfile,"%s/%s.%s",dir, 
    244119             filename,suffix); 
    245120#ifdef WIN32 
     
    286161    } 
    287162 
    288 static void test_rsa_decrypt_noarmour_nopassphrase(void) 
    289     { 
     163static void create_filename(char* buf, int maxbuf, int armour, int passphrase, char * sym_alg, char * compress_alg, int compress_level) 
     164    { 
     165    snprintf(buf,maxbuf,"gpg_enc_rsa_%s_%s_%s_%s_%d.txt", 
     166        armour ? "arm" : "noarm", 
     167        passphrase ? "pp" : "nopp", 
     168        sym_alg, 
     169        compress_alg, compress_level); 
     170    } 
     171 
     172static void test_rsa_decrypt_generic(char* sym_alg) 
     173    { 
     174    char filename[MAXBUF+1]; 
     175    char cmd[MAXBUF+1]; 
    290176    int armour=0; 
    291177    int passphrase=0; 
    292     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_nopassphrase,NULL); 
    293     } 
    294  
    295 static void test_rsa_decrypt_noarmour_nopassphrase_3des(void) 
    296     { 
    297     CU_FAIL("3DES decryption not yet unimplemented"); 
    298  
    299     /* 
    300     int armour=0; 
    301     int passphrase=0; 
    302     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_nopassphrase,"3DES"); 
    303     */ 
    304     } 
    305  
    306 static void test_rsa_decrypt_noarmour_nopassphrase_cast5(void) 
    307     { 
    308     int armour=0; 
    309     int passphrase=0; 
    310     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_nopassphrase,"CAST5"); 
    311     } 
    312  
    313 #ifdef TODO 
    314 static void test_rsa_decrypt_armour_nopassphrase_cast5(void) 
    315     { 
    316     int armour=1; 
    317     int passphrase=0; 
    318     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_nopassphrase,"CAST5"); 
    319     } 
    320 #endif 
    321  
    322 static void test_rsa_decrypt_noarmour_nopassphrase_aes128(void) 
    323     { 
    324     int armour=0; 
    325     int passphrase=0; 
    326     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_nopassphrase,"AES128"); 
    327     } 
    328  
    329 static void test_rsa_decrypt_noarmour_nopassphrase_aes256(void) 
    330     { 
    331     int armour=0; 
    332     int passphrase=0; 
    333     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_nopassphrase,"AES256"); 
    334     } 
    335  
    336 // 
    337  
    338 static void test_rsa_decrypt_armour_nopassphrase(void) 
    339     { 
    340     int armour=1; 
    341     int passphrase=0; 
    342     test_rsa_decrypt(armour,passphrase,filename_rsa_armour_nopassphrase,NULL); 
    343     } 
    344  
    345 static void test_rsa_decrypt_noarmour_passphrase(void) 
    346     { 
    347     int armour=0; 
    348     int passphrase=1; 
    349     test_rsa_decrypt(armour,passphrase,filename_rsa_noarmour_passphrase,NULL); 
    350     } 
    351  
    352 static void test_rsa_decrypt_armour_passphrase(void) 
    353     { 
    354     int armour=1; 
    355     int passphrase=1; 
    356     test_rsa_decrypt(armour,passphrase,filename_rsa_armour_passphrase,NULL); 
    357     } 
    358  
    359 static void test_rsa_decrypt_noarmour_compressed(void) 
    360     { 
    361     int armour=0; 
    362     int passphrase=0; 
    363     char filename[MAXBUF+1]; 
    364     int level=0; 
    365     int alg=0; 
    366     for (level=1; level<=MAX_COMPRESS_LEVEL; level++) 
     178    int compress_alg=0; 
     179    int compress_lvl=0; 
     180 
     181    for (compress_alg=0; compress_alg<n_compress_algos; compress_alg++) 
    367182        { 
    368         for (alg=0; alg<n_algos; alg++) 
     183        for (compress_lvl=0; compress_lvl<MAX_COMPRESS_LEVEL; compress_lvl++) 
    369184            { 
    370             // unarmoured 
    371             snprintf(filename, sizeof filename, "%s_%s_%d.txt",  
    372                      filename_rsa_noarmour_compress_base, algos[alg],level); 
    373             test_rsa_decrypt(armour,passphrase,filename,NULL); 
     185            for (armour=0; armour<=1; armour++) 
     186                { 
     187                char *armour_cmd= armour ? "--armor " : ""; 
     188                char *suffix= armour ? "asc" : "gpg"; 
     189                 
     190                for (passphrase=0; passphrase<=1; passphrase++) 
     191                    { 
     192                    char *rcpt= passphrase ? "Bravo" : "Alpha"; 
     193 
     194                    // Create filename matching these params 
     195                    create_filename(&filename[0],sizeof filename, 
     196                                    armour, passphrase, 
     197                                    sym_alg,  
     198                                    compress_algos[compress_alg], compress_lvl); 
     199                     
     200                    // Create file with unique text matching this test 
     201                    create_testfile(filename); 
     202                     
     203                    // Encrypt file using GPG 
     204                    snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"%s\" --compress-algo \"%s\" --compress-level %d --output=%s/%s.%s  --force-mdc --encrypt --recipient %s %s %s/%s",  
     205                             dir, //homedir 
     206                             sym_alg, 
     207                             compress_algos[compress_alg], 
     208                             compress_lvl, 
     209                             dir, filename, suffix, // for output file 
     210                             rcpt, 
     211                             armour_cmd, 
     212                             dir, filename); 
     213                    if (system(cmd)) 
     214                        { 
     215                        fprintf(stderr,"Err: cmd is %s\n", cmd); 
     216                        //                        return 1; 
     217                        } 
     218                     
     219                    // Decrypt using OPS 
     220                    test_rsa_decrypt(armour,passphrase,filename); 
     221                    } 
     222                } 
    374223            } 
    375224        } 
    376225    } 
    377226 
    378 static void test_rsa_decrypt_armour_compressed(void) 
    379     { 
    380     int armour=1; 
    381     int passphrase=0; 
    382     char filename[MAXBUF+1]; 
    383     int level=0; 
    384     int alg=0; 
    385     for (level=1; level<=MAX_COMPRESS_LEVEL; level++) 
    386         { 
    387         for (alg=0; alg<n_algos; alg++) 
    388             { 
    389             // unarmoured 
    390             snprintf(filename, sizeof filename, "%s_%s_%d.txt",  
    391                      filename_rsa_armour_compress_base, algos[alg], level); 
    392             test_rsa_decrypt(armour,passphrase,filename,NULL); 
    393             } 
    394         } 
    395     } 
     227static void test_rsa_decrypt_cast5(void) 
     228    { 
     229    return test_rsa_decrypt_generic("cast5"); 
     230    } 
     231 
     232static void test_rsa_decrypt_aes128(void) 
     233    { 
     234    return test_rsa_decrypt_generic("aes"); 
     235    } 
     236 
     237static void test_rsa_decrypt_aes256(void) 
     238    { 
     239    return test_rsa_decrypt_generic("aes256"); 
     240    } 
     241 
     242#ifdef FUTURE 
     243static void test_rsa_decrypt_3des(void) 
     244    { 
     245    return test_rsa_decrypt_generic("3des"); 
     246    } 
     247#endif 
     248 
     249// 
    396250 
    397251static void test_todo(void) 
    398252    { 
    399     CU_FAIL("Test TODO: All armoured/passphrase combinations with AES128/256)"); 
    400     CU_FAIL("Test TODO: IDEA"); 
    401253    CU_FAIL("Test TODO: Decryption with multiple keys in same keyring"); 
    402254    CU_FAIL("Test TODO: Decryption with multiple keys where some are not in my keyring"); 
     
    408260    // add tests to suite 
    409261     
    410     if (NULL == CU_add_test(suite, "Unarmoured, no passphrase (Default)", test_rsa_decrypt_noarmour_nopassphrase)) 
    411             return 0; 
    412      
    413     if (NULL == CU_add_test(suite, "Unarmoured, no passphrase (CAST5)", test_rsa_decrypt_noarmour_nopassphrase_cast5)) 
    414             return 0; 
    415      
    416     if (NULL == CU_add_test(suite, "Unarmoured, no passphrase (AES128)", test_rsa_decrypt_noarmour_nopassphrase_aes128)) 
    417             return 0; 
    418      
    419     if (NULL == CU_add_test(suite, "Unarmoured, no passphrase (AES256)", test_rsa_decrypt_noarmour_nopassphrase_aes256)) 
    420             return 0; 
    421      
    422     if (NULL == CU_add_test(suite, "Unarmoured, no passphrase (3DES)", test_rsa_decrypt_noarmour_nopassphrase_3des)) 
    423             return 0; 
    424      
    425     if (NULL == CU_add_test(suite, "Unarmoured, passphrase", test_rsa_decrypt_noarmour_passphrase)) 
    426             return 0; 
    427      
    428     if (NULL == CU_add_test(suite, "Armoured, no passphrase", test_rsa_decrypt_armour_nopassphrase)) 
    429             return 0; 
    430      
    431     if (NULL == CU_add_test(suite, "Armoured, passphrase", test_rsa_decrypt_armour_passphrase)) 
    432             return 0; 
    433      
    434     if (NULL == CU_add_test(suite, "Unarmoured, compressed", test_rsa_decrypt_noarmour_compressed)) 
    435             return 0; 
    436      
    437     if (NULL == CU_add_test(suite, "Armoured, compressed", test_rsa_decrypt_armour_compressed)) 
    438             return 0; 
    439      
     262    if (NULL == CU_add_test(suite, "CAST5", test_rsa_decrypt_cast5)) 
     263            return 0; 
     264 
     265    if (NULL == CU_add_test(suite, "AES128", test_rsa_decrypt_aes128)) 
     266            return 0; 
     267 
     268    if (NULL == CU_add_test(suite, "AES256", test_rsa_decrypt_aes256)) 
     269            return 0; 
     270 
     271#ifdef FUTURE 
     272    if (NULL == CU_add_test(suite, "3DES", test_rsa_decrypt_3des)) 
     273            return 0; 
     274#endif 
     275 
    440276    if (NULL == CU_add_test(suite, "Tests to be implemented", test_todo)) 
    441277            return 0; 
  • openpgpsdk/trunk/tests/tests.c

    r547 r554  
    2020 
    2121    if (CUE_SUCCESS != CU_initialize_registry()) 
     22        { 
     23        fprintf(stderr,"ERROR: initializing registry\n"); 
    2224        return CU_get_error(); 
     25        } 
    2326 
    2427    if (NULL == suite_crypto()) 
    2528        { 
     29        fprintf(stderr,"ERROR: initialising suite_crypto\n"); 
    2630        CU_cleanup_registry(); 
    2731        return CU_get_error(); 
     
    3034    if (NULL == suite_packet_types()) 
    3135        { 
     36        fprintf(stderr,"ERROR: initialising suite_packet_types\n"); 
    3237        CU_cleanup_registry(); 
    3338        return CU_get_error(); 
     
    3641    if (NULL == suite_rsa_encrypt())  
    3742        { 
     43        fprintf(stderr,"ERROR: initialising suite_encrypt\n"); 
    3844        CU_cleanup_registry(); 
    3945        return CU_get_error(); 
     
    4248    if (NULL == suite_rsa_decrypt())  
    4349        { 
     50        fprintf(stderr,"ERROR: initialising suite_decrypt\n"); 
    4451        CU_cleanup_registry(); 
    4552        return CU_get_error(); 
     
    4855    if (NULL == suite_rsa_signature())  
    4956        { 
     57        fprintf(stderr,"ERROR: initialising suite_signature\n"); 
    5058        CU_cleanup_registry(); 
    5159        return CU_get_error(); 
     
    5462    if (NULL == suite_rsa_verify())  
    5563        { 
     64        fprintf(stderr,"ERROR: initialising suite_verify\n"); 
    5665        CU_cleanup_registry(); 
    5766        return CU_get_error(); 
     
    6170    if (NULL == suite_rsa_create_key()) 
    6271        { 
     72        fprintf(stderr,"ERROR: initialising suite_rsa_create_key\n"); 
    6373        CU_cleanup_registry(); 
    6474        return CU_get_error(); 
     
    6777    if (NULL == suite_rsa_sign_key()) 
    6878        { 
     79        fprintf(stderr,"ERROR: initialising suite_rsa_sign_key\n"); 
    6980        CU_cleanup_registry(); 
    7081        return CU_get_error(); 
     
    7384    if (NULL == suite_rsa_verify_key()) 
    7485        { 
     86        fprintf(stderr,"ERROR: initialising suite_rsa_verify_key\n"); 
    7587        CU_cleanup_registry(); 
    7688        return CU_get_error();