バージョン v0.1.1 | 最終更新 2026-05-07
株式会社ハウディ・クリプト 代表取締役社長 浅田 一憲
Openloop SDK は、Openloop ハードウェアウォレットとの通信を行う 多言語ライブラリ です。
| 言語 / 形式 | 主な配布物 | 用途 |
|---|---|---|
| TypeScript / npm | @openloop/sdk-core,
@openloop/transport-* |
Web dApp、Node.js / Electron、React Native |
| Swift / SPM | OpenloopShared
(openloop-connect/packages/mobile/ios/OpenloopShared/) |
iOS Native (Credential Provider Extension、ネイティブ iOS アプリ) |
| Kotlin / Maven (将来) | — | Android Native |
| C# / NuGet (将来) | — | Windows Native |
ライセンスについて: Openloop SDK の使用には、株式会社ハウディ・クリプトとのライセンス契約が必要です。ご要望に応じて SDK のカスタマイズも可能ですので、お気軽に info@haudi.co.jp までお問い合わせください。
最も重要な原則: 秘密鍵はデバイス内に保持され、外部に出ることはありません。SDK は APDU(Application Protocol Data Unit)コマンドの送受信のみを行います。署名はすべてデバイス内のセキュアエレメントで実行されます。
Ctap2App (TS) / Ctap2Builder (Swift): WebAuthn/FIDO2 passkey 用のレイヤ。CTAP2 メッセージを
F0 B0APDU tunnel で FW に転送します。Connect モバイルアプリの Credential Provider が iOS では Swift、Android では React Native (TS) でこれを使用しています。
| レイヤー | 役割 |
|---|---|
| dApp | ユーザーインターフェース、トランザクション構築 |
| App Class | チェーン固有の APDU コマンド構築・レスポンス解析 |
| ITransport | デバイスとの物理的通信(USB/BLE/WebSocket 等) |
| Device | 秘密鍵管理、署名実行、ユーザー承認 |
0x6985 を返し、署名は実行されない| チェーン | App クラス | 楕円曲線 | BIP44 coin_type |
|---|---|---|---|
| Ethereum (EVM) | EthereumApp |
secp256k1 | 60' |
| Bitcoin | BitcoinApp |
secp256k1 | 0' (mainnet), 1' (testnet) |
| Solana | SolanaApp |
Ed25519 | 501' |
| TRON | TronApp |
secp256k1 | 195' |
| XRP Ledger | XrpApp |
Ed25519 / secp256k1 | 144' |
EthereumApp は Ethereum だけでなく、EVM
互換チェーンで使用できます。signPersonalMessage と
signTypedData の chainId
パラメータでチェーンを指定します。
SDK は 6 種類の接続方式を提供し、幅広いプラットフォームをカバーします。
| Transport | パッケージ | ユースケース |
|---|---|---|
| WebHID (USB) | @openloop/transport-webhid |
Chrome/Edge デスクトップ |
| Web Bluetooth | @openloop/transport-webble |
Chrome/Edge + Android |
| LocalWS | @openloop/transport-local |
全ブラウザ(Connect 経由) |
| Safari Extension | @openloop/transport-safari |
iOS Safari |
| USB HID (native) | @openloop/transport-usb |
Node.js / Electron |
| BLE (Swift) | OpenloopShared (SPM) |
iOS Native (Credential Provider 等) |
| WalletConnect | @openloop/sdk-core 内蔵 |
全ブラウザ(リモート署名) |
詳細は Transport 選択ガイド を参照してください。
| パッケージ | 説明 | 依存関係 |
|---|---|---|
@openloop/sdk-core |
コアライブラリ(App, Types, Errors, Constants, WcTransport, Ctap2App) | なし |
@openloop/transport-webhid |
WebHID (USB) Transport | sdk-core |
@openloop/transport-webble |
Web Bluetooth Transport | sdk-core |
@openloop/transport-local |
LocalWS Transport | sdk-core |
@openloop/transport-safari |
Safari Extension Transport | sdk-core (peer) |
@openloop/transport-usb |
Native USB HID Transport | sdk-core (peer), node-hid |
@openloop/transport-ble |
React Native BLE Transport | sdk-core, react-native-ble-plx |
| Module | 説明 |
|---|---|
OpenloopShared |
BLE manager + APDU transport + CTAP2 builder。iOS Credential Provider Extension と Connect 本体が共通利用 |
ローカル参照:
openloop-connect/packages/mobile/ios/OpenloopShared/Package.swift
sdk-core はブラウザ API
やネイティブモジュールに依存しない純粋な TypeScript パッケージです。各
Transport パッケージがプラットフォーム固有の実装を提供します。Swift
Package OpenloopShared は TypeScript 系とは独立した iOS
専用実装です (将来 Kotlin / C# 等も同様に独立)。
SDK とデバイス間の通信は APDU(Application Protocol Data Unit)コマンドで行われます。
[CLA] [INS] [P1] [P2] [Lc] [Data...]
| フィールド | サイズ | 説明 |
|---|---|---|
| CLA | 1 byte | クラスバイト(0xE0: Ledger 互換, 0xF0:
Openloop 独自) |
| INS | 1 byte | 命令コード |
| P1 | 1 byte | パラメータ 1(チャンキング制御等) |
| P2 | 1 byte | パラメータ 2(曲線選択等) |
| Lc | 1 byte | データ長 |
| Data | Lc bytes | コマンドデータ |
[Data...] [SW1] [SW2]
| フィールド | サイズ | 説明 |
|---|---|---|
| Data | 可変 | レスポンスデータ |
| SW1-SW2 | 2 bytes | ステータスワード(0x9000 = 成功) |
| CLA | 用途 |
|---|---|
0xE0 |
Ledger 互換コマンド(ETH, BTC getAddress, SOL, TRON, XRP) |
0xF0 |
Openloop 独自コマンド(chain_id 対応署名, PSBT, BTC xpub) |
詳細な APDU ステータスワードは エラー処理 を参照してください。