Rev 1.20.00

Renesas R5F565NE(CK-RX65N)用サンプル(e2studio RX65N_gnu_udp_client_AES_uselib)の説明（e2studio Version:2024-04 / Azure RTOS Version 6.2.1 rel-rx-2.0.0)
１． Sample の免責について
・Sample に関する Tel/Fax でのご質問に関してはお受けできません。ただし、メールでのご質問に関してはお答えするよう努力はしますが、都合によりお答えできない場合もありますので予めご了承願います。
・Sample ソフトの不具合が発見された場合の対応義務はありません。また、この関連ソフトの使用方法に関する質問の回答義務もありませんので承知の上ご利用下さい。
・Sample ソフトは、無保証で提供されているものであり、その適用可能性も含めて，いかなる保証も行いません。また，本ソフトウェアの利用により直接的または間接的に生じたいかなる損害に関しても，その責任を負わないものとします。

２．サンプルのプロジェクト名
ワークスペース名概要

プロジェクト名Azure_sample_gnu_CK

有線 LAN 接続した DHCP と RX65N_gnu_udp_client_AES_uselib
UDP 通信のサンプル
Azure RTOS モードで動作
セキュリティ API
Crypto ドライバーAES-CBC NetX DHCP Clientを使用したサンプル（暗号・ (dhcp_client)
復号）
UDP 通信(Client)(nx_udp_socket_.......)
暗号・復号(AES-CBC)(NX_CRYPTO_ENCRYPT)(NX_CRYPTO_DECRYPT)

統合開発環境Renesas e2studio(Version 2024-04)
Azure RTOS (Version 6.2.1 rel-rx 2.0.0)
GCC for Renesas RX(Version 8.3.0.202305)
テキストファイル・エンコード(sjis)
ハード環境
CK-RX65N (ルネサス製)

1

３．Tera Term Pro のインストール①「teraterm-4.106.exe」を検索してダウンロードする。
②PC にインストールし実行する③シリアルポートの設定
COM 番号は、PC 側でシリアル通信可能な番号を指定する。
115200BPS
8bit
none
1bit
noneの仕様にする。

④端末の設定USB シリアルコンバータ使用時に CR コードがカットされる
設定の場合は、受信：LF にして下さい。

赤枠の設定にする。

2４．動作構成

USB 接続（FINE デバッガ）

LED3 100ms 毎点滅

TeraTerm
UDP_IP_AES_Open
SSL.exe(server)

RS232C 送信（表示文字）
AES 暗号文＜CK-RX65N 基板＞
クライアント側LAN ハブルータへ

LAN ハブルータへ

LAN 通信＜UDP_IP_AES_OpenSSL.exe の処理＞
【Plain mode】
１．平文を受信する。
２．受信した平文をそのまま送信する。

＜RX65N_gnu_udp_client_AES_uselib の処理＞
【Plain mode】
１．平文を送信する。
２．受信した平文を TeraTerm に表示する。

【AES-CBC mode】
１．暗号文を受信する。
２．受信した暗号文を復号して表示する。
３．復号文を暗号化した文章を送信する。

【AES-CBC mode】
１．AES(CBC)暗号化した文章を送信する。
２．受信した暗号文を復号して TeraTerm に表示する。

3Debugger
E2 Lite(Fine)
USB(Vbus)+5Vを基板に供給

異常 LED6 点滅
正常 LED3 点滅

USB TO SERIAL
SCIx

ジャンパ
J2
J15
J16
J21
J22J11

有線 LAN 接続

備考
ショートオープン
１－２ショート
ショートオープン
オープン

Current Measurement point for MCU
Select debugger comms mode

DEBUG
Enable USB boot mode
Select USB boot mode power supply method
Configures the MCU for normal boot m ode4５．
「RX65N_gnu_udp_client_AES_uselib」サンプルの説明
５－１．フォルダ構成とファイル名【 <ホルダ名>を示す】<Azure_sample_gnu_CK><rx_gnu_filex_lib>
AzureRTOS FileX ライブラリ作成用ホルダ<rx_gnu_netxduo_addons_lib> AzureRTOS NetX Duo Addons ライブラリ作成用ホルダ<rx_gnu_netxduo_lib>
AzureRTOS NetX Duo ライブラリ作成用ホルダ<rx_gnu_threadx_lib>
AzureRTOS ThredX ライブラリ作成用ホルダ<RX65N_gnu_udp_client_AE
S_uselib><HardwareDebug>

<lib>

<src>

<trash>RX65N_gnu_udp_client_A
ES_uselib.scfg
その他

