| #
e429c45f |
| 10-Jan-2024 |
Clement Faure <clement.faure@nxp.com> |
core: crypto: sm3: fix undefined behavior on right shifting operation
In the expression ROTL(T[j], j), with j=0, we right shift by more than 31 bits (32 in this case). This behavior is undefined acc
core: crypto: sm3: fix undefined behavior on right shifting operation
In the expression ROTL(T[j], j), with j=0, we right shift by more than 31 bits (32 in this case). This behavior is undefined according to the C99 standard:
6.5.7 Bitwise shift operators The integer promotions are performed on each of the operands. The type of the result is that of the promoted left operand. If the value of the right operand is negative or is greater than or equal to the width of the promoted left operand, the behavior is undefined.
Skip the shift operation if the shift value is 0.
Signed-off-by: Clement Faure <clement.faure@nxp.com> Reviewed-by: Etienne Carriere <etienne.carriere@foss.st.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| #
664463b3 |
| 27-Dec-2022 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: use SM3 crypto accelerated function
Uses the recently provided accelerated SM3 function in the SM3 implementation.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens
core: use SM3 crypto accelerated function
Uses the recently provided accelerated SM3 function in the SM3 implementation.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| #
f0ead748 |
| 16-Jun-2020 |
Jerome Forissier <jerome@forissier.org> |
core: crypto: fix invalid SM3 output with Clang -Os
Several crypto tests fail when OP-TEE is built with Clang in non-debug mode, more precisely with -Os. xtest numbers 4001, 4002, 4006 and 4014 are
core: crypto: fix invalid SM3 output with Clang -Os
Several crypto tests fail when OP-TEE is built with Clang in non-debug mode, more precisely with -Os. xtest numbers 4001, 4002, 4006 and 4014 are impacted.
The root cause is the shift operations in the ROTL(x, n) are undefined when n > 32 because the values to shift are uint32_t, but the macro is used with 0 <= n < 64.
By masking n with 0x1F (thus implementing a modulo 32), we continue rotating the bits when n >= 32.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@epam.com>
show more ...
|
| #
47645577 |
| 13-Dec-2019 |
Jerome Forissier <jerome@forissier.org> |
core: crypto: add support for SM3
Adds support for the SM3 cryptographic hash function [1] using the API defined in the GlobalPlatform TEE Internal Core API v1.2, as well as the HMAC based on this h
core: crypto: add support for SM3
Adds support for the SM3 cryptographic hash function [1] using the API defined in the GlobalPlatform TEE Internal Core API v1.2, as well as the HMAC based on this hash.
This implementation is based on code published on Gitlab [2]. See commit ade6f848e084 ("core: crypto: add support for SM4") for details.
[1] https://tools.ietf.org/html/draft-sca-cfrg-sm3-02 [2] https://gitlab.com/otpfree/sm234
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|