Re: Provider: cannot sign with ed25519-like key

"'Bernd Ritter' via openssl-users" <[email protected]>
Newsgroups gmane.comp.encryption.openssl.user
Message-ID <[email protected]>
Hey Matt,

yeah, that was kind of a duplicate. I've looked up how they did it in 
the TPM2 provider and changed it accordingly. It now matches your 
description, thank you for that!

I also added two more parameters for the ED25519 key: 
OSSL_PKEY_PARAM_BITS and OSSL_PKEY_PARAM_SECURITY_BITS.

Still no change. In the encoder part itself the parameters are all set, 
in the digest sign they are not.

I do not understand how the parameter list can change? As my debugging 
logs are called, it seems that my get_params is called accordingly.

All the best,
Bernd

Am 12.08.24 um 11:42 schrieb Matt Caswell:
> 
> 
> On 12/08/2024 07:24, 'Bernd Ritter' via openssl-users wrote:
>> Hey Matt,
>>
>> thanks, that seems to be it! I've set up a params list in 
>> keymanagement with:
>>
>>   static const OSSL_PARAM keymgmt_params[] = {
>>      OSSL_PARAM_int(OSSL_PKEY_PARAM_MAX_SIZE, &_ed25519_keysize),
>>      OSSL_PARAM_END
>> };
> 
> This looks slightly odd. You seem to be attempting to pass a variable 
> (_ed25519_keysize) as part of the *gettable* params. This would normally 
> be NULL here, e.g.
> 
>   static const OSSL_PARAM keymgmt_params[] = {
>      OSSL_PARAM_int(OSSL_PKEY_PARAM_MAX_SIZE, NULL),
>      OSSL_PARAM_END
>   };
> 
>   static const OSSL_PARAM *keymgmt_gettable_params(void *provctx)
>   {
>       return keymgmt_params;
>   }
> 
> The purpose of "gettable params" is simply to advertise what parameters 
> your keymgmt understands. It doesn't actually get the parameters 
> themselves.
> 
> For that you need a separate "get_params" function, e.g.
> 
> static int keymgmt_get_params(void *key, OSSL_PARAM params[])
> {
>      OSSL_PARAM *p;
> 
>      if ((p = OSSL_PARAM_locate(params, OSSL_PKEY_PARAM_MAX_SIZE)) != NULL
>          && !OSSL_PARAM_set_int(p, _ed25519_keysize))
>          return 0;
>      return 1;
> }
> 
> And of course both of those need exist in your OSSL_DISPATCH table:
> 
> const OSSL_DISPATCH keymgmt_functions[] = {
>      ...otherstuff...
>      { OSSL_FUNC_KEYMGMT_GET_PARAMS, (void (*) (void))keymgmt_get_params },
>      { OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS, (void (*) 
> (void))keymgmt_gettable_params },
>      OSSL_DISPATCH_END
> };
> 
> Note, typically I would expect you to have to support some other params 
> too such as OSSL_PKEY_PARAM_BITS and OSSL_PKEY_PARAM_SECURITY_BITS.
> 
> Matt
> 
>>
>> static const OSSL_PARAM* keymgmt_gettable_params(ossl_unused void 
>> *provctx)
>> {
>>      return keymgmt_params;
>> }
>>
>> but still the OSSL_FUNC_KEYMGMT_GET_PARAMS only returns two prefilled 
>> params:
>>
>> * default-digest
>> * mandatory-digest
>>
>> but has not the "max-size" param. Why would that be?
>>
>> All the best,
>> Bernd
>>
>> Am 08.08.24 um 10:44 schrieb Matt Caswell:
>>>
>>>
>>> On Thu, Aug 8, 2024 at 7:34 AM 'Bernd Ritter' via openssl-users 
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>
>>>       > error:030000A7:digital envelope routines::unknown max size
>>>
>>>
>>> That error comes from here:
>>>
>>> https://github.com/openssl/openssl/blob/ 
>>> fd39d1c80cd5bd9cb5c64e3fc96102397e5e860f/crypto/evp/p_lib.c#L1811- 
>>> L1827 <https://github.com/openssl/openssl/blob/ 
>>> fd39d1c80cd5bd9cb5c64e3fc96102397e5e860f/crypto/evp/p_lib.c#L1811-L1827>
>>>
>>> So something is attempting to determine the size of a pkey and found 
>>> it to be invalid.
>>>
>>> This value should be returned by the keymgmt get_params function for 
>>> the parameter OSSL_PKEY_PARAM_MAX_SIZE
>>>
>>> See:
>>> https://docs.openssl.org/master/man7/provider-keymgmt/#common- 
>>> information-parameters 
>>> <https://docs.openssl.org/master/man7/provider- 
>>> keymgmt/#common-information-parameters>
>>>
>>> and
>>>
>>> https://docs.openssl.org/master/man3/EVP_PKEY_get_size/#description 
>>> <https://docs.openssl.org/master/man3/EVP_PKEY_get_size/#description>
>>>
>>> Matt
>>>
>>
> 

-- 
Bernd Ritter
Senior Linux Developer
Tel.: +49 175 534 4534
Mail: ritter-shG/GajIFYqbacvFa/[email protected]

B1 Systems GmbH
Osterfeldstraße 7 / 85088 Vohburg / http://www.b1-systems.de
GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt, HRB 3537

-- 
You received this message because you are subscribed to the Google Groups "openssl-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openssl-users+unsubscribe-MCmKBN63+Bmbup2nOX2J7Q@public.gmane.org
To view this discussion on the web visit https://groups.google.com/a/openssl.org/d/msgid/openssl-users/684bdb98-c74f-4cd4-902c-a07478968c41%40b1-systems.de.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.