DHCP / UDP 通信 / AES-CBC(暗号・復号)
サンプルプロジェクト
RX65N_gnu_udp_client_AE ELF ファイル、JTAG で使用
S_uselib.elf
RX65N_gnu_udp_client_AE MAP ファイル、アドレス情報
S_uselib.map
RX65N_gnu_udp_client_AE モトローラーHEX ファイル
S_uselib.mot
その他
自動生成ファイル
<filex>
FileX(全Ｃソースはビルド除外)<netxduo>
NetX Duo(全Ｃソースはビルド除外)<netxduo_addons>
NetX Duo Addons(全Ｃソースはビルド除外)<thredx>
ThreadX(全Ｃソースはビルド除外)
librx_gnu_filex_lib.a
FileX ライブラリ
librx_gnu_netxduo_addons_ NetX Duo Addons ライブラリ
lib.a
librx_gnu_netxduo_lib.a
NetX ライブラリ
ibrx_gnu_threadx_lib.aThredX ライブラリ<rtos_config>
スマートコンフィグレータにより作成<smc_gen>
スマートコンフィグレータにより作成<rtos_skeleton>|dhcp_fixed_entry.c
DHCP スレッド処理のソース|udp_aes_thread_entry.c UDP スレッド処理のソース<Azure_aes>
AES-CBC
暗号・復号処理のソース|aes.c |aes.h
demo_printf.c
コンソール入出力処理のソース
demo_printf.h
demo_printf.c のヘッダー
hardware_setup.c
周辺 I/O デバイス初期化ソース
hardware_setup.hhardware_setup.c のヘッダー
nx_driver_rx_fit.c
Renesas RX FIT driver. Control
nx_driver_rx_fit.h
nx_driver_rx_fit.c のヘッダー
sample_netx_duo_ping.c
NetX 等初期化サンプルソース
過去変更した<src>等のごみ箱
スマートコンフィグレータの管理ファイル
自動生成ファイル
5１）MAC アドレスの定義場所

84 行

nx_driver_rx_fit.c
tatic UCHAR _netx_driver_rx_fit_mac_address[] ={0x74,0x90,0x50,0x10,0xa5,0x36}; // MAC アドレス6

５－２．Macro Defines の説明
Macro NameNX_ENABLE_DHCP

TX_INCLUDE_USER_DEFINE_FILE

値
説明
0 DHCP Client Disable◎ソースコードに直接 IP アドレスを記述
sample_netx_duo_ping.c：status = nx_ip_create(&ip_0,"NetX IP Instance 0",#if (NX_ENABLE_DHCP == 1)
IP_ADDRESS(0,0,0,0),
IP_ADDRESS(255,255,255,0),#elseIP_ADDRESS(192,168,21,5), // 固定 IP アドレス
IP_ADDRESS(255,255,255,0), // サブネットマスク#endif&pool_0,
nx_driver_rx_fit,(UCHAR*)ip_thread_stack,sizeof(ip_thread_stack),
1);
1 DHCP Client Enable「tx_user.h」を有効にする

NX_INCLUDE_USER_DEFINE_FILE「nx_user.h」を有効にする

FX_INCLUDE_USER_DEFINE_FILE「fx_user.h」を有効にする

NXD_MQTT_CLOUD_ENABLE

MQTT メッセージングプロトコルを有効にする

NX_SECURE_ENABLE

MQTT クライアントは TLS サポート付きで構築される
多くのコールバック フックを有効にする

NX_ENABLE_EXTENDED_NOTIFY_SUPPORT
NX_ENABLE_IP_PACKET_FILTERIP パケットを有効にする

FLATCC_NO_ASSERTNX_AZURE_IOT_LOG_LEVELFLATCC をアサートしない
0123

NX_AZURE ログ関数を使用しない
LogError(...)を使用する
LogError(...) / LogInfo(...)を使用する
LogError(...) / LogInfo(...) / LogDebug(...)を使用する

7

５－３．サンプルの動作説明（基板側 CK-RX65N ）１）DHCP 無効時（NX_ENABLE_DHCP = 0）
＜DHCP FIXED Thread＞
Term 画面＜１＞「"Driver INITIALIZE_DONE...”」＜２＞「"<Wait for IP address acquisition>..”」＜３＞「"LINK Status Check...”」＜成功画面＞IP アドレス確立により、基板上の LED3（緑色）を 100msec 毎に点滅

固定 IP アドレス

UDP ポート番号＜失敗画面＞IP アドレス未確立により、基板上の LED6（赤色）を 100msec 毎に点滅

