<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Courier;
        panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span style='font-size:12.0pt'>If you generated a keypair <b>in a smartcard</b>, how did you extract the private key out of it??? The whole point of a smartcard is to prevent that from being possible.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'>So, like Ken suggested, I’ve no idea where the private key you posted was coming from – but reasonably sure it has no relation to what’s in the smartcard.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'>To use keys on the smartcard, you need libp11 package, something like (my test-script uses RSA-PSS, but that doesn’t matter – adjust the OpenSSL parameters):<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$ pkcs11-rsa-pss-sign-demo2<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>This is not a CAC<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Generating ephemeral file /tmp/derive.20560.text to test RSA-PSS signature...<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>openssl rand -engine rdrand -hex -out /tmp/derive.20560.text 5120<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>engine "rdrand" set.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Signing file /tmp/derive.20560.text...<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>openssl dgst -engine pkcs11 -keyform engine -sign "pkcs11:manufacturer=piv_II;object=SIGN%20key;type=private" -sha384 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -out /tmp/derive.20560.text.sig /tmp/derive.20560.text<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>engine "pkcs11" set.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Enter PKCS#11 token PIN for XXXXXXXXXXXX:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Signature for /tmp/derive.20560.text is stored in /tmp/derive.20560.text.sig<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Verifying signature:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>openssl dgst -engine pkcs11 -keyform engine -verify "pkcs11:manufacturer=piv_II;object=SIGN%20pubkey;type=public" -sha384 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -signature /tmp/derive.20560.text.sig  /tmp/derive.20560.text<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>engine "pkcs11" set.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Verified OK<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$</span><span style='font-size:12.0pt'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'>IMHO, it is a bad idea to use “rsautl” here – better to follow my example above. But if you must – here it is:<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$ openssl rand -hex -out /tmp/t.text 24<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$ openssl rsautl -engine pkcs11 -keyform engine -sign -inkey "pkcs11:manufacturer=piv_II;object=SIGN%20key;type=private" -in /tmp/t.text -out /tmp/t.text.sig<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>engine "pkcs11" set.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>Enter PKCS#11 token PIN for Blumenthal, Uri (UR20980):<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$ openssl rsautl -engine pkcs11 -keyform engine -pubin -verify -inkey "pkcs11:manufacturer=piv_II;object=SIGN%20pubkey;type=public" -in /tmp/t.text.sig <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>engine "pkcs11" set.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>c0e78791e0eb900eb36436da9cd4dcf85619c61a486e4b03<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$ cat /tmp/t.text<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>c0e78791e0eb900eb36436da9cd4dcf85619c61a486e4b03<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:Courier'>$<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt'><o:p> </o:p></span></p><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='margin-left:.5in'><b><span style='font-size:12.0pt;color:black'>From: </span></b><span style='font-size:12.0pt;color:black'>openssl-users <openssl-users-bounces@openssl.org> on behalf of Pedro Lopes <pedroterrosolopes@gmail.com><br><b>Date: </b>Thursday, February 13, 2020 at 12:40 PM<br><b>To: </b>openssl-users <openssl-users@openssl.org><br><b>Subject: </b>Fails on verifying signature - RSA_padding_check_PKCS1_type_1:invalid padding<o:p></o:p></span></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>Hello, <o:p></o:p></p><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>I'm generating a key pair in a smartcard (as a session object), then I convert both keys to RSA openssl objects.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>Then I save both into different files.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>I tried use these keys to sign and verify (private encrypts and public decrypts).<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>When I try to verify the signature, fails with RSA_padding_check_PKCS1_type_1:invalid padding.<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>I run following commands:<br><b>echo "test" > "test.txt"<br>openssl rsautl -sign -in test.txt -inkey privKey.pem -out sig<br>openssl rsautl -verify -in sig -inkey pubKeyp8.pem -pubin</b><o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>Below pub and priv key:<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>-----BEGIN RSA PRIVATE KEY-----<br>MIICXAIBAAKBgQDsCXvs8rmEDP+NuB4mCvztondC+yfzy6DYswE6jvSJdgZe8PAh<br>kNagyoWsCNGqNEqpQmXY1Ufmxh4tdInod/KyT4uZ8vpu+yhqujRlwill+T9JCtA+<br>DnUSn0QiOV7OVFRMkleGW0ADr1LUp+wRe4aS/xxoc5GAc7UhAy7VZyj6jQIDAQAB<br>AoGBALWREhgSGqy+hvKQN/jRqQBvYkhPBMufzwoCoKZYAzmeZYYw1rcrQD6Nq0fL<br>vOSttuT+o3OplNarfdk/dToy0qfnDcNqmY3XTQbhn5SG/R8Ye5qFmyP/lZuN4NYI<br>TGiPO6Dt7y6IUp2inhAUkWcqMlr/5y2Kg6/Mh5CtghuhGriBAkEA+xht1GA7gc/N<br>pfam97iwlj6EBQUk8sX1UjSHWy5vH6RHNW0w1hDq9PrBYTT8mFuDMKA3kNdTw3JZ<br>2vTce4QELQJBAPClwe40HA9RKHfn5RjEFvvf0rt4/4LU3TAnmWZRuF+KU2JoxSs8<br>Ue+jx82PeqyH4KAD0tTboJBFt5PJLDz86+ECQHoiydmR7aAY+kkODu1UMuECC6l9<br>dRl53PhdgLGDhp33hIOiVyzpEcCT8FheM7fQW6HdbOnRM3dQOhDdJhoWfwkCQH+g<br>GTLAliUVcLXu2VSCIoJgWP2uFSyIwenZBoT6UCLzVHe7gt4ENpw2Ky/8qR25Tkru<br>3DChbg01vD93kKujo2ECQFQH9eMd1jr8K+/AZKdVUU0Nd3aSq3se+g25bTLBPt7k<br>x0yYAdd3XrfAys55ujSFEwFL9eGzNWXrBN9S2/yS8kU=<br>-----END RSA PRIVATE KEY-----<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>-----BEGIN RSA PUBLIC KEY-----<br>MIGHAoGBAOwJe+zyuYQM/424HiYK/O2id0L7J/PLoNizATqO9Il2Bl7w8CGQ1qDK<br>hawI0ao0SqlCZdjVR+bGHi10ieh38rJPi5ny+m77KGq6NGXCKWX5P0kK0D4OdRKf<br>RCI5Xs5UVEySV4ZbQAOvUtSn7BF7hpL/HGhzkYBztSEDLtVnKPqNAgEB<br>-----END RSA PUBLIC KEY-----<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>-----BEGIN PUBLIC KEY-----<br>MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDsCXvs8rmEDP+NuB4mCvztondC<br>+yfzy6DYswE6jvSJdgZe8PAhkNagyoWsCNGqNEqpQmXY1Ufmxh4tdInod/KyT4uZ<br>8vpu+yhqujRlwill+T9JCtA+DnUSn0QiOV7OVFRMkleGW0ADr1LUp+wRe4aS/xxo<br>c5GAc7UhAy7VZyj6jQIBAQ==<br>-----END PUBLIC KEY-----<o:p></o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-left:.5in'>Could you please help me with this?<br clear=all><o:p></o:p></p><div><p class=MsoNormal style='margin-left:.5in'>Thanks in advance.<o:p></o:p></p></div><p class=MsoNormal style='margin-left:.5in'>-- <o:p></o:p></p><div><div><p class=MsoNormal style='margin-left:.5in'>Regards, <o:p></o:p></p><div><p class=MsoNormal style='margin-left:.5in'>Pedro Lopes<o:p></o:p></p></div></div></div></div></div></div></body></html>