Re: [opensc-devel] PIV: signature output format
Hi Douglas, I'm fine with that. I already changed our card driver to provide the r||s format anyway. After 0.13.0 we should work on the issue. Did anyone already considered implementing support for PKCS#1 PSS format ? We have support for it in the SmartCard-HSM and want to add it to OpenSC. Andreas Am 13.08.2012 00:45, schrieb Douglas E. Engert: On 8/11/2012 1:26 PM, Andreas Schwier (ML) wrote: Hi Viktor and Douglas, I do also favour to keep the DER signature format at the interface between the card driver and the pkcs15 framework. OK, we could do that. I would like to wait till after 0.13.0 is released, as the current code is working. What is your scheduling requirements? At the card driver level we don't know the field size, but we do at the pkcs15 framework level. And all cards I know use the DER encoded signature format anyway. Maybe we can reuse Douglas code and do a conditional conversion in sc_pkcs11_signature_final. Andreas Am 26.06.2012 08:06, schrieb Viktor Tarasov: On Mon, Jun 25, 2012 at 9:22 PM, Douglas E. Engert deeng...@anl.gov mailto:deeng...@anl.gov wrote: Just back from vacation... On 6/21/2012 9:50 AM, Viktor TARASOV wrote: Hi Douglas, I'm trying to get signature with the PIV card and verify it with the 'openssl pkeyutl'. I use EC key #04 CARD AUTH Key. It fails because of the 'raw' output format of the signature produced by OpenSC. OpenSSL expects the signature as a ASN1 sequence of two integers. I've seen in card-piv.c your comments: https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/card-piv.c#L2023 /* The PIV returns a DER SEQUENCE{INTEGER, INTEGER} * Which may have leading 00 to force positive * TODO: -DEE should check if PKCS15 want the same It seems that PKCS#15 really wants it. * But PKCS11 just wants 2* filed_length in bytes Can you explain more? Why it wants 'raw' data? PKCS#11 v2.30: says: 6.3.1 EC Signatures For the purposes of these mechanisms, an ECDSA signature is an octet string of even length which is at most two times nLen octets, where nLen is the length in octets of the base point order n. The signature octets correspond to the concatenation of the ECDSA values r and s, both represented as an octet string of equal length of at most nLen with the most significant byte first. If r and s have different octet length, the shorter of both must be padded with leading zero octets such that both have the same octet length. PKCS#11 2.20 in Section 12.3.1 says the same as above. PKCS#11 2.01 11.4.3 says basically the same thing, but assumes a fixed size of nLen=20. So PKCS#11 is not returning ASN1 but just the concatenation of r and s. Ok, thanks. * So we have to strip out the integers * if present and pad on left if too short. */ I would propose to keep the ASN1 encoded data at the PKCS#15 level, and, if needed, to convert it to the 'raw' format by dedicated procedure in the pkcs15 framework of pkcs11. Where do you see in PKCS#15 that a ECDSA signature is in ANS1? If it needs to be ASN1, then yes the conversion could be done in the framework. Ok, there is no signature in ASN.1 in pkcs#15, but there some practical reasons. The card itself (Oberthur's PIV) returns the signature encoded in ASN.1; OpenSSL, for which the pkcs15-tool have to provide data in a suitable format, needs also the ASN.1 encoding. So, my suggestion is to keep the encoding returned by the card at the pkcs#15 level, and change it to the 'raw' mode on the pkcs#11 side. Finally, I have no preference, if you prefer to keep it like it is now, we'll be living with. Kind regards, Viktor. -- Douglas E. Engert deeng...@anl.gov mailto:deeng...@anl.gov Argonne National Laboratory 9700 South Cass Avenue Argonne, Illinois 60439 (630) 252-5444 tel:%28630%29%20252-5444 ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel -- -CardContact Software System Consulting |.## ##.| Andreas Schwier |# #| Schülerweg 38 |# #| 32429 Minden, Germany |'## ##'| Phone +49 171 8334920 -http://www.cardcontact.de http://www.tscons.de http://www.openscdp.org ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org
Re: [opensc-devel] PIV: signature output format
On 8/13/2012 3:00 AM, Andreas Schwier wrote: Hi Douglas, I'm fine with that. I already changed our card driver to provide the r||s format anyway. After 0.13.0 we should work on the issue. Did anyone already considered implementing support for PKCS#1 PSS format ? Not that I know of. Cards that do support padding on the card may need changes to the card driver modules to take advantage of PSS. For the PIV all padding is done in by the calling application or by the OpenSC software if OpenSSL is used. The PIV card supports only the RSA RAW operation, so it has not been an issue so far. NIST 800-78-2 says PSS it is an acceptable padding to use. We have support for it in the SmartCard-HSM and want to add it to OpenSC. Andreas Am 13.08.2012 00:45, schrieb Douglas E. Engert: On 8/11/2012 1:26 PM, Andreas Schwier (ML) wrote: Hi Viktor and Douglas, I do also favour to keep the DER signature format at the interface between the card driver and the pkcs15 framework. OK, we could do that. I would like to wait till after 0.13.0 is released, as the current code is working. What is your scheduling requirements? At the card driver level we don't know the field size, but we do at the pkcs15 framework level. And all cards I know use the DER encoded signature format anyway. Maybe we can reuse Douglas code and do a conditional conversion in sc_pkcs11_signature_final. Andreas Am 26.06.2012 08:06, schrieb Viktor Tarasov: On Mon, Jun 25, 2012 at 9:22 PM, Douglas E. Engert deeng...@anl.gov mailto:deeng...@anl.gov wrote: Just back from vacation... On 6/21/2012 9:50 AM, Viktor TARASOV wrote: Hi Douglas, I'm trying to get signature with the PIV card and verify it with the 'openssl pkeyutl'. I use EC key #04 CARD AUTH Key. It fails because of the 'raw' output format of the signature produced by OpenSC. OpenSSL expects the signature as a ASN1 sequence of two integers. I've seen in card-piv.c your comments: https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/card-piv.c#L2023 /* The PIV returns a DER SEQUENCE{INTEGER, INTEGER} * Which may have leading 00 to force positive * TODO: -DEE should check if PKCS15 want the same It seems that PKCS#15 really wants it. * But PKCS11 just wants 2* filed_length in bytes Can you explain more? Why it wants 'raw' data? PKCS#11 v2.30: says: 6.3.1 EC Signatures For the purposes of these mechanisms, an ECDSA signature is an octet string of even length which is at most two times nLen octets, where nLen is the length in octets of the base point order n. The signature octets correspond to the concatenation of the ECDSA values r and s, both represented as an octet string of equal length of at most nLen with the most significant byte first. If r and s have different octet length, the shorter of both must be padded with leading zero octets such that both have the same octet length. PKCS#11 2.20 in Section 12.3.1 says the same as above. PKCS#11 2.01 11.4.3 says basically the same thing, but assumes a fixed size of nLen=20. So PKCS#11 is not returning ASN1 but just the concatenation of r and s. Ok, thanks. * So we have to strip out the integers * if present and pad on left if too short. */ I would propose to keep the ASN1 encoded data at the PKCS#15 level, and, if needed, to convert it to the 'raw' format by dedicated procedure in the pkcs15 framework of pkcs11. Where do you see in PKCS#15 that a ECDSA signature is in ANS1? If it needs to be ASN1, then yes the conversion could be done in the framework. Ok, there is no signature in ASN.1 in pkcs#15, but there some practical reasons. The card itself (Oberthur's PIV) returns the signature encoded in ASN.1; OpenSSL, for which the pkcs15-tool have to provide data in a suitable format, needs also the ASN.1 encoding. So, my suggestion is to keep the encoding returned by the card at the pkcs#15 level, and change it to the 'raw' mode on the pkcs#11 side. Finally, I have no preference, if you prefer to keep it like it is now, we'll be living with. Kind regards, Viktor. -- Douglas E. Engert deeng...@anl.gov mailto:deeng...@anl.gov Argonne National Laboratory 9700 South Cass Avenue Argonne, Illinois 60439 (630) 252-5444 tel:%28630%29%20252-5444 ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org
Re: [opensc-devel] PIV: signature output format
Hi Viktor and Douglas, I do also favour to keep the DER signature format at the interface between the card driver and the pkcs15 framework. At the card driver level we don't know the field size, but we do at the pkcs15 framework level. And all cards I know use the DER encoded signature format anyway. Maybe we can reuse Douglas code and do a conditional conversion in sc_pkcs11_signature_final. Andreas Am 26.06.2012 08:06, schrieb Viktor Tarasov: On Mon, Jun 25, 2012 at 9:22 PM, Douglas E. Engert deeng...@anl.gov mailto:deeng...@anl.gov wrote: Just back from vacation... On 6/21/2012 9:50 AM, Viktor TARASOV wrote: Hi Douglas, I'm trying to get signature with the PIV card and verify it with the 'openssl pkeyutl'. I use EC key #04 CARD AUTH Key. It fails because of the 'raw' output format of the signature produced by OpenSC. OpenSSL expects the signature as a ASN1 sequence of two integers. I've seen in card-piv.c your comments: https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/card-piv.c#L2023 /* The PIV returns a DER SEQUENCE{INTEGER, INTEGER} * Which may have leading 00 to force positive * TODO: -DEE should check if PKCS15 want the same It seems that PKCS#15 really wants it. * But PKCS11 just wants 2* filed_length in bytes Can you explain more? Why it wants 'raw' data? PKCS#11 v2.30: says: 6.3.1 EC Signatures For the purposes of these mechanisms, an ECDSA signature is an octet string of even length which is at most two times nLen octets, where nLen is the length in octets of the base point order n. The signature octets correspond to the concatenation of the ECDSA values r and s, both represented as an octet string of equal length of at most nLen with the most significant byte first. If r and s have different octet length, the shorter of both must be padded with leading zero octets such that both have the same octet length. PKCS#11 2.20 in Section 12.3.1 says the same as above. PKCS#11 2.01 11.4.3 says basically the same thing, but assumes a fixed size of nLen=20. So PKCS#11 is not returning ASN1 but just the concatenation of r and s. Ok, thanks. * So we have to strip out the integers * if present and pad on left if too short. */ I would propose to keep the ASN1 encoded data at the PKCS#15 level, and, if needed, to convert it to the 'raw' format by dedicated procedure in the pkcs15 framework of pkcs11. Where do you see in PKCS#15 that a ECDSA signature is in ANS1? If it needs to be ASN1, then yes the conversion could be done in the framework. Ok, there is no signature in ASN.1 in pkcs#15, but there some practical reasons. The card itself (Oberthur's PIV) returns the signature encoded in ASN.1; OpenSSL, for which the pkcs15-tool have to provide data in a suitable format, needs also the ASN.1 encoding. So, my suggestion is to keep the encoding returned by the card at the pkcs#15 level, and change it to the 'raw' mode on the pkcs#11 side. Finally, I have no preference, if you prefer to keep it like it is now, we'll be living with. Kind regards, Viktor. -- Douglas E. Engert deeng...@anl.gov mailto:deeng...@anl.gov Argonne National Laboratory 9700 South Cass Avenue Argonne, Illinois 60439 (630) 252-5444 tel:%28630%29%20252-5444 ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel -- -CardContact Software System Consulting |.## ##.| Andreas Schwier |# #| Schülerweg 38 |# #| 32429 Minden, Germany |'## ##'| Phone +49 171 8334920 -http://www.cardcontact.de http://www.tscons.de http://www.openscdp.org ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel
Re: [opensc-devel] PIV: signature output format
On Mon, Jun 25, 2012 at 9:22 PM, Douglas E. Engert deeng...@anl.gov wrote: Just back from vacation... On 6/21/2012 9:50 AM, Viktor TARASOV wrote: Hi Douglas, I'm trying to get signature with the PIV card and verify it with the 'openssl pkeyutl'. I use EC key #04 CARD AUTH Key. It fails because of the 'raw' output format of the signature produced by OpenSC. OpenSSL expects the signature as a ASN1 sequence of two integers. I've seen in card-piv.c your comments: https://github.com/OpenSC/**OpenSC/blob/staging/src/** libopensc/card-piv.c#L2023https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/card-piv.c#L2023 /* The PIV returns a DER SEQUENCE{INTEGER, INTEGER} * Which may have leading 00 to force positive * TODO: -DEE should check if PKCS15 want the same It seems that PKCS#15 really wants it. * But PKCS11 just wants 2* filed_length in bytes Can you explain more? Why it wants 'raw' data? PKCS#11 v2.30: says: 6.3.1 EC Signatures For the purposes of these mechanisms, an ECDSA signature is an octet string of even length which is at most two times nLen octets, where nLen is the length in octets of the base point order n. The signature octets correspond to the concatenation of the ECDSA values r and s, both represented as an octet string of equal length of at most nLen with the most significant byte first. If r and s have different octet length, the shorter of both must be padded with leading zero octets such that both have the same octet length. PKCS#11 2.20 in Section 12.3.1 says the same as above. PKCS#11 2.01 11.4.3 says basically the same thing, but assumes a fixed size of nLen=20. So PKCS#11 is not returning ASN1 but just the concatenation of r and s. Ok, thanks. * So we have to strip out the integers * if present and pad on left if too short. */ I would propose to keep the ASN1 encoded data at the PKCS#15 level, and, if needed, to convert it to the 'raw' format by dedicated procedure in the pkcs15 framework of pkcs11. Where do you see in PKCS#15 that a ECDSA signature is in ANS1? If it needs to be ASN1, then yes the conversion could be done in the framework. Ok, there is no signature in ASN.1 in pkcs#15, but there some practical reasons. The card itself (Oberthur's PIV) returns the signature encoded in ASN.1; OpenSSL, for which the pkcs15-tool have to provide data in a suitable format, needs also the ASN.1 encoding. So, my suggestion is to keep the encoding returned by the card at the pkcs#15 level, and change it to the 'raw' mode on the pkcs#11 side. Finally, I have no preference, if you prefer to keep it like it is now, we'll be living with. Kind regards, Viktor. -- Douglas E. Engert deeng...@anl.gov Argonne National Laboratory 9700 South Cass Avenue Argonne, Illinois 60439 (630) 252-5444 ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel
Re: [opensc-devel] PIV: signature output format
Just back from vacation... On 6/21/2012 9:50 AM, Viktor TARASOV wrote: Hi Douglas, I'm trying to get signature with the PIV card and verify it with the 'openssl pkeyutl'. I use EC key #04 CARD AUTH Key. It fails because of the 'raw' output format of the signature produced by OpenSC. OpenSSL expects the signature as a ASN1 sequence of two integers. I've seen in card-piv.c your comments: https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/card-piv.c#L2023 /* The PIV returns a DER SEQUENCE{INTEGER, INTEGER} * Which may have leading 00 to force positive * TODO: -DEE should check if PKCS15 want the same It seems that PKCS#15 really wants it. * But PKCS11 just wants 2* filed_length in bytes Can you explain more? Why it wants 'raw' data? PKCS#11 v2.30: says: 6.3.1 EC Signatures For the purposes of these mechanisms, an ECDSA signature is an octet string of even length which is at most two times nLen octets, where nLen is the length in octets of the base point order n. The signature octets correspond to the concatenation of the ECDSA values r and s, both represented as an octet string of equal length of at most nLen with the most significant byte first. If r and s have different octet length, the shorter of both must be padded with leading zero octets such that both have the same octet length. PKCS#11 2.20 in Section 12.3.1 says the same as above. PKCS#11 2.01 11.4.3 says basically the same thing, but assumes a fixed size of nLen=20. So PKCS#11 is not returning ASN1 but just the concatenation of r and s. * So we have to strip out the integers * if present and pad on left if too short. */ I would propose to keep the ASN1 encoded data at the PKCS#15 level, and, if needed, to convert it to the 'raw' format by dedicated procedure in the pkcs15 framework of pkcs11. Where do you see in PKCS#15 that a ECDSA signature is in ANS1? If it needs to be ASN1, then yes the conversion could be done in the framework. Kind regards, Viktor. -- Douglas E. Engert deeng...@anl.gov Argonne National Laboratory 9700 South Cass Avenue Argonne, Illinois 60439 (630) 252-5444 ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel
[opensc-devel] PIV: signature output format
Hi Douglas, I'm trying to get signature with the PIV card and verify it with the 'openssl pkeyutl'. I use EC key #04 CARD AUTH Key. It fails because of the 'raw' output format of the signature produced by OpenSC. OpenSSL expects the signature as a ASN1 sequence of two integers. I've seen in card-piv.c your comments: https://github.com/OpenSC/OpenSC/blob/staging/src/libopensc/card-piv.c#L2023 /* The PIV returns a DER SEQUENCE{INTEGER, INTEGER} * Which may have leading 00 to force positive * TODO: -DEE should check if PKCS15 want the same It seems that PKCS#15 really wants it. * But PKCS11 just wants 2* filed_length in bytes Can you explain more? Why it wants 'raw' data? * So we have to strip out the integers * if present and pad on left if too short. */ I would propose to keep the ASN1 encoded data at the PKCS#15 level, and, if needed, to convert it to the 'raw' format by dedicated procedure in the pkcs15 framework of pkcs11. Kind regards, Viktor. -- Viktor Tarasov viktor.tara...@opentrust.com ___ opensc-devel mailing list opensc-devel@lists.opensc-project.org http://www.opensc-project.org/mailman/listinfo/opensc-devel