On 04/14/2012 09:28 AM, Niels Möller wrote:

>> /* RSA signatures, using PKCS#1 1.5
>>  * Input should be a BER encoded DigestInfo
>>  */
>> int
>> rsa_digest_info_sign(const struct rsa_private_key *key,
>>         unsigned length, const uint8_t *digest_info,
>>         mpz_t signature);
>>
>> int
>> rsa_digest_info_verify(const struct rsa_public_key *key,
>>            unsigned length, const uint8_t *digest_info,
>>            const mpz_t signature);
> That seems reasonable (if and how the implementation of nettle's other
> rsa sign/verify functions could be reorganized to make use of that, I'm
> not sure).
> Minor points: It should really be DER encoded, right? 


PKCS #1 1.5 says BER and there were quite some implementations that used
BER for encoding instead of DER.

> And I guess you'd also want a _sign_tr variant. 


Indeed. I only listed the basic interface for review.

> As for naming, maybe I'd want to have

> "pkcs1" int he name, not sure.


I wanted to use PKCS1 but it might be misleading as PKCS #1 1.5 has
a different padding method than PKCS #1 2.1 which uses OAEP. I don't
know if rsa_pkcs1_1_5_sign is reasonable...

> A question for all of you: Nettle currently has two flavors of sign
> functions for each algorithm. E.g.,
>   int
>   rsa_sha1_sign(const struct rsa_private_key *key,
>                 struct sha1_ctx *hash,
>                 mpz_t signature);
>   
>   int
>   rsa_sha1_sign_digest(const struct rsa_private_key *key,
>                      const uint8_t *digest,
>                        mpz_t s);
> The former could be implemented in terms of the latter (currently it's
> not, to avoid an unnecessary copy, which may be a pointless
> optimization in this context).

> The point of the first function is convenience, where you can create a

> signature simply by
> 
>   sha1_init
>   sha1_update
>   rsa_sha1_sign
> without bothering with allocating and writing the actual digest.
> Do you think this design makes sense?


IMO it makes sense, but I think the drawbacks, which are maintaining one
extra function per hash, do not really outweigh the benefit which
is not really noticeable in the RSA operation.

regards,
Nikos
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to