re-factor rsa_test() to new rsa_set_X() API
This commit is contained in:
		
							parent
							
								
									627f6696cb
								
							
						
					
					
						commit
						ae7d4d2947
					
				| @ -112,25 +112,37 @@ static const unsigned char pkcs8_private_rsa[] = { | |||||||
|    0xf1, 0x4a, 0x21, 0x56, 0x67, 0xfd, 0xcc, 0x20, 0xa3, 0x8f, 0x78, 0x18, 0x5a, 0x79, 0x3d, 0x2e, |    0xf1, 0x4a, 0x21, 0x56, 0x67, 0xfd, 0xcc, 0x20, 0xa3, 0x8f, 0x78, 0x18, 0x5a, 0x79, 0x3d, 0x2e, | ||||||
|    0x8e, 0x7e, 0x86, 0x0a, 0xe6, 0xa8, 0x33, 0xc1, 0x04, 0x17, 0x4a, 0x9f }; |    0x8e, 0x7e, 0x86, 0x0a, 0xe6, 0xa8, 0x33, 0xc1, 0x04, 0x17, 0x4a, 0x9f }; | ||||||
| 
 | 
 | ||||||
| /* private keay - hexadecimal */ | /* private key - hexadecimal */ | ||||||
| static char *hex_d = "C862B9EADE44531D5697D9979E1ACF301E0A8845862930A34D9F616573E0D6878FB6F306A382DC7CACFE9B289AAEFDFBFE2F0ED89704E3BB1FD1EC0DBAA3497F47AC8A44047E86B739423FAD1EB70EA551F440631EFDBDEA9F419FA8901D6F0A5A9513110D80AF5F64988A2C786865B02B8BA25387CAF16404ABF27BDB83C881"; | enum { | ||||||
| static char *hex_dP = "6DEBC32D2EF05EA488310529008AD195299B83CF75DB31E37A27DE3A74300C764CD4502A402D39D99963A95D80AE53CA943F05231EF80504E1B835F217B3A089"; |    pk_d , | ||||||
| static char *hex_dQ = "AB9088FA600829509A438BA050CCD85AFE976463717422A320025ACFEBC6169554D1CBAB8D1AC600FA08929C71D552523596714B8B920CD0E9BFAD630BA5E9B1"; |    pk_dP, | ||||||
| static char *hex_e  = "010001"; |    pk_dQ, | ||||||
| static char *hex_N  = "CF9ADE648ADAC83320A9D783311954B29A85A7A1B77533B6A9AC8424B3DEDB7D852D9665E53F7295249F2868CA4FDB441C3E60128ADD26A5EBFF0B5ED48838492A6E5BBF123747BD056BBCDBF3EEE4118E41687C6113D742C880BE368FDC088B4FACA4E2760CC9636C495893EDCCAADC253B0A603F8B543AC34D31E794A444FD"; |    pk_e , | ||||||
| static char *hex_p  = "F7BE5E23C3323FBF8B8E3AEEFCFCCBE5F7F10BBC4282AED57A3ECAF7D5693F6425A21FB77575059242EBB8F1F30A05E394D1557835A036A09B7C92846CDDDC4D"; |    pk_N , | ||||||
| static char *hex_q  = "D6860E85420B0408842160F00E0D88FD1E3610654F1E53B40872805C3F596617E698F2E96C7A064CAC763DED8CA1CEAD1BBDB47D28BCE30E388D99D805B5A371"; |    pk_p , | ||||||
| static char *hex_qP = "DCCC27C8E4DC6248D59BAFF5AB60F621FD53E2B75D09C91AA104A9FC612C5D04583A5A39F14A215667FDCC20A38F78185A793D2E8E7E860AE6A833C104174A9F"; |    pk_q , | ||||||
|  |    pk_qP, | ||||||
|  | }; | ||||||
|  | static const char *hex_key[] = { | ||||||
|  |      "C862B9EADE44531D5697D9979E1ACF301E0A8845862930A34D9F616573E0D6878FB6F306A382DC7CACFE9B289AAEFDFBFE2F0ED89704E3BB1FD1EC0DBAA3497F47AC8A44047E86B739423FAD1EB70EA551F440631EFDBDEA9F419FA8901D6F0A5A9513110D80AF5F64988A2C786865B02B8BA25387CAF16404ABF27BDB83C881", | ||||||
|  |      "6DEBC32D2EF05EA488310529008AD195299B83CF75DB31E37A27DE3A74300C764CD4502A402D39D99963A95D80AE53CA943F05231EF80504E1B835F217B3A089", | ||||||
|  |      "AB9088FA600829509A438BA050CCD85AFE976463717422A320025ACFEBC6169554D1CBAB8D1AC600FA08929C71D552523596714B8B920CD0E9BFAD630BA5E9B1", | ||||||
|  |      "010001", | ||||||
|  |      "CF9ADE648ADAC83320A9D783311954B29A85A7A1B77533B6A9AC8424B3DEDB7D852D9665E53F7295249F2868CA4FDB441C3E60128ADD26A5EBFF0B5ED48838492A6E5BBF123747BD056BBCDBF3EEE4118E41687C6113D742C880BE368FDC088B4FACA4E2760CC9636C495893EDCCAADC253B0A603F8B543AC34D31E794A444FD", | ||||||
|  |      "F7BE5E23C3323FBF8B8E3AEEFCFCCBE5F7F10BBC4282AED57A3ECAF7D5693F6425A21FB77575059242EBB8F1F30A05E394D1557835A036A09B7C92846CDDDC4D", | ||||||
|  |      "D6860E85420B0408842160F00E0D88FD1E3610654F1E53B40872805C3F596617E698F2E96C7A064CAC763DED8CA1CEAD1BBDB47D28BCE30E388D99D805B5A371", | ||||||
|  |      "DCCC27C8E4DC6248D59BAFF5AB60F621FD53E2B75D09C91AA104A9FC612C5D04583A5A39F14A215667FDCC20A38F78185A793D2E8E7E860AE6A833C104174A9F" }; | ||||||
| 
 | 
 | ||||||
