Skip to content

Commit

Permalink
M467: Support Crypto ECC H/W in full-module replacement
Browse files Browse the repository at this point in the history
1.  Replace ecp.c full-module, and other ec modules dependent on ecp.c (ecdh.c/ecdsa.c/ecjpake.c) will improve followingly.
2.  Recover from Crypto ECC H/W failure:
    (1) Enable timed-out wait to escape from ECC H/W trap
    (2) On ECC H/W timeout, stop this ECC H/W operation
    (3) Fall back to S/W implementation on failure
3.  Support Short Weierstrass curve
4.  Support Montgomery curve
    Montgomery curve has the form: B y^2 = x^3 + A x^2 + x
    (1) In S/W impl, A is used as (A + 2) / 4. Figure out its original value for engine.
        https://github.com/ARMmbed/mbed-os/blob/2eb06e76208588afc6cb7580a8dd64c5429a10ce/connectivity/mbedtls/include/mbedtls/ecp.h#L219-L220
    (2) In S/W impl, B is unused. Actually, B is 1 for Curve25519/Curve448 and needs to configure to engine.
        https://github.com/ARMmbed/mbed-os/blob/2eb06e76208588afc6cb7580a8dd64c5429a10ce/connectivity/mbedtls/include/mbedtls/ecp.h#L221-L222
    (3) In S/W impl, y-coord is absent, but engine needs it. Deduce it from x-coord following:
        https://tools.ietf.org/id/draft-jivsov-ecc-compact-05.html
        https://www.rieselprime.de/ziki/Modular_square_root
    NOTE: Fix Curve448 has wrong order value
          Mbed-TLS/mbedtls#5811
  • Loading branch information
ccli8 committed Jun 17, 2022
1 parent 9fb2583 commit 1d65962
Show file tree
Hide file tree
Showing 10 changed files with 6,449 additions and 526 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@ target_include_directories(mbed-mbedtls
target_sources(mbed-mbedtls
INTERFACE
aes/aes_alt.c
ecp/crypto_ecc_hw.c
ecp/ecp_alt.c
ecp/ecp_curves_alt.c
ecp/ecp_helper.c
ecp/ecp_internal_alt.c
rsa/crypto_rsa_hw.c
rsa/rsa_alt.c
Expand Down
Loading

0 comments on commit 1d65962

Please sign in to comment.