Howto

EdgeLock SE050 Plug&Trust MW ビルド手順 (Armadillo-IoT G3)

plug-and-trust ライブラリ、se05x-GetInfo などのツール群、アットマークテクノが開発している se050 向けツール群の Armadillo 向けのビルド済みパッケージが存在します。以下を参考にしてください。

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

ファイルのダウンロード

  1. NXP 社のサイト の "TOOL & SOFTWARE" タブをクリックし、
    "Embedded Software" → "BSP, Drivers and Middleware" 内
    "Plug&Trust MW (02.16.01)" (バージョンは2020年9月23日現在)を
    クリックし SE050-PLUG-TRUST-MW.zip をダウンロードしてください。
    ※ 事前にユーザー登録が必要です。
  2. ダウンロードしたファイルを 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 に説明がありますので、参考にしてください。