Skip to content

Commit

Permalink
[CONFIRMED] RX65N RSK (Ether) with no tests errors.
Browse files Browse the repository at this point in the history
[UPDATED] RX65N RSK (Ether) aws_pkcs11_pal.c data storing to FLASH ROM.

Signed-off-by: SheltyDog <hiroki.ishiguro.fv@renesas.com>
  • Loading branch information
HirokiIshiguro committed Dec 15, 2018
1 parent 6379d06 commit 7e03502
Show file tree
Hide file tree
Showing 6 changed files with 352 additions and 46 deletions.
93 changes: 89 additions & 4 deletions demos/renesas/readme.txt
Original file line number Diff line number Diff line change
Expand Up @@ -347,11 +347,11 @@ Board: Renesas Starter Kit+ for RX65N-2MB
[en] https://www.renesas.com/us/en/products/software-tools/boards-and-kits/renesas-starter-kits/renesas-starter-kitplus-for-rx65n-2mb.html
[ja] https://www.renesas.com/jp/ja/products/software-tools/boards-and-kits/renesas-starter-kits/renesas-starter-kitplus-for-rx65n-2mb.html

Compiler: CC-RX V2.08 (you need non-expired evaluation license or product license to build Amazon FreeRTOS)
Compiler: CC-RX V3.00 (you need non-expired evaluation license or product license to build Amazon FreeRTOS)
[en] https://www.renesas.com/us/en/products/software-tools/tools/compiler-assembler/compiler-package-for-rx-family-e2studio.html
[ja] https://www.renesas.com/jp/ja/products/software-tools/tools/compiler-assembler/compiler-package-for-rx-family-e2studio.html

IDE: e2 studio V7.1.0
IDE: e2 studio V7.2.0
[en] https://www.renesas.com/us/en/products/software-tools/tools/ide/e2studio.html
[ja] https://www.renesas.com/jp/ja/products/software-tools/tools/ide/e2studio.html

Expand Down Expand Up @@ -514,11 +514,11 @@ WIFI Module: Silex SX-ULPGN PMOD
#define clientcredentialWIFI_SSID "Paste Wi-Fi SSID here."
#define clientcredentialWIFI_PASSWORD "Paste Wi-Fi password here."

IDE: CS+ v7.00.00
IDE: CS+ v8.00.00
[en] https://www.renesas.com/en-us/products/software-tools/tools/ide/csplus.html
[ja] https://www.renesas.com/ja-jp/products/software-tools/tools/ide/csplus.html

Smart Configurator v1.4.0 (Standalone for CS+):
Smart Configurator v1.5.0 (Standalone for CS+):
[en] https://www.renesas.com/en-us/products/software-tools/tools/solution-toolkit/smart-configurator.html
[ja] https://www.renesas.com/ja-jp/products/software-tools/tools/solution-toolkit/smart-configurator.html

