[PATCH] Use EVP_MAC interface for Poly1305 if supported.

Chris Rapier rapier at psc.edu
Tue Oct 25 02:53:37 AEDT 2022


On 10/22/22 6:49 PM, Darren Tucker wrote:
> On Sat, 22 Oct 2022 at 07:53, Chris Rapier <rapier at psc.edu> wrote:
> [...]
>> I normally wouldn't clutter up the code with library version specific
>> ifdefs but it might be worth considering.
> 
> Instead of ifdefs, you can check if the MAC init succeeded before
> calling the EVP functions, else fall back to the existing code path.

As pointed out, this is only in OSSL3. That said, for hpnssh we've been 
looking at extracting the necessary code/assembly from OSSL3 and 
incorporating it into our code base to provide this functionality. 
Maybe. Depends on the complexity of the task.
>> +       /* fetch the mac and create and initialize the context */
>> +       if ((mac = EVP_MAC_fetch(NULL, "POLY1305", NULL)) == NULL ||
>> +           (poly_ctx = EVP_MAC_CTX_new(mac)) == NULL ||
> 
> You're initializing the MAC context on every call to this function.
> If you initialize the context once, cache it (say, as a static) and
> reuse it does it go any faster?

That's a fine question and one I hope to explore today. I also noticed 
that I'm neglecting to free the the EVP_MAC and the EVP_MAC_CTX. Kind of 
jumped the gun on that.

Chris


More information about the openssh-unix-dev mailing list