Kiran G
Kiran G

Reputation: 117

awscrt python module throwing 'undefined symbol: EVP_aead_aes_128_gcm_tls13' error in ARM yocto

I have a custom ARM gateway on which I am trying to run a greengrass v2 component. This requires python awsiotsdk. But when I import the awsiotsdk I am getting this error:

ImportError: /usr/lib/python3.7/site-packages/_awscrt.cpython-37m-arm-linux-gnueabi.so: undefined symbol: EVP_aead_aes_128_gcm_tls13

When I ran the same component in an x86 environment with the same awsiotsdk version, I did not get the error.

This is the difference I noticed:

ARM GATEWAY

bash-5.0# strings   /usr/lib/python3.7/site-packages/_awscrt.cpython-37m-arm-linux-gnueabi.so    | grep -i EVP_aead_aes_128_gcm_tls13
    EVP_aead_aes_128_gcm_tls13
    EVP_aead_aes_128_gcm_tls13
    EVP_aead_aes_128_gcm_tls13
    bash-5.0# 

X86 LAPTOP

    bash-4.2# strings   /usr/local/lib64/python3.7/site-packages/_awscrt.cpython-37m-x86_64-linux-gnu.so    | grep -i EVP_aead_aes_128_gcm_tls13
    EVP_aead_aes_128_gcm_tls13
    EVP_aead_aes_128_gcm_tls13_storage
    EVP_aead_aes_128_gcm_tls13_once_bss_get
    EVP_aead_aes_128_gcm_tls13_storage_bss_get
    EVP_aead_aes_128_gcm_tls13_do_init
    EVP_aead_aes_128_gcm_tls13_init
    EVP_aead_aes_128_gcm_tls13_once
    EVP_aead_aes_128_gcm_tls13_init
    EVP_aead_aes_128_gcm_tls13_storage
    EVP_aead_aes_128_gcm_tls13_once
    EVP_aead_aes_128_gcm_tls13
    bash-4.2# 

Btw the awscrt module in the gateway was compiled during the "pip install" step. So I thought maybe it has to do with openssl? Maybe the gateway does not not support TLS1.3. But it looks like the gateway does support TLS1.3 .

bash-5.0# openssl version
OpenSSL 1.1.1g  21 Apr 2020
bash-5.0#

How to resolve this?

Upvotes: 0

Views: 279

Answers (1)

Kiran G
Kiran G

Reputation: 117

I could confirm that symbols like "EVP_aead_aes_128_gcm_tls13" is part of the "awscrt" python module and they are taken from boringssl project.

In my case somehow the "setup.py" build from inside the gateway failed to include this functionality. But when I built awscrt with the yocto cross-toolchain in my laptop, it worked.

Upvotes: 0

Related Questions