1*e7be843bSPierre Pronchery#! /usr/bin/env perl 2*e7be843bSPierre Pronchery# Copyright 2023 The OpenSSL Project Authors. All Rights Reserved. 3*e7be843bSPierre Pronchery# 4*e7be843bSPierre Pronchery# Licensed under the Apache License 2.0 (the "License"). You may not use 5*e7be843bSPierre Pronchery# this file except in compliance with the License. You can obtain a copy 6*e7be843bSPierre Pronchery# in the file LICENSE in the source distribution or at 7*e7be843bSPierre Pronchery# https://www.openssl.org/source/license.html 8*e7be843bSPierre Pronchery 9*e7be843bSPierre Proncheryuse strict; 10*e7be843bSPierre Proncheryuse warnings; 11*e7be843bSPierre Pronchery 12*e7be843bSPierre Proncheryuse OpenSSL::Test qw(:DEFAULT srctop_file); 13*e7be843bSPierre Proncheryuse OpenSSL::Test::Utils; 14*e7be843bSPierre Pronchery 15*e7be843bSPierre ProncheryBEGIN { 16*e7be843bSPierre Pronchery setup("test_rsax931"); 17*e7be843bSPierre Pronchery} 18*e7be843bSPierre Pronchery 19*e7be843bSPierre Proncheryplan tests => 6; 20*e7be843bSPierre Pronchery 21*e7be843bSPierre Proncherymy $infile = srctop_file("test", "certs", "sm2.key"); 22*e7be843bSPierre Proncherymy $inkey = srctop_file("test", "testrsa2048.pem"); 23*e7be843bSPierre Pronchery 24*e7be843bSPierre Proncheryok(run(app(['openssl', 'pkeyutl', '-in', $infile, '-rawin', '-inkey', $inkey, 25*e7be843bSPierre Pronchery '-digest', 'SHA256', 26*e7be843bSPierre Pronchery '-pkeyopt', 'pad-mode:x931', 27*e7be843bSPierre Pronchery '-sign', 28*e7be843bSPierre Pronchery '-out', 'sigx931.txt'])), 29*e7be843bSPierre Pronchery "RSA Sign with x931 padding using SHA256"); 30*e7be843bSPierre Pronchery 31*e7be843bSPierre Proncheryok(run(app(['openssl', 'pkeyutl', '-in', $infile, '-rawin', '-inkey', $inkey, 32*e7be843bSPierre Pronchery '-digest', 'SHA256', 33*e7be843bSPierre Pronchery '-pkeyopt', 'pad-mode:x931', 34*e7be843bSPierre Pronchery '-verify', 35*e7be843bSPierre Pronchery '-sigfile', 'sigx931.txt'])), 36*e7be843bSPierre Pronchery "RSA Verify with x931 padding using SHA256"); 37*e7be843bSPierre Pronchery 38*e7be843bSPierre Proncheryok(!run(app(['openssl', 'pkeyutl', '-in', $infile, '-rawin', '-inkey', $inkey, 39*e7be843bSPierre Pronchery '-digest', 'SHA512', 40*e7be843bSPierre Pronchery '-pkeyopt', 'pad-mode:x931', 41*e7be843bSPierre Pronchery '-verify', 42*e7be843bSPierre Pronchery '-sigfile', 'sigx931.txt'])), 43*e7be843bSPierre Pronchery "RSA Verify with x931 padding fails if digest is different"); 44*e7be843bSPierre Pronchery 45*e7be843bSPierre Proncheryok(!run(app(['openssl', 'pkeyutl', '-in', $infile, '-rawin', '-inkey', $inkey, 46*e7be843bSPierre Pronchery '-digest', 'SHA512-256', 47*e7be843bSPierre Pronchery '-pkeyopt', 'pad-mode:x931', 48*e7be843bSPierre Pronchery '-sign'])), 49*e7be843bSPierre Pronchery "RSA Sign with x931 padding using unsupported digest should fail"); 50*e7be843bSPierre Pronchery 51*e7be843bSPierre Proncheryok(run(app(['openssl', 'pkeyutl', '-in', $infile, '-rawin', '-inkey', $inkey, 52*e7be843bSPierre Pronchery '-digest', 'SHA256', 53*e7be843bSPierre Pronchery '-pkeyopt', 'pad-mode:oaep', 54*e7be843bSPierre Pronchery '-sign', 55*e7be843bSPierre Pronchery '-out', 'sigoaep.txt'])), 56*e7be843bSPierre Pronchery "RSA Sign with oaep padding using SHA256"); 57*e7be843bSPierre Pronchery 58*e7be843bSPierre Proncheryok(!run(app(['openssl', 'pkeyutl', '-in', $infile, '-rawin', '-inkey', $inkey, 59*e7be843bSPierre Pronchery '-digest', 'SHA256', 60*e7be843bSPierre Pronchery '-pkeyopt', 'pad-mode:x931', 61*e7be843bSPierre Pronchery '-verify', 62*e7be843bSPierre Pronchery '-sigfile', 'sigoaep.txt'])), 63*e7be843bSPierre Pronchery "RSA Verify with x931 padding using data signed with oaep padding should fail"); 64