Expand Down Expand Up @@ -775,6 +775,91 @@ RX65N Envision Kit、RX65N RSK(2MB版/暗号器あり品)をターゲットに
--------------------------------------------------------------------------
■ポーティング記録 ★印が解決すべき課題
--------------------------------------------------------------------------
2018/12/15
 09fox氏が以下2点解析。Amazonからもアドバイスが届いた。
 結果原因を突き止めることができた。
 (1)AFQP_KeyGenerationEcdsaHappyPath
 (2)AFQP_TLS_ConnectEC

 (1)はPKCSの実装がおかしく、Amazon FreeRTOSの期待値と合っていなかったのが原因。
 具体的には、「ラベル + 鍵種」の値毎にハンドルを作っていたところ、
 「ラベル」毎にハンドルを作る(鍵種が異なってもハンドルは同じ)のが正解だった。

 (2)はシェルティのAWSアカウントのテスト用証明書が有効化されていなかったのが原因。
 有効にしたらあっさり通った。

 これで、テスト全件OKとなった。以下コミットの状態でテスト全件OKを確認。
 https://github.com/renesas-rx/amazon-freertos/commit/f9a3ef02655fa0d6735379dd8b1516ff878db612

 残件整理した結果、今週末は以下のように進める。

 - 各種開発環境の更新(e2 studio, CS+, Smart Configurator, CC-RX)
  →RX Driver Packageの更新は見送り。
 - PKCSの実装で、データ保存をRAM上にしているが、フラッシュ上に保存するよう変更
 - ルネサスアメリカ、Amazonからの各種フィードバックを改めて確認
 - WIFIのSSID/PASS、AWSのアカウント情報のProvisioningができるモードを実装する。
  ただしこれは検定用ではなく、RX65N Amazon FreeRTOS対応ボードの初期ファーム用実装。
  なので、ブランチを作ってそちらで機能追加を行う。
 - リリースタグを作って検定に回す
 - v145の適用は週明けから考える

 【PKCSの実装で、データ保存をRAM上にしているが、フラッシュ上に保存するよう変更】

 データフラッシュは、64*512 byte = 32KBある。
 ひとまずその1/4の8KBを2面持ちして電源断対策を施す。
 書き込み用のRAMバッファは同じ容量の8KB用意する。
 フラッシュAPIに用意されているデータフラッシュのブロックサイズと
 ブロック数を表すマクロを使って配列の要素数を決めておく。

 static uint8_t local_storage[60000];
 ↓
 static uint8_t local_storage[(FLASH_DF_BLOCK_SIZE * FLASH_NUM_BLOCKS_DF)/4];

 RX65N Envision Kitの初期ファームのコードから、データフラッシュの電源断対策の
 コードを移植する。具体的には以下3関数。

 static void update_dataflash_data_from_image(void);
 static void update_dataflash_data_mirror_from_image(void);
 static void check_dataflash_area(uint32_t retry_counter);

 さらに、データ構造体も移植し、PKCS用に作り直す。

 typedef struct _pkcs_storage_control_block_sub
 {
uint8_t local_storage[((FLASH_DF_BLOCK_SIZE * FLASH_NUM_BLOCKS_DF)/4)-PKCS_SHA256_LENGTH]; /* RX65N case: 8KB */
 }PKCS_STORAGE_CONTROL_BLOCK_SUB;

 typedef struct _PKCS_CONTROL_BLOCK
 {
PKCS_STORAGE_CONTROL_BLOCK_SUB data;
uint8_t hash_sha256[PKCS_SHA256_LENGTH];
 }PKCS_CONTROL_BLOCK;

 RX65N Envision Kitの初期ファームはルネサスのSHA1ライブラリを使っているので、
 こちらではmbed TLSのSHA256を使うよう、各種定義やコードを変更していく。

 以下コードフラッシュにデータを設置する必要がある。

 R_ATTRIB_SECTION_CHANGE(C, _PKCS11_STORAGE, 1)
 static const PKCS_CONTROL_BLOCK pkcs_control_block_data = {PKCS_CONTROL_BLOCK_INITIAL_DATA};
 R_ATTRIB_SECTION_CHANGE_END

 R_ATTRIB_SECTION_CHANGE(C, _PKCS11_STORAGE_MIRROR, 1)
 static const PKCS_CONTROL_BLOCK pkcs_control_block_data_mirror = {PKCS_CONTROL_BLOCK_INITIAL_DATA};
 R_ATTRIB_SECTION_CHANGE_END

 が、r_compiler.h の コンパイラ差分吸収マクロ群に、セクションC用の
 R_ATTRIB_SECTION_CHANGE()が無かったので追加。

 #define _R_ATTRIB_SECTION_CHANGE_C1(section_tag) __R_ATTRIB_SECTION_CHANGE_V(C, C##section_tag) /* The CC-RX adds postfix '_1' automatically */
 #define _R_ATTRIB_SECTION_CHANGE_C2(section_tag) __R_ATTRIB_SECTION_CHANGE_V(C, C##section_tag) /* The CC-RX adds postfix '_2' automatically */
 #define _R_ATTRIB_SECTION_CHANGE_C4(section_tag) __R_ATTRIB_SECTION_CHANGE_V(C, C##section_tag) /* The CC-RX does not add postfix '_4' */

 GCC側も同じ法則で追加。IARは落ち着いたら対応しよう。

 ここまでで、テスト全件流してみる。問題なし。
 一旦コードを登録する。

2018/12/01
 引き続きテスト環境の調整。
 平日に別メンバーが進めた進捗を確認。
