gen_pkcs1_v21_sign_verify.pl (1768B)
1 #!/usr/bin/env perl 2 # 3 # Copyright The Mbed TLS Contributors 4 # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 5 6 use strict; 7 8 my $file = shift; 9 10 open(TEST_DATA, "$file") or die "Opening test cases '$file': $!"; 11 12 sub get_val($$) 13 { 14 my $str = shift; 15 my $name = shift; 16 my $val = ""; 17 18 while(my $line = <TEST_DATA>) 19 { 20 next if($line !~ /^# $str/); 21 last; 22 } 23 24 while(my $line = <TEST_DATA>) 25 { 26 last if($line eq "\r\n"); 27 $val .= $line; 28 } 29 30 $val =~ s/[ \r\n]//g; 31 32 return $val; 33 } 34 35 my $state = 0; 36 my $val_n = ""; 37 my $val_e = ""; 38 my $val_p = ""; 39 my $val_q = ""; 40 my $mod = 0; 41 my $cnt = 1; 42 while (my $line = <TEST_DATA>) 43 { 44 next if ($line !~ /^# Example/); 45 46 ( $mod ) = ($line =~ /A (\d+)/); 47 $val_n = get_val("RSA modulus n", "N"); 48 $val_e = get_val("RSA public exponent e", "E"); 49 $val_p = get_val("Prime p", "P"); 50 $val_q = get_val("Prime q", "Q"); 51 52 for(my $i = 1; $i <= 6; $i++) 53 { 54 my $val_m = get_val("Message to be", "M"); 55 my $val_salt = get_val("Salt", "Salt"); 56 my $val_sig = get_val("Signature", "Sig"); 57 58 print("RSASSA-PSS Signature Example ${cnt}_${i}\n"); 59 print("pkcs1_rsassa_pss_sign:$mod:16:\"$val_p\":16:\"$val_q\":16:\"$val_n\":16:\"$val_e\":SIG_RSA_SHA1:MBEDTLS_MD_SHA1"); 60 print(":\"$val_m\""); 61 print(":\"$val_salt\""); 62 print(":\"$val_sig\":0"); 63 print("\n\n"); 64 65 print("RSASSA-PSS Signature Example ${cnt}_${i} (verify)\n"); 66 print("pkcs1_rsassa_pss_verify:$mod:16:\"$val_n\":16:\"$val_e\":SIG_RSA_SHA1:MBEDTLS_MD_SHA1"); 67 print(":\"$val_m\""); 68 print(":\"$val_salt\""); 69 print(":\"$val_sig\":0"); 70 print("\n\n"); 71 } 72 $cnt++; 73 } 74 close(TEST_DATA);