失敗8２）DHCP 有効時（NX_ENABLE_DHCP = 1）
＜DHCP FIXED Thread＞
Term 画面＜１＞「"Driver INITIALIZE_DONE...”」＜２＞「"<Wait for IP address acquisition>..”」＜３＞「"LINK Status Check...”」＜４＞「" DHCP In Progress...”」＜５＞「" Wait until address resolved...”」＜成功画面＞IP アドレス確立により、基板上の LED3（緑色）を 100msec 毎に点滅取得した IP アドレス

UDP ポート番号＜失敗画面＞IP アドレス未確立により、基板上の LED6（赤色）を 100msec 毎に点滅

失敗9３）UDP/IP 送受信＜UDP AES Thread＞

表示項目
AES_mode[x]表示内容
説明
PLAIN送受信モードの指定
CBC◎変数のフラグにより指定
aes.c:：int AES_crypto_mode;
0 ： PLAIN // 平文モード
1 ：CBC // AES-CBC モード 暗号・復号

KeyLength[x]

128
192
256

DEST_IP[xxx.xxxx.xxxx.xxxx] 固定

AES-CBC モード時の Key ビット時の指定◎変数の数値により指定
aes.c:：int AES_crypto_bit;
128 ：Key ビット長が 128bit
192 ：Key ビット長が 192bit
256 ：Key ビット長が 256bit
送信先(PC 側)IP アドレス
◎define にて指定
udp_aes_thread_entry.c：#define DEST_IP IP_ADDRESS(192,168,xx,xx)

10

５－４．Windows PC 側のテストプログラムで動作確認（PLAIN（平文）モード）
１）「UDP_IP_AES_OpenSSL.exe」を起動する。
（各モード共通）
プログラム場所【¥_PC_Test_OpenSSL】サンプルの解凍ホルダ「UDP_IP_AES_OpenSSL.exe」を起動

２）「UDP_IP_AES_OpenSSL」の各項目を設定して接続する。

PC 側の IP アドレス
自動検出

PC 側の port
固定

①DHCP で取得した
基板側 IP アドレスをセット③Plain モード選択

④クリック
接続を確認

11

②基板側 Port
番号をセット３）基板側の各項目の確認と設定。
表示項目
AES_mode[PLAIN]

DEST_IP[192.168.21.50]

説明
送受信モードの指定◎変数のフラグにより指定
aes.c:：int AES_crypto_mode = PLAIN; // 0=PLAIN
送信先(PC 側)IP アドレス
◎define にて指定
udp_aes_thread_entry.c：#define DEST_IP IP_ADDRESS(192,168,21,50)

４）基板側から PC(server) 側へ平文テキストを送受信する。

①何らかの Key を Push(1)PC への送信データ(2) PC からの受信データ☆受信処理が失敗した場合は「Ctrl+C」Key-Push で中断する。

12

５）基板側の原文保存場所（各モード共通）
モジュール名
udp_aes_thread_entry.c

