Howto: EdgeLock SE050 Plug&Trust MW のビルド済みパッケージのインストールと証明書の取得 (Armadillo-IoT G3)
本 Howto では、 Armadillo IoT ゲートウェイ G3M1-M と Armadillo-X1(一部リビジョンのみ) に搭載されている、
セキュアエレメント SE050 用ミドルウェアを
Armadillo IoT ゲートウェイ G3M1 上で ビルドする方法を紹介します。
SE050 の詳細は、 NXP 社のサイト を参照ください。
コマンド操作は全て Armadillo IoT ゲートウェイ G3M1 上で行います。
OS を buster(debian 10) へバージョンアップ
EdgeLock SE050 Plug&Trust MW は、 Debian 9 (stretch) では使用できません。
Debian 10 (buster) をご利用ください。
以下よりダウンロードできます。
ソフトウェアダウンロード Armadillo-IoT G3
ファイルのダウンロード
- NXP 社のサイト の "TOOL & SOFTWARE" タブをクリックし、
"Embedded Software" → "BSP, Drivers and Middleware" 内
"Plug&Trust MW (02.16.01)" (バージョンは2020年9月23日現在)を
クリックし SE050-PLUG-TRUST-MW.zip をダウンロードしてください。
※ 事前にユーザー登録が必要です。 - ダウンロードしたファイルを Armadillo 上で解凍してください。
この Howto では、root ユーザーが /root/ に解凍した前提で説明を記載します。
ビルド
以下に Armadillo IoT ゲートウェイ G3M1 上でのビルド手順を示します。
必要なパッケージのインストール
ビルドには、cmake と libssl-dev が必要ですのでインストールします。
# apt install cmake # apt install libssl-dev
一部コードを変更
simw-top/scripts/create_cmake_projects.py を一部変更します。
Armadillo 上ですと、 Python の platform.node() の戻り値が "armadillo" になりますので、それに対応します。
284 @classmethod 285 def imx_native_compilation(cls): 286 if 'imx6' in platform.node(): 287 return True 288 if 'imx8' in platform.node(): 289 return True 290 + if 'armadillo' in platform.node(): 291 + return True 292 return False
Armadillo-IoT G3 に搭載される Edgelock SE050 に合わせてコンフィグを変更します。
以下のように "PTMW_Applet" を "SE05X_C" に変更、"PTMW_SE05X_Ver" を追加してください。
628 # i.MX6UL/ULL and i.MX8M Mini EVK 629 if gc.imx_native_compilation() and gc.is_with_el2go(): 630 e = gc.generate_native("imx_native_se050_t1oi2c_openssl_el2go", { 631 "PTMW_Applet": "SE05X_C", 632 "PTMW_SE05X_Ver": "03_XX", 633 "PTMW_SE05X_Auth": "None", 634 "PTMW_SCP": "None",
ビルドの実施
ビルドを実行します。
# cd ~/simw-top root@armadillo:~/simw-top# python scripts/create_cmake_projects.py root@armadillo:~/simw-top# cd ../simw-top_build/imx_native_se050_t1oi2c_openssl_el2go/ root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# cmake --build . root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# make install root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# ldconfig /usr/local/lib
動作確認
SE050 へアクセスするには GPIO 73 を high にする必要があります。
以下にスクリプトの例を記載しますのでご利用ください。
#!/bin/sh GPIO_EXPORT="/sys/class/gpio/export" GPIO_NUM="73" GPIO_DIRECTION="/sys/class/gpio/gpio$GPIO_NUM/direction" GPIO_VALUE="/sys/class/gpio/gpio$GPIO_NUM/value" if [ ! -e $GPIO_VALUE ]; then echo $GPIO_NUM > $GPIO_EXPORT fi echo out > $GPIO_DIRECTION echo 1 > $GPIO_VALUE sleep 0.3 if ! i2cdetect -y 3; then echo "not detect slave addr" echo "NG" fi
サンプル se05x_Minimal を実行します。
# cd ~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go root@armadillo:~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go# bin/se05x_Minimal /dev/i2c-3:0x48
以下のような実行結果が表示されれば成功です。
App :INFO :PlugAndTrust_v02.16.01_20200818 App :INFO :Running bin/se05x_Minimal App :INFO :Using PortName='/dev/i2c-3:0x48' (CLI) sss :INFO :atr (Len=35) 00 A0 00 00 03 96 04 03 E8 00 FE 02 0B 03 E8 08 01 00 00 00 00 64 00 00 0A 4A 43 4F 50 34 20 41 54 50 4F sss :WARN :Communication channel is Plain. sss :WARN :!!!Not recommended for production use.!!! App :INFO :mem=32196 App :INFO :se05x_Minimal Example Success !!!... App :INFO :ex_sss Finished
これ以外にも、 ~/simw-top_build/imx_native_se050_t1oi2c_openssl_el2go/bin/
には様々なデモが用意されています。
~/simw-top/doc/demos/index.html に説明がありますので、参考にしてください。