| /* private keay - decimal */ | /* private key - decimal */ | ||||||
| static char *dec_d  = "140715588362011445903700789698620706303856890313846506579552319155852306603445626455616876267358538338151320072087950597426668358843246116141391746806252390039505422193715556188330352166601762210959618868365359433828069868584168017348772565936127608284367789455480066115411950431014508224203325089671253575809"; | static const char *dec_key[] = { | ||||||
| static char *dec_dP = "5757027123463051531073361217943880203685183318942602176865989327630429772398553254013771630974725523559703665512845231173916766336576994271809362147385481"; |      "140715588362011445903700789698620706303856890313846506579552319155852306603445626455616876267358538338151320072087950597426668358843246116141391746806252390039505422193715556188330352166601762210959618868365359433828069868584168017348772565936127608284367789455480066115411950431014508224203325089671253575809", | ||||||
| static char *dec_dQ = "8985566687080619280443708121716583572314829758991088624433980393739288226842152842353421251125477168722728289150354056572727675764519591179919295246625201"; |      "5757027123463051531073361217943880203685183318942602176865989327630429772398553254013771630974725523559703665512845231173916766336576994271809362147385481", | ||||||
| static char *dec_e  = "65537"; |      "8985566687080619280443708121716583572314829758991088624433980393739288226842152842353421251125477168722728289150354056572727675764519591179919295246625201", | ||||||
| static char *dec_N  = "145785157837445763858971808379627955816432214431353481009581718367907499729204464589803079767521523397316119124291441688063985017444589154155338311524887989148444674974298105211582428885045820631376256167593861203305479546421254276833052913791538765775697977909548553897629170045372476652935456198173974086909"; |      "65537", | ||||||
| static char *dec_p  = "12975386429272921390465467849934248466500992474501042673679976015025637113752114471707151502138750486193421113099777767227628554763059580218432153760685133"; |      "145785157837445763858971808379627955816432214431353481009581718367907499729204464589803079767521523397316119124291441688063985017444589154155338311524887989148444674974298105211582428885045820631376256167593861203305479546421254276833052913791538765775697977909548553897629170045372476652935456198173974086909", | ||||||
| static char *dec_q  = "11235515692122231999359687466333538198133993435121038200055897831921312127192760781281669977582095991578071163376390471936482431583372835883432943212143473"; |      "12975386429272921390465467849934248466500992474501042673679976015025637113752114471707151502138750486193421113099777767227628554763059580218432153760685133", | ||||||
| static char *dec_qP = "11564102464723136702427739477324729528451027211272900753079601723449664482225846595388433622640284454614991112736446376964904474099700895632145077333609119"; |      "11235515692122231999359687466333538198133993435121038200055897831921312127192760781281669977582095991578071163376390471936482431583372835883432943212143473", | ||||||
|  |      "11564102464723136702427739477324729528451027211272900753079601723449664482225846595388433622640284454614991112736446376964904474099700895632145077333609119" }; | ||||||
| 
 | 
 | ||||||