Expand Down
5 changes: 3 additions & 2 deletions demos/renesas/rx65n-rsk/ccrx-e2studio/.cproject
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
</storageModule>
<storageModule moduleId="com.renesas.cdt.managedbuild.core.toolchainInfo">
<option id="toolchain.id" value="Renesas_RXC"/>
<option id="toolchain.version" value="v2.08.00"/>
<option id="toolchain.version" value="v3.00.00"/>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="mot" artifactName="aws_demos" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="Debug on hardware" id="com.renesas.cdt.managedbuild.renesas.ccrx.hardwaredebug.configuration.216582545" name="HardwareDebug" parent="com.renesas.cdt.managedbuild.renesas.ccrx.hardwaredebug.configuration">
Expand Down Expand Up @@ -99,6 +99,7 @@
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.preInclude.1309427309" name="コンパイル単位の先頭にインクルードするファイル" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.preInclude" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="&quot;implicitlyinclude.h&quot;"/>
</option>
<option id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.optimize.508751446" name="最適化レベル" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.optimize" useByScannerDiscovery="false" value="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.option.optimize.level2" valueType="enumerated"/>
<inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gcc.inputType.16071463" name="Compiler Input C" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gcc.inputType"/>
<inputType id="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gpp.inputType.334789223" name="Compiler Input CPP" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.compiler.gpp.inputType"/>
</tool>
Expand All @@ -117,7 +118,7 @@
<listOptionValue builtIn="false" value="D_1=R_1"/>
<listOptionValue builtIn="false" value="D_2=R_2"/>
</option>
<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection.1447513805" name="セクション" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection" useByScannerDiscovery="false" value="R_1,R_2,R,SI,B_PKCS11_STORAGE_1/04,B_ETHERNET_BUFFERS_1,B_RX_DESC_1,B_TX_DESC_1,B,B_1,B_2/0800000,C_1,C_2,C,C$*,D*,W*,L,P*/0FFE00000,EXCEPTVECT/0FFFFFF80,RESETVECT/0FFFFFFFC" valueType="string"/>
<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection.1447513805" name="セクション" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.linkerSection" useByScannerDiscovery="false" value="R_1,R_2,R,SI/04,C_PKCS11_STORAGE_1,C_PKCS11_STORAGE_MIRROR_1/0100000,B_ETHERNET_BUFFERS_1,B_RX_DESC_1,B_TX_DESC_1,B,B_1,B_2/0800000,C_1,C_2,C,C$*,D*,W*,L,P*/0FFE00000,EXCEPTVECT/0FFFFFF80,RESETVECT/0FFFFFFFC" valueType="string"/>
<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.vect.736338400" name="可変ベクタテーブルのアドレス未設定ベクタ番号に指定するアドレス" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.vect" useByScannerDiscovery="false" value="_undefined_interrupt_source_isr" valueType="string"/>
<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug.420301023" name="デバッグ情報を出力する" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.debug" useByScannerDiscovery="false"/>
<option id="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.inputFile.669491131" name="リンクするリロケータブル・ファイル、ライブラリ・ファイルおよびバイナリ・ファイル" superClass="com.renesas.cdt.managedbuild.renesas.ccrx.linker.option.inputFile" useByScannerDiscovery="false"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
<stringAttribute key="com.renesas.cdt.core.stopAt" value="main"/>
<stringAttribute key="com.renesas.cdt.core.targetDevice" value="R5F565NE"/>
<booleanAttribute key="com.renesas.cdt.core.useRemoteTarget" value="true"/>
<stringAttribute key="com.renesas.cdt.debug.ioview.dsf.registerSelection" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;selectedRegisterList ioFilePath=&quot;C:\Renesas\e2_studio_v710\DebugComp\RX\Iofiles\RX65N.sfrx&quot;/&gt;&#13;&#10;"/>
<stringAttribute key="com.renesas.cdt.debug.ioview.dsf.registerSelection" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;selectedRegisterList ioFilePath=&quot;C:\Renesas\e2_studio_v720\DebugComp\RX\Iofiles\RX65N.sfrx&quot;/&gt;&#13;&#10;"/>
<stringAttribute key="com.renesas.cdt.launch.dsf.IO_MAP" value="${eclipse_home}"/>
<booleanAttribute key="com.renesas.cdt.launch.dsf.USE_DEFAULT_IO_MAP" value="true"/>
<listAttribute key="com.renesas.cdt.launch.dsf.downloadImages">
Expand All @@ -39,10 +39,10 @@
<stringAttribute key="com.renesas.cdt.launch.dsf.launchSeqType" value="com.renesas.cdt.launch.dsf.launchSequence.e2GdbServer"/>
<stringAttribute key="com.renesas.cdt.launch.dsf.serverPath" value="${renesas.support.targetLoc:rx-debug}\e2-server-gdb"/>
<listAttribute key="com.renesas.cdt.launch.ui.address.mruList.memoryMonitorExpression">
<listEntry value="0x00100000"/>
<listEntry value="0xffe086d8"/>
<listEntry value="0xffe086ec"/>
<listEntry value="0xffe086d0"/>
<listEntry value="0x808ae0"/>
</listAttribute>
<booleanAttribute key="com.renesas.hardwaredebug.e1.allow.change.startup_bank" value="false"/>
<booleanAttribute key="com.renesas.hardwaredebug.e1.allow.clock.source.internal" value="true"/>
Expand Down Expand Up @@ -139,16 +139,16 @@
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="HardwareDebug/aws_demos.x"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="aws_demos.RX65N.RSK.CC-RX"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="aws_demos"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/aws_demos.RX65N.RSK.CC-RX"/>
<listEntry value="/aws_demos"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;&gt;&#13;&#10;&#13;&#10;&#13;&#10;&#13;&#10;&lt;gdbmemoryBlockExpression address=&quot;8424160&quot; core_thread_id=&quot;1_i1&quot; label=&quot;0x808ae0&quot;&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.hexint&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;/gdbmemoryBlockExpression&gt;&#13;&#10;&lt;gdbmemoryBlockExpression address=&quot;4292904656&quot; core_thread_id=&quot;1_i1&quot; label=&quot;0xffe086d0&quot;&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.hexint&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;/gdbmemoryBlockExpression&gt;&#13;&#10;&lt;gdbmemoryBlockExpression address=&quot;4292904684&quot; core_thread_id=&quot;1_i1&quot; label=&quot;0xffe086ec&quot;&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.hexint&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.ascii&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;/gdbmemoryBlockExpression&gt;&#13;&#10;&lt;gdbmemoryBlockExpression address=&quot;4292904664&quot; core_thread_id=&quot;1_i1&quot; label=&quot;0xffe086d8&quot;&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.hexint&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.ascii&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;/gdbmemoryBlockExpression&gt;&#13;&#10;&lt;/memoryBlockExpressionList&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;memoryBlockExpressionList context=&quot;reserved-for-future-use&quot;&gt;&#13;&#10;&lt;gdbmemoryBlockExpression address=&quot;1048576&quot; core_thread_id=&quot;1_i1&quot; label=&quot;0x00100000&quot;&gt;&#13;&#10;&lt;memoryRendering id=&quot;org.eclipse.debug.ui.rendering.hexint&quot;&gt;&#13;&#10;&lt;renderingInstance containerId=&quot;org.eclipse.debug.ui.MemoryView.RenderingViewPane.1&quot; viewId=&quot;org.eclipse.debug.ui.MemoryView&quot; viewSecondaryId=&quot;&quot;/&gt;&#13;&#10;&lt;/memoryRendering&gt;&#13;&#10;&lt;/gdbmemoryBlockExpression&gt;&#13;&#10;&lt;/memoryBlockExpressionList&gt;&#13;&#10;"/>
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
</launchConfiguration>
Loading

