On 06/15 11:00:07, Github ODP bot wrote:
> From: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>
> 
> OpenSSL 1.1.x has changed HMAC API in an incompatible way. Let's adapt
> to it by providing version-dependent wrapper around HMAC calculation.

I am using OpenSSL 1.1.x on some machines.

Reviewed-and-tested-by: Brian Brooks <brian.bro...@arm.com>

> Signed-off-by: Dmitry Eremin-Solenikov <dmitry.ereminsoleni...@linaro.org>
> ---
> /** Email created from pull request 51 (lumag:hmac-1.1.x)
>  ** https://github.com/Linaro/odp/pull/51
>  ** Patch: https://github.com/Linaro/odp/pull/51.patch
>  ** Base sha: 4f97e500a097928e308a415c32a88465adc5f5cc
>  ** Merge commit sha: 31e0b980e18e6b8761600e5ab0f4aadbf88bdbac
>  **/
>  platform/linux-generic/odp_crypto.c | 43 
> +++++++++++++++++++++++++++++--------
>  1 file changed, 34 insertions(+), 9 deletions(-)
> 
> diff --git a/platform/linux-generic/odp_crypto.c 
> b/platform/linux-generic/odp_crypto.c
> index 6fc1907d..68fc5658 100644
> --- a/platform/linux-generic/odp_crypto.c
> +++ b/platform/linux-generic/odp_crypto.c
> @@ -128,20 +128,18 @@ null_crypto_routine(odp_crypto_op_param_t *param 
> ODP_UNUSED,
>  }
>  
>  static
> -void packet_hmac(odp_crypto_op_param_t *param,
> -              odp_crypto_generic_session_t *session,
> -              uint8_t *hash)
> +void packet_hmac_calculate(HMAC_CTX *ctx,
> +                        odp_crypto_op_param_t *param,
> +                        odp_crypto_generic_session_t *session,
> +                        uint8_t *hash)
>  {
>       odp_packet_t pkt = param->out_pkt;
>       uint32_t offset = param->auth_range.offset;
>       uint32_t len   = param->auth_range.length;
> -     HMAC_CTX ctx;
>  
>       ODP_ASSERT(offset + len <= odp_packet_len(pkt));
>  
> -     /* Hash it */
> -     HMAC_CTX_init(&ctx);
> -     HMAC_Init_ex(&ctx,
> +     HMAC_Init_ex(ctx,
>                    session->auth.key,
>                    session->auth.key_length,
>                    session->auth.evp_md,
> @@ -152,14 +150,41 @@ void packet_hmac(odp_crypto_op_param_t *param,
>               void *mapaddr = odp_packet_offset(pkt, offset, &seglen, NULL);
>               uint32_t maclen = len > seglen ? seglen : len;
>  
> -             HMAC_Update(&ctx, mapaddr, maclen);
> +             HMAC_Update(ctx, mapaddr, maclen);
>               offset  += maclen;
>               len     -= maclen;
>       }
>  
> -     HMAC_Final(&ctx, hash, NULL);
> +     HMAC_Final(ctx, hash, NULL);
> +}
> +
> +#if OPENSSL_VERSION_NUMBER < 0x10100000L
> +static
> +void packet_hmac(odp_crypto_op_param_t *param,
> +              odp_crypto_generic_session_t *session,
> +              uint8_t *hash)
> +{
> +     HMAC_CTX ctx;
> +
> +     /* Hash it */
> +     HMAC_CTX_init(&ctx);
> +     packet_hmac_calculate(&ctx, param, session, hash);
>       HMAC_CTX_cleanup(&ctx);
>  }
> +#else
> +static
> +void packet_hmac(odp_crypto_op_param_t *param,
> +              odp_crypto_generic_session_t *session,
> +              uint8_t *hash)
> +{
> +     HMAC_CTX *ctx;
> +
> +     /* Hash it */
> +     ctx = HMAC_CTX_new();
> +     packet_hmac_calculate(ctx, param, session, hash);
> +     HMAC_CTX_free(ctx);
> +}
> +#endif
>  
>  static
>  odp_crypto_alg_err_t auth_gen(odp_crypto_op_param_t *param,
> 

Reply via email to