All of lore.kernel.org
 help / color / mirror / Atom feed
* [dpdk-dev] [RFC] RSA Digital Signature input
@ 2019-08-16 11:31 Kusztal, ArkadiuszX
  0 siblings, 0 replies; only message in thread
From: Kusztal, ArkadiuszX @ 2019-08-16 11:31 UTC (permalink / raw)
  To: Trahe, Fiona, akhil.goyal, Verma, Shally, Ayuj Verma, Anoob Joseph; +Cc: dev

Hi all,

This is a continuation of thread we have had before but it would be easier when new thread created.

Current RSA  signature test takes as an input plaintext:
        asym_op->rsa.message.data = rsaplaintext.data;
        asym_op->rsa.message.length = rsaplaintext.len;

But we do not specify what input data provide should have.

Openssl implementation does

        case RTE_CRYPTO_ASYM_OP_SIGN:

               ret = RSA_private_encrypt(op->rsa.message.length,
But this function does not handle algorithmIdentifier
https://www.openssl.org/docs/manmaster/man3/RSA_private_encrypt.html
Which means that algorithIdentifier should be encoded together with message digest,

Assuming rsaplaintext is a message digest created by SHA1.
Openssl PMD example:

Our plaintext (digest):
uint8_t input_2[] = { 0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae,
                  0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb,
                  0x7e, 0x78, 0xa0, 0x50 };
Digest with DER prepended.

(RFC 8107 9.2 notes. 1)

uint8_t input[] = { 0x30,  0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14,

               0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae,

               0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb,

               0x7e, 0x78, 0xa0, 0x50 };




With these params both openssl functions below will return the same signature (PKCS_1.5 is deterministic so it will be always the same)


RSA_private_encrypt( sizeof(input), input, op->rsa.sign.data, rsa, pad);
RSA_sign(NID_sha1, input_2, sizeof(input_2), output, (unsigned int*)&op->rsa.sign.length, rsa );

Neither of these functions support PSS, so for openssl most probable way for PSS would be something like:

-          RSA_padding_add_PKCS1_PSS

-          RSA_private_encrypt
And digest provided or created in openssl.

So the bottom line is:

        rte_crypto_param message;

        /**<

         * Pointer to input data

         * - to be encrypted for RSA public encrypt.

         * - to be signed for RSA sign generation.
What we should say here (is it message, is it digest, is it in case pkcs1_5 der + digest)?

Regards,
Arek



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2019-08-16 11:32 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-16 11:31 [dpdk-dev] [RFC] RSA Digital Signature input Kusztal, ArkadiuszX

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.