7 comments on commit 7e03502

@alexa-noxon
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In PKCS11_PAL_FindObject, can we modify this to check if there is a valid object stored behind the handle before returning handle value?

@HirokiIshiguro
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I will modify this.

@alexa-noxon
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for looking into these comments!

One more question - if the device was previously provisioned (and then power cycled), and no call to PKCS11_PAL_SaveObject is made, is the RAM (pkcs_control_block_data_image) ever restored with the values from flash?

If this is not the case, one option that is available is to initialize the RAM during the C_Initialize call by doing an override of the default C_Initialize (by defining pkcs11configC_INITIALIZE_ALT located in aws_pkcs11_config.h). Note that C_Initialize would also still need to call prvMbedTLS_Initialize

@HirokiIshiguro
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, your comment is quite useful for me. Extremely thanks.
Your pointed out is correct. I will add override C_Initialize.

@HirokiIshiguro
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, I will modify this.

I have modified this at: 5c7ad20

@HirokiIshiguro
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for looking into these comments!

One more question - if the device was previously provisioned (and then power cycled), and no call to PKCS11_PAL_SaveObject is made, is the RAM (pkcs_control_block_data_image) ever restored with the values from flash?

If this is not the case, one option that is available is to initialize the RAM during the C_Initialize call by doing an override of the default C_Initialize (by defining pkcs11configC_INITIALIZE_ALT located in aws_pkcs11_config.h). Note that C_Initialize would also still need to call prvMbedTLS_Initialize

I have added this feature at: 69049fa

@HirokiIshiguro
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have confirmed correctly behavior with power cycled in actual experiment at: 4f84ec9

Please sign in to comment.