JavaCard があり、JCSystem.getAvailableMemory(MEMORY_TYPE_PERSISTENT) を呼び出してアプレットから返すことができますが、32767 バイトを超える場合は正確な値が必要です。
2 に答える
GP 2.2 + ETSI をサポートする Javacard
カードが Global Platform 2.2 および ETSI をサポートしている場合、GET DATA コマンドを使用できます。
GP カード仕様 2.2 セクション 11.3 は、次のように述べています。
Tag ‘FF21’: Extended Card Resources Information available for Card Content Management, as defined in ETSI TS 102 226.
また、ETSI 102.226 セクション 8.2.1.7.2 では:
コマンドの実行が成功した後、GET DATA 応答データ フィールドは、GlobalPlatform [4] で定義されているようにコーディングされます。コマンド メッセージの参照制御パラメータ P1 および P2 で参照される TLV コード化データ オブジェクトの値は次のとおりです。
Length Description Value
1 Number of installed application tag '81'
1 Number of installed application length X
X Number of installed application
1 Free non volatile memory tag '82'
1 Free non volatile memory length Y
Y Free non volatile memory
1 Free volatile memory tag '83'
1 Free volatile memory length Z
Z Free volatile memory
このコマンドの応答は、short
TLV 形式を使用しているため、値に制限されません。つまり、32767 バイトを超える空きメモリを確認できます。
一般に、標準のJavaCardAPIを使用してカードから正確な量の空きメモリを取得することはできません。ほとんどのJavaCardは整数をサポートしていないため、APIメソッドから取得できる最大値は32767(signed shortの上限)です。
運が良ければ、カード/OSメーカーの独自のAPIメソッドがあるかもしれません。NXP JCOPカードの独自のAPIを見たことがありますが、署名されたショートの上限を超えた場合、それらのいずれも空きメモリの量を取得できません。