It works =). I've tested sign/verify with p-192, p-224, p-256, p-384 and
p-521. No problems found.

Thank you for your attention.

2011/9/8 Douglas E. Engert <deeng...@anl.gov>

> Try the attached patch. It compiles, but I have not tested it.
>
>
> On 9/8/2011 11:48 AM, Felipe Blauth wrote:
>
>> I've found where the problem is coming from. It is from OpenSSL's function
>> *o2i_ECPublicKey*, that is used to convert the  asn1 octet string from
>> PKCS#11 *CKA_EC_POINT* attribute to internal OpenSSL
>> stuff. This function is called, like you said, at the file src/p11_ec.c
>> from function *pkcs11_get_ec_private*().
>>
>> I've used *pkcs11-spy*, and it ouputs the following when calling
>> *C_GetAttributeValue* with *CKA_EC_POINT* parameter from the public key
>> object:
>>
>> 84: C_GetAttributeValue
>> [in] hSession = 0x10002
>> [in] hObject = 0x3
>> [in] pTemplate[1]:
>>     CKA_EC_POINT          requested with 136 buffer
>> [out] pTemplate[1]:
>>     CKA_EC_POINT          [size : 0x88 (136)]
>>     04818504 017C713A 5A1ECAB3 0F7B0C54 35099B53 9AC9740A ED157D70
>> 577D9AA3
>>     3BB11767 95F02C07 9683AEA0 2C32422D DC9C7C9E 3BB9952B 7D692047
>> 2F8B75D0
>>     A23BB5EF CC3E01BE 240FFAFD 64A2F090 D2E8556F C108D251 4C9AD53C
>> 270BE2AD
>>     CA829853 57D26AF3 A65806FD 82CE2011 58C02629 B8E90961 4C00887E
>> DD4184C7
>>     37CE192C 2AB5ED47
>> Returned:  0 CKR_OK
>>
>> *ec_pointlen* variable is, therefore, set to 136 bytes. After calling
>> *o2i_ECPublicKey* OpenSSL puts the following error in its stack:
>> *error:10067066:elliptic curve routines:ec_GFp_simple_**oct2point:invalid
>> encoding*
>>
>> So we have some encoding problem. By the way, why we should increment the
>> pointer by 2 before calling *o2i_ECPublicKey**? *Like you did in the
>> following:
>> ...
>>
>
> Because the PKCS#11 returns the point as an octet_string, but OpenSSL does
> not want the octet_string
> for the o2i_ECPublicKey. All my testing was done with named cureves of 256,
> or 384,
> and the ans1 header was always 2 bytes. The TODO comment was to come back
> in fix this.
> Hopfuly the patch will.
>
>  /* PKCS#11 returns ASN1 octstring*/
>> const unsigned char * a;
>> /* TODO we have asn1 octet string, need to strip off 04 len */
>> a = ec_point + 2;
>> o2i_ECPublicKey(&ec, &a, ec_pointlen-2);
>> ...
>>
>> 2011/9/7 Douglas E. Engert <deeng...@anl.gov <mailto:deeng...@anl.gov>>
>>
>>
>>
>>
>>    On 9/6/2011 4:53 PM, Felipe Blauth wrote:
>>
>>        I've tested your mods and they work well =). I can sign and verify
>> with most EC keys (I've tested with p-192, p-224, p-384 and p-521). However
>> I cannot load public keys when using p-521 curves. It
>>        seems that I can load the private key and sign, but the public key
>> is not loaded.
>>
>>        I confess that I didn't look much at engine_pkcs11 source code, but
>> if you could give me some appointments I can try to fix that.
>>
>>
>>    It is not clear where the error could be, it could be in the actual
>>    encoding of the public key, or the ASN1 decoding or in in some size
>> limit.
>>    All the other keys are a multiple of 8 bits. The 521 is not,
>>    and thus the asn1 octet would need an extra byte. Look at the
>>    libp11 src/p11_ec.c and pkcs11_get_ec_private() and the ec_pointlen
>>    variable.
>>
>>    Do you have a dump of the public key?
>>
>>    If you are using OpenSC's PKCS#11, you could turn on the OpenSC debug,
>>    by adding to the opensc.conf someting like:
>>      debug = 7;
>>      debug_file = /tmp/opensc-debug.log;
>>
>>    You could use the OpenSC pkcs11-spy.so to trace the PKCS#11 calls,
>>    that should show the public key being transfered. This can
>>    work with any PKCS#11 module including the opensc-pkcs11.so
>>
>>    Set the environment variables:
>>
>>      export PKCS11SPY=/path/to/your/**pkcs11__.module.so <
>> http://pkcs11.module.so>
>>
>>      export PKCS11SPY_OUTPUT=/tmp/tb.spy._**_txt
>>
>>
>>        OpenSSL error is the following, after loading the key:
>>        error:10067066:elliptic curve 
>> routines:ec_GFp_simple___**oct2point:invalid
>> encoding
>>
>>        Regards,
>>
>>        2011/8/13 Felipe Blauth <f...@inf.ufsc.br <mailto:f...@inf.ufsc.br>
>> <mailto:f...@inf.ufsc.br <mailto:f...@inf.ufsc.br>>>
>>
>>
>>
>>            Thank you, I'll check it out.
>>
>>            2011/8/12 Douglas E. Engert <deeng...@anl.gov <mailto:
>> deeng...@anl.gov> <mailto:deeng...@anl.gov <mailto:deeng...@anl.gov>>>
>>
>>
>>
>>                No it has not been incorporated because it requires an
>> OpenSSL
>>                internal header file ecs_locl.h, thus making it impractical
>> to
>>                compile in to any package.
>>
>>                This is a known bug:
>>
>>        http://rt.openssl.org/Ticket/_**_Display.html?id=2459&user=__**
>> guest&pass=guest<http://rt.openssl.org/Ticket/__Display.html?id=2459&user=__guest&pass=guest><
>> http://rt.openssl.org/Ticket/**Display.html?id=2459&user=**
>> guest&pass=guest<http://rt.openssl.org/Ticket/Display.html?id=2459&user=guest&pass=guest>
>> >
>>        <http://rt.openssl.org/Ticket/**__Display.html?id=2459&user=__**
>> guest&pass=guest<http://rt.openssl.org/Ticket/__Display.html?id=2459&user=__guest&pass=guest><
>> http://rt.openssl.org/Ticket/**Display.html?id=2459&user=**
>> guest&pass=guest<http://rt.openssl.org/Ticket/Display.html?id=2459&user=guest&pass=guest>
>> >>
>>
>>
>>                It also appeared on the OpenSSL mailing list.
>>
>>                The patch should still work. Please try it, and you can
>>                also add comments to the OpenSSL bug report.
>>
>>
>>                On 8/12/2011 2:12 PM, Felipe Blauth wrote:
>>         > Hello.
>>         >
>>         > I've started using engine_pkcs11 to access PKCS #11 tokens from
>> OpenSSL EVP_PKEY's trough "ENGINE_load_<key_type>_key" methods. It works
>> very well with RSA keys, but it doesn't recognize
>>                ECDSA keys.
>>         >
>>         > Searching trough the web, I've found that Douglas had a patch
>> for it at http://www.mail-archive.com/__**opensc-devel@lists.opensc-__**
>> project.org/msg07785.html<http://www.mail-archive.com/__opensc-devel@lists.opensc-__project.org/msg07785.html>
>>        <http://www.mail-archive.com/**opensc-devel@lists.opensc-**
>> project.org/msg07785.html<http://www.mail-archive.com/opensc-devel@lists.opensc-project.org/msg07785.html>
>> >.
>>         >
>>         > Was that ever incorporated? I couldn't find in the latest
>> snapshots.
>>         >
>>         > Thank you very much.
>>         >
>>         > --
>>         > Felipe Menegola Blauth
>>         >
>>         >
>>         >
>>         > ______________________________**___________________
>>         > opensc-devel mailing list
>>         > 
>> opensc-devel@lists.opensc-__**project.org<opensc-devel@lists.opensc-__project.org><mailto:
>> opensc-devel@lists.**opensc-project.org<opensc-devel@lists.opensc-project.org>>
>> <mailto:opensc-devel@lists.__o**pensc-project.org<http://opensc-project.org><mailto:
>> opensc-devel@lists.**opensc-project.org<opensc-devel@lists.opensc-project.org>
>> >>
>>
>>         > http://www.opensc-project.org/**__mailman/listinfo/opensc-**
>> devel <http://www.opensc-project.org/__mailman/listinfo/opensc-devel> <
>> http://www.opensc-project.**org/mailman/listinfo/opensc-**devel<http://www.opensc-project.org/mailman/listinfo/opensc-devel>
>> >
>>
>>                --
>>
>>                  Douglas E. Engert <deeng...@anl.gov <mailto:
>> deeng...@anl.gov> <mailto: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>
>> <tel:%28630%29%20252-5444>
>>                ______________________________**___________________
>>                opensc-devel mailing list
>>        
>> opensc-devel@lists.opensc-__**project.org<opensc-devel@lists.opensc-__project.org><mailto:
>> opensc-devel@lists.**opensc-project.org<opensc-devel@lists.opensc-project.org>>
>> <mailto:opensc-devel@lists.__o**pensc-project.org<http://opensc-project.org><mailto:
>> opensc-devel@lists.**opensc-project.org<opensc-devel@lists.opensc-project.org>
>> >>
>>
>>        
>> http://www.opensc-project.org/**__mailman/listinfo/opensc-**devel<http://www.opensc-project.org/__mailman/listinfo/opensc-devel><
>> http://www.opensc-project.**org/mailman/listinfo/opensc-**devel<http://www.opensc-project.org/mailman/listinfo/opensc-devel>
>> >
>>
>>
>>
>>
>>
>>            --
>>            Felipe Menegola Blauth
>>
>>
>>
>>
>>        --
>>        Felipe Menegola Blauth
>>
>>
>>    --
>>
>>      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>
>>
>>
>>
>>
>> --
>> Felipe Menegola Blauth
>>
>
> --
>
>  Douglas E. Engert  <deeng...@anl.gov>
>  Argonne National Laboratory
>  9700 South Cass Avenue
>  Argonne, Illinois  60439
>  (630) 252-5444
>



-- 
Felipe Menegola Blauth
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to