変数名static UCHAR *src_str = { // テスト用原文"This is a very important secret message! ""I will use it for encryption and decryption testing ""in the future. by Aone Corporation "};６）「UDP_IP_AES_OpenSSL」側の送受信を確認する。

(1)「基板」側からの受信データ(2)「基板」側への送信データ☆受信データをそのまま送信します。
（ループバック）

13

７）「UDP_IP_AES_OpenSSL」その他の操作（各モード共通）☑「Monitor」エリアに送受信ダンプ表示「Monitor」表示を消去

８）UDP_IP-Port を「切断」する。
（各モード共通）

①クリック

切断を確認

14

５－５．Windows PC 側のテストプログラムで動作確認（AES-CBC モード）
１）
「UDP_IP_AES_OpenSSL.exe」を起動する。
２）「UDP_IP_AES_OpenSSL」の各項目を設定して接続する。

共通鍵の保存ファイル

初期ベクタ値の保存ファイル①CBC モード選択②Key 長の選択
128 / 192 / 256③クリック

登録されている「共通鍵」と「初期ベクタ値」

接続を確認

３）
「AES_KEY.txt」「AES_IV.txt」の説明「AES_KEY.txt」共通鍵テキストファイル// default aes_common_key 共通鍵 128bit | 192bit | 256bit// コメント行は、//のみの使用にして下さい。
0x11,0x11,0x11,0x11,0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, // 128bit0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66,// ↑ + 192bit
0x77,0x77,0x77,0x77,0x88,0x88,0x88,0x88,// ↑ + 256bit☆共通鍵を変更する場合は、基板側と同等の鍵を適当なエディタで変更する。

「AES_IV.txt」初期ベクタ値テキストファイル// default aes_initial_vect 初期化ベクタ// コメント行は、//のみの使用にして下さい。
0x01,0x3B,0x01,0x02,0xC7,0xD6,0xF2,0x1D,0x9E,0x18,0x6F,0x84,0x54,0x82,0x0A,0xDB☆初期ベクタ値を変更する場合は、基板側と同等の初期ベクタ値を適当なエディタで変更する。

15

４）基板側の各項目の確認と設定。
表示項目
AES_mode[CBC]KeyLength[128]

DEST_IP[192.168.21.50]

説明
送受信モードの指定◎変数のフラグにより指定
aes.c:：int AES_crypto_mode = CBC; // 1=CBC
AES-CBC モード時の Key ビット時の指定◎変数の数値により指定
aes.c:：int AES_crypto_bit = 128;
送信先(PC 側)IP アドレス
◎define にて指定
udp_aes_thread_entry.c：#define DEST_IP IP_ADDRESS(192,168,21,50)

共通鍵データの保存モジュールと変数【aes.c】
uint8_t AES_key[32] ={ // default aes_common_key 共通鍵 128bit | 192bit | 256bit
0x11,0x11,0x11,0x11,0x22,0x22,0x22,0x22,0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, // 128bit
0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66,// ↑ + 192bit
0x77,0x77,0x77,0x77,0x88,0x88,0x88,0x88,// ↑ + 256bit};
初期ベクタ値データの保存モジュールと変数【aes.c】
uint8_t AES_iv[16] = { // default aes_initial_vect 初期化ベクタ
0x01,0x3B,0x01,0x02,0xC7,0xD6,0xF2,0x1D,0x9E,0x18,0x6F,0x84,0x54,0x82,0x0A,0xDB};

16５）基板側から PC(server) 側へ AES-CBC 暗号テキストを送信する。

①何らかの Key を Push(1)基板側に保存してある原文のダンプ表示(2) 原 文 を 暗 号 化 し てPC(server)側に送信した暗号文のダンプ表示(3)PC(server)が受信した暗号文を復号した文章を PC（server）側で暗号化した暗号文を受信したダンプ表示(4)受信した PC(server)からの暗号文を復号化した複合文のダンプ表示☆受信処理が失敗した場合は「Ctrl+C」Key-Push で中断する。
①「(1)PlainText」と「(4)DecryptText」が同等の場合、基板側と PC 側が同等な復号処理（デコード）であることの実証になる。
②「(2)Send EncrptText」と「(3)Recv EncrptText」が同等の場合、基板側と PC 側が同等な暗号処理（エンコード）であることの実証になる。
17

６）「UDP_IP_AES_OpenSSL」側の送受信を確認する。

(1)基板側から受信した暗号文のダンプ表示(2)受信した暗号文を復号化した復号文のダンプ表示(3)復号化した復号文を暗号化して基板側に送信した暗号文のダンプ表示①「(1)Receive encode_data from client」と「(3)Send encode_data to client」が同等の場合、基板側と PC 側が同等な暗号処理（エンコード）であることの実証になる。
②「(2)Create decode_data」と「基板」側の「(4)DecryptText 」が同等の場合、基板側と PC 側が同等な復号処理（デコード）であることの実証になる。

18

６．注意事項
・本文書の著作権は、エーワン（株）が保有します。
・本文書を無断での転載は一切禁止します。
・本文書に記載されている内容についての質問やサポートはお受けすることが出来ません。
・本文章に関して、ルネサス エレクトロニクス社への問い合わせは御遠慮願います。
・本文書の内容に従い、使用した結果、損害が発生しても、弊社では一切の責任は負わないものとします。
・本文書の内容に関して、万全を期して作成しましたが、ご不審な点、誤りなどの点がありましたら弊社までご連絡くだされば幸いです。
・本文書の内容は、予告なしに変更されることがあります。
７．商標
・e2studio・RX65N は、ルネサス エレクトロニクス株式会社の登録商標または商品名称です。
・CK-RX65N は、ルネサス エレクトロニクス株式会社の商品名です。
・その他の会社名、製品名は、各社の登録商標または商標です。
８．参考文献・「RX65N ユーザーズマニュアル ハードウェア編」 ルネサス エレクトロニクス株式会社
・「e2studio ユーザーズマニュアル 入門ガイド」
ルネサス エレクトロニクス株式会社
・「AzureRTOS 」
マイクロソフト株式会社
・ルネサス エレクトロニクス株式会社提供のサンプル集
・その他〒486-0852
愛知県春日井市下市場町 6-9-20
エーワン株式会社

https://www.aone.co.jp
19