Skip to content
  • Alexandru Gagniuc's avatar
    image: rsa: Move padding_algos to linker lists · de41f0ee
    Alexandru Gagniuc authored and Tom Rini's avatar Tom Rini committed
    We are not guaranteed to have the padding_pkcs_15_verify symbol since
    commit 92c960bc ("lib: rsa: Remove #ifdefs from rsa.h"), and
    commit 61416fe9 ("Kconfig: FIT_SIGNATURE should not select RSA_VERIFY")
    
    The padding_algos only make sense with RSA verification, which can now
    be disabled in lieu of ECDSA. In fact this will lead to build failures
    because of the missing symbol mentioned earlier.
    
    To resolve this, move the padding_algos to a linker list, with
    declarations moved to rsa_verify.c. This is consistent with commit
    6909edb4
    
     ("image: rsa: Move verification algorithm to a linker list")
    
    One could argue that the added #ifdef USE_HOSTCC is ugly, and should
    be hidden within the U_BOOT_PADDING_ALGO() macro. However, this would
    be inconsistent with the "cryptos" list. This logic for was not
    previously explored:
    
    Without knowledge of the U_BOOT_PADDING_ALGO() macro, its use is
    similar to something being declared. However, should #ifndef
    USE_HOSTCC be part of the macro, it would not be obvious that it
    behaves differently on host code and target code. Having the #ifndef
    outside the macro makes this obvious.
    
    Also, the #ifdef is not always necessary. For example ecda-verify
    makes use of U_BOOT_CRYPTO_ALGO() without any accompanying #ifdefs.
    The fundamental issue is a lack of separation of host and target code
    in rsa_verify. Therefore, the declaration of a padding algo with the
    external #ifdef is more readable and consistent.
    
    Signed-off-by: default avatarAlexandru Gagniuc <mr.nuke.me@gmail.com>
    de41f0ee