| /*** openssl public RSA key in DER format */ | /*** openssl public RSA key in DER format */ | ||||||
| static const unsigned char openssl_public_rsa[] = { | static const unsigned char openssl_public_rsa[] = { | ||||||
| @ -180,9 +192,9 @@ extern const unsigned long _der_tests_cacert_root_cert_size; | |||||||
| static int rsa_compat_test(void) | static int rsa_compat_test(void) | ||||||
| { | { | ||||||
|    rsa_key key, pubkey; |    rsa_key key, pubkey; | ||||||
|    int stat; |    int stat, i; | ||||||
|    unsigned char buf[1024]; |    unsigned char buf[1024], key_parts[8][128]; | ||||||
|    unsigned long len; |    unsigned long len, key_lens[8]; | ||||||
| 
 | 
 | ||||||
|    /* try reading the key */ |    /* try reading the key */ | ||||||
|    DO(rsa_import(openssl_private_rsa, sizeof(openssl_private_rsa), &key)); |    DO(rsa_import(openssl_private_rsa, sizeof(openssl_private_rsa), &key)); | ||||||
| @ -244,8 +256,15 @@ static int rsa_compat_test(void) | |||||||
|    } |    } | ||||||
|    rsa_free(&key); |    rsa_free(&key); | ||||||
| 
 | 
 | ||||||
|    /* try import private key from raw hexadecimal numbers */ |    /* convert raw hexadecimal numbers to binary */ | ||||||
|    DO(rsa_import_radix(16, hex_N, hex_e, hex_d, hex_p, hex_q, hex_dP, hex_dQ, hex_qP, &key)); |    for (i = 0; i < 8; ++i) { | ||||||
|  |       key_lens[i] = sizeof(key_parts[i]); | ||||||
|  |       DO(radix_to_bin(hex_key[i], 16, key_parts[i], &key_lens[i])); | ||||||
|  |    } | ||||||
|  |    /* try import private key from converted raw hexadecimal numbers */ | ||||||
|  |    DO(rsa_set_key(key_parts[pk_N], key_lens[pk_N], key_parts[pk_e], key_lens[pk_e], key_parts[pk_d], key_lens[pk_d], &key)); | ||||||
|  |    DO(rsa_set_factors(key_parts[pk_p], key_lens[pk_p], key_parts[pk_q], key_lens[pk_q], &key)); | ||||||
|  |    DO(rsa_set_crt_params(key_parts[pk_dP], key_lens[pk_dP], key_parts[pk_dQ], key_lens[pk_dQ], key_parts[pk_qP], key_lens[pk_qP], &key)); | ||||||
|    len = sizeof(buf); |    len = sizeof(buf); | ||||||
|    DO(rsa_export(buf, &len, PK_PRIVATE, &key)); |    DO(rsa_export(buf, &len, PK_PRIVATE, &key)); | ||||||
|    if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from hex)", 0)) { |    if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from hex)", 0)) { | ||||||
| @ -253,17 +272,8 @@ static int rsa_compat_test(void) | |||||||
|    } |    } | ||||||
|    rsa_free(&key); |    rsa_free(&key); | ||||||
| 
 | 
 | ||||||
