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 6use strict; 7 8my $file = shift; 9 10open(TEST_DATA, "$file") or die "Opening test cases '$file': $!"; 11 12sub 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 35my $state = 0; 36my $val_n = ""; 37my $val_e = ""; 38my $val_p = ""; 39my $val_q = ""; 40my $mod = 0; 41my $cnt = 1; 42while (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} 74close(TEST_DATA); 75