Yes, you're correct that it should be done with respect to the size of the
group order. If you file a Bugzilla report, you can add me to and I'll put
together a patch if no one else does.
Douglas
On 2009-Dec-18, at 10:51 PM, Konstantin Andreev wrote:
> Hello.
>
> I have noticed, the following method is used in the ECC sign/verify routines
> to derive 'e' integer from a digest:
>
> ----( begin cite )----
> /* In the definition of EC signing, digests are truncated
> * to the length of n in bits.
> * (see SEC 1 "Elliptic Curve Digit Signature Algorithm" section 4.1.*/
> if (digest->len*8 > ecParams->fieldID.size) { /* u1 = HASH(M') */
> mpl_rsh( &u1, &u1, digest->len*8 - ecParams->fieldID.size );
> }
> ----( end cite )----
>
> See the same at cvs blame:
>
>
> http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/security/nss/lib/freebl/ec.c&rev=1.20&mark=758-763,979-984#751
>
> http://bonsai.mozilla.org/cvsblame.cgi?file=mozilla/security/nss/lib/freebl/ec.c&rev=1.20&mark=758-763,979-984#972
>
> In the code above, the field size is used instead of base point order length.
> For most curves they are the identical, not not for all. This looks like a
> bug for me.
>
> Best regards,
> --
> Konstantin Andreev, software engineer.
> Swemel JSC
> --
> dev-tech-crypto mailing list
> [email protected]
> https://lists.mozilla.org/listinfo/dev-tech-crypto
--
dev-tech-crypto mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-crypto