|    /* try import private key from raw decimal numbers */ |    /* try import public key from converted raw hexadecimal numbers */ | ||||||
|    DO(rsa_import_radix(10, dec_N, dec_e, dec_d, dec_p, dec_q, dec_dP, dec_dQ, dec_qP, &key)); |    DO(rsa_set_key(key_parts[pk_N], key_lens[pk_N], key_parts[pk_e], key_lens[pk_e], NULL, 0, &key)); | ||||||
|    len = sizeof(buf); |  | ||||||
|    DO(rsa_export(buf, &len, PK_PRIVATE, &key)); |  | ||||||
|    if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from dec)", 0)) { |  | ||||||
|       return 1; |  | ||||||
|    } |  | ||||||
|    rsa_free(&key); |  | ||||||
| 
 |  | ||||||
|    /* try import public key from raw hexadecimal numbers */ |  | ||||||
|    DO(rsa_import_radix(16, hex_N, hex_e, NULL, NULL, NULL, NULL, NULL, NULL, &key)); |  | ||||||
|    len = sizeof(buf); |    len = sizeof(buf); | ||||||
|    DO(rsa_export(buf, &len, PK_PUBLIC, &key)); |    DO(rsa_export(buf, &len, PK_PUBLIC, &key)); | ||||||
|    if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from hex)", 0)) { |    if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from hex)", 0)) { | ||||||
| @ -271,8 +281,25 @@ static int rsa_compat_test(void) | |||||||
|    } |    } | ||||||
|    rsa_free(&key); |    rsa_free(&key); | ||||||
| 
 | 
 | ||||||
|    /* try import public key from raw decimal numbers */ | 
 | ||||||
|    DO(rsa_import_radix(10, dec_N, dec_e, NULL, NULL, NULL, NULL, NULL, NULL, &key)); |    /* convert raw decimal numbers to binary */ | ||||||
|  |    for (i = 0; i < 8; ++i) { | ||||||
|  |       key_lens[i] = sizeof(key_parts[i]); | ||||||
|  |       DO(radix_to_bin(dec_key[i], 10, key_parts[i], &key_lens[i])); | ||||||
|  |    } | ||||||
|  |    /* try import private key from converted raw decimal numbers */ | ||||||
|  |    DO(rsa_set_key(key_parts[pk_N], key_lens[pk_N], key_parts[pk_e], key_lens[pk_e], key_parts[pk_d], key_lens[pk_d], &key)); | ||||||
|  |    DO(rsa_set_factors(key_parts[pk_p], key_lens[pk_p], key_parts[pk_q], key_lens[pk_q], &key)); | ||||||
|  |    DO(rsa_set_crt_params(key_parts[pk_dP], key_lens[pk_dP], key_parts[pk_dQ], key_lens[pk_dQ], key_parts[pk_qP], key_lens[pk_qP], &key)); | ||||||
|  |    len = sizeof(buf); | ||||||
|  |    DO(rsa_export(buf, &len, PK_PRIVATE, &key)); | ||||||
|  |    if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from dec)", 0)) { | ||||||
|  |       return 1; | ||||||
|  |    } | ||||||
|  |    rsa_free(&key); | ||||||
|  | 
 | ||||||
|  |    /* try import public key from raw converted decimal numbers */ | ||||||
|  |    DO(rsa_set_key(key_parts[pk_N], key_lens[pk_N], key_parts[pk_e], key_lens[pk_e], NULL, 0, &key)); | ||||||
|    len = sizeof(buf); |    len = sizeof(buf); | ||||||
|    DO(rsa_export(buf, &len, PK_PUBLIC, &key)); |    DO(rsa_export(buf, &len, PK_PUBLIC, &key)); | ||||||
|    if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from dec)", 0)) { |    if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from dec)", 0)) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user