クマは森で用を足しますか?

アウトプットは重要です。

SIM

Pixel 7 のログから逆引きして学び始める eSIM MEP

Apple は iPhone 13 から、Google は Pixel 7 から eSIM MEP (Multiple Enabled Profiles) をサポートしています。一般市民が触って遊べるようなものなのかどうかは疑問なところですが、どんな仕組みで動いているのか知っておいても良いかなと考えています。…

eSIM.me を Windows 11 の LPA で使用する

このページに来られた方々は既にいろいろとご存じのことだと思われますので、まずは結論から。ふたつあります。 「MBIM モードで接続可能な eSIM 対応通信モジュール」を増設すれば、着脱可能なカード型 eUICC である "eSIM.me" を Windows PC 上で制御でき…

ワイモバイルのeSIMカード (Removable eUICC) はいい感じです

ソフトバンクおよびワイモバイルでは「eSIMプロファイルのダウンロードに使える物理的なeSIMカード」が2022年3月から提供されているようですが、あまり市場に出回っていないのか(そんな気はする)、それらのeSIMカードについて書かれたブログやツイートを見…

eSIM.me は商用かつ汎用の Removable eUICC カード

抜き差しできる eUICC カード、あります 世の中の SIM/UICC 好きの皆さま、取り外し可能なカード型の eUICC をお探しではないですか?先日ついにこの eSIM.me を見つけて、脊髄反射でポチっとやりました。ご覧ください、こちらが eSIM.me の eUICC カードで…

iPhone 13のデュアルeSIMはもっと取り上げられてよい

ネットメディアの反応 iPhone 13では新たに「デュアルeSIM」がサポートされ、eSIMだけで(物理的なSIMカードを装着することなく)2回線を同時に利用できるようになりました。思ったよりも数は多くないという印象ですが、ネットメディアの記事でも「デュアル…

ドコモeSIMカードVer.1にはがっかりです

ドコモeSIMカードに他キャリアのeSIMプロファイルもダウンロードできたらいいな、なんて思っちゃいますよね。ドコモeSIMカード対応製品はここ三年近く発売されていないので、ちょっと古くなってしまったタブレットdtab Compact d-02Kを調達して確認すること…

SM-DP+ (IIJ) で学ぶ OpenSSL

先日、Pixel 4 の eSIM に STORE DATA コマンドを送信し、eSIM に入っていたプロファイルの情報を読み出しました。eSIM には IIJ のプロファイルが入っていますので、同プロファイルに関する Notification の送信先アドレスも得ることができました。プロファ…

eSIM が無ければ Pixel 4 を潰せばいいじゃない

リムーバブルな eSIM が手に入らない eSIM にコマンドを送りたくなること、ありますよね。4FF/nano カードタイプのいわゆるリムーバブルな eSIM を入手し、PC/SC インターフェースを通して ES10x のコマンドを送ることができればと考えたんですけど、そもそ…

SM-DP+ で学ぶ TLS ハンドシェイク (楽天モバイル)

Rakuten Mini に tcpdump を入れて、楽天モバイルの SM-DP+ と通信する際の TLS ハンドシェイクの様子を見てみました。SM-DP+ のアドレスが "rakuten.prod.ondemandconnectivity.com" になっているので、Thales (Gemalto) のサービスを利用されているのでし…

Google Pixel 4 がデュアル SIM 端末になるとき

Google Pixel 4 は出荷時はシングル SIM 端末ですが、その後の UI 操作によってデュアル SIM 端末へ動的に変化します。Google Pixel 4 に IIJ さんの eSIM をダウンロードしてデュアル SIM 端末にしましたので、そのときに観測できたことをメモしておこうと…

BER-TLV クラスを Kotlin で書いてみる

仕様のおさらい T (タグ) フィールドは 3 バイトまで ITU-T X.690 や ISO/IEC 8825-1 の規定では T/L/V 各フィールドの長さに関する自由度が高く、著しく長いタグやデータ長を表現することも可能です。ISO/IEC 7816 の現在の運用ではタグの長さを 3 バイトま…

Continuation による AssertionError で MockK に乗り換える

Repository 以下はだいたいこんな感じ 他の人が書かれた Kotlin のコードを見ながら、適当にそれらしく書いてみています。そんな調子でもそこそこちゃんと動いてくれるので、Kotlin の基礎みたいなところを全く習得できていないような気はします。Android の…

楽天モバイル MNO SIM カードは読み物です

SIM

[2020/04/11 追記] EF DIR の二つ目のレコードを見落としていたので訂正。 [2020/04/11 追記] Pixel 3 でうまく開通できていない状況をメモ。 開通できません 先日契約した Rakuten MNO の SIM カードが届いたのですが、どうやら自宅にある各種スマホやタブ…

APDU コマンド出ました

今回は学習目的で「しっかりテストコードを書く」と決めて始めてしまったので、ちょっとしたことを実現するだけでもとても時間がかかります。おかげで、Kotlin の超基本的な文法みたいなところはちょっと書き慣れてきたような気がしないでもないです。 MF を…

Mockito や Shadow を使ってテストコードを書くのは楽しい

Kotlin でコード書くのはとても楽しいですし、Mockito や Shadow を使ってテストコードを書くのも楽しいですね。業務で携わっているコードにはテストコードがあまり用意されていないものもありますので、このように自分で書いてみるのはとても有意義です。し…

16 進文字列とバイト値を変換する関数を Kotlin で書く

どうしても至る所で使うことになりそうな気がするので、16 進文字列とバイト値またはその配列を変換する処理をユーティリティとして切り出して整理しておきます。まだまだ不慣れですが、ちょっぴり Kotlin っぽく書けているでしょうか。 値から 16 進文字列…

APDU コマンドクラスを Kotlin で書いてみる

業務では使っていない Kotlin にはまだどうにも馴染めないでいるのですが、使わないままだとずっと馴染むことができません。ということで、今回 Kotlin を練習する目的で書いてみたのは、普段から Android での取り扱いが心地よくない APDU コマンドです。 A…

Android は APDU の送受信を制限しなくていいのに

Android と SIM カードとの間で APDU コマンドの送受信を実行しようと思うと、通常は下記のどちらかの公開 API を利用することになると思います。しかし、一般のアプリ開発者にとってはそのどちらも使いにくい、と言うか著しく自由度の低いものになっていま…

GET INKEY コマンドをサポートしてひとまず完成

しばらくぶりの Java Card プログラミングで結局のところ何を作っていたかと言いますと、GET INPUT コマンドを非同期的に SIM カードから端末に送信する SIM ツールキット用アプレットで、そのコマンドのパラメータをある程度コンフィギュレーションできるよ…

GET INPUT コマンドと TIMER MANAGEMENT コマンド

前回(下記)に引き続き、sysmoUSIM-SJS1 4FF を使って SIM ツールキット用 Java Card アプレットを作ってゆきます。cheerio-the-bear.hatenablog.comSET UP MENU コマンドに DISPLAY TEXT コマンド、SELECT ITEM コマンドとやってきましたが、今回は GET IN…

SELECT ITEM コマンドで二階層目のメニューを

先日から SIM ツールキット用の Java Card アプレットを書き始めたところ(下記)ですが、まとまった時間があまり取れていないと進捗しないですね。cheerio-the-bear.hatenablog.com前回は SET UP MENU コマンドと DISPLAY TEXT コマンドをやりましたが、今…

SET UP MENU コマンドと DISPLAY TEXT コマンド

sysmoUSIM-SJS1 4FF を久しぶりに引っ張り出してきて、SIM ツールキット用の Java Card アプレットを作ってみることにします。SIM 側の実装を知ることで、SIM ツールキットの理解も深められるのではないかと考えています。いわゆる "Hello World" 相当の、こ…

Android Secure Element CTSの実行用ARA-Mできました

Android Secure Element CTSの実行に必要なアクセスルールを返すARA-M、とりあえず完成です。インストール後にルールの追加や変更を動的に実行できるようには作っていませんが、それはまた他にやることがないときにでも。github.com アクセスルールの選択ル…

GET DATA [Refresh tag]の追加

前回の変更で、現在製造中のARA-MがGET DATA [All]コマンドとGET DATA [Next]コマンドをサポートしました。cheerio-the-bear.hatenablog.com GET DATAコマンドとしてはもうひとつ、GET DATA [Refresh Tag]コマンドにも対応させます。 GET DATA [Refresh Tag]…

GET DATA [All]とGET DATA [Next]の実装

ARA-Mがアクセスルールをターミナルに提供できるようにするために、GET DATAコマンドをサポートします。コマンド仕様の詳細については、Global PlatformのSecure Element Access Control仕様書4.1章を。github.com GET DATA [All]コマンド GET DATA [All]コ…

ではARA-Mを作り始める準備を

前回までは、Android Secure Element CTSの実施時に必要なJava Cardアプレットを作成していました。cheerio-the-bear.hatenablog.comアクセスコントロール系のテストケースには、そのアプレットだけでは全然足りません。ということで、テストが期待するアク…

OMAPI/ACテスト用アプレットはこれで完成(のつもり)

自作のJava Cardアプレットをインストール可能な珍しいSIMカード、OSMOCOMコミュニティーのsysmoUSIM-SJS1 4FFを使ってAndroid Secure Element CTS仕様のアプレットを作る件、今回の変更でひとまず完成ということで良いのではないかと思います。テスト仕様に…

論理チャネルを開くときにP2値を割愛するケース

Android Secure Element CTSページのOpen Mobile API関連の記述について言えば、これまでの対応でカバーできていないのは、おそらく下記の件のみではないでしょうか。 a. 0xA000000476416E64726F696443545331 ... vi. The applet should return success stat…

各種警告系ステータスワードの返却

ターミナルとカードの間で行われるAPDUコマンドのやり取りには、当然ながらカードOSが介在します。ふと見つけてドイツから個人輸入したsysmoUSIM-SJS1 4FFですが、カードOSの制限事項のようなもの、例えばカードOSが通過を許してくれないクラスバイトやイン…

Case 2コマンドやCase 4コマンドへの長いデータの応答

Android Secure Element CTSに使えるSIMカードをsysmoUSIM-SJS1 4FFで作ってみる件、次はOmapiTest.testSegmentedResponseTransmit()です。 testSegmentedResponseTransmit()が期待する動作 テストコードによると、セキュアエレメントから返ってくるデータの…