diff --git a/app/_locales/de/messages.json b/app/_locales/de/messages.json index 1749fa9ab03c..2f1a3a47bebd 100644 --- a/app/_locales/de/messages.json +++ b/app/_locales/de/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Ihre MetaMask Installation ist abgeschlossen!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Hardware requires OneKey Bridge software, $1" + }, + "onekeyConnectDevice": { + "message": "Gerät verbinden" + }, + "onekeyDownloadBridge": { + "message": "OneKey Bridge herunterladen" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey muss den Bootloader-Modus verlassen, um diese Funktion zu verwenden." + }, + "onekeyForceUpdate": { + "message": "OneKey muss aktualisiert werden. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Zum Aktualisieren gehen" + }, + "onekeyHardwareError": { + "message": "OneKey Hardwarefehler" + }, + "onekeyHardwareHelpLink": { + "message": "Bitte besuchen Sie unsere Online-Tutorials für detaillierte Anleitungen." + }, + "onekeyNeedUpdateFirmware": { + "message": "OneKey-Firmware muss aktualisiert werden, um diese Funktion nutzen zu können, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Benutzerautorisierung ist erforderlich, um das OneKey-Gerät zu verbinden. Wenn Sie Ihr OneKey verbinden möchten, klicken Sie auf \"Gerät verbinden\" und genehmigen Sie die USB-Verbindung" + }, "onlyConnectTrust": { "message": "Verbinden Sie sich nur mit Websites, denen Sie vertrauen. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Herunterladen, einrichten und Ihr Passwort eingeben, um $1 freizuschalten.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Verbinden Sie Ihren OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Schließen Sie Ihren OneKey direkt an Ihren Computer an und entsperren Sie ihn. Stellen Sie sicher, dass Sie die richtige Passphrase verwenden. Für weitere detaillierte Informationen zur Verwendung Ihrer Hardware-Wallet, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Verbinden Sie Ihre Trezor-Wallet." }, diff --git a/app/_locales/el/messages.json b/app/_locales/el/messages.json index 1052201239e2..4b776877a3fc 100644 --- a/app/_locales/el/messages.json +++ b/app/_locales/el/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Η εγκατάσταση του MetaMask ολοκληρώθηκε!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Το υλικό απαιτεί το λογισμικό OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Σύνδεση συσκευής" + }, + "onekeyDownloadBridge": { + "message": "Κατεβάστε το OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "Το OneKey πρέπει να βγει από τη λειτουργία bootloader για να χρησιμοποιήσει αυτή τη λειτουργία." + }, + "onekeyForceUpdate": { + "message": "Το firmware του OneKey χρειάζεται ενημέρωση. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Μετάβαση σε ενημέρωση firmware" + }, + "onekeyHardwareError": { + "message": "Σφάλμα υλικού OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Παρακαλούμε επισκεφθείτε τα online tutorials μας για αναλυτικές οδηγίες." + }, + "onekeyNeedUpdateFirmware": { + "message": "Απαιτείται ενημέρωση του firmware OneKey για να χρησιμοποιήσετε αυτή τη λειτουργία, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Απαιτείται εξουσιοδότηση χρήστη για τη σύνδεση της συσκευής OneKey. Εάν θέλετε να συνδέσετε το OneKey σας, κάντε κλικ στο 'Σύνδεση συσκευής' και εγκρίνετε τη σύνδεση USB" + }, "onlyConnectTrust": { "message": "Συνδεθείτε μόνο με ιστότοπους που εμπιστεύεστε. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Κατεβάστε, εγκαταστήστε και πληκτρολογήστε τον κωδικό πρόσβασής σας για να ξεκλειδώσετε το $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Συνδέστε το OneKey σας" + }, + "step1OnekeyWalletMsg": { + "message": "Συνδέστε το OneKey σας απευθείας στον υπολογιστή σας και ξεκλειδώστε το. Βεβαιωθείτε ότι χρησιμοποιείτε τη σωστή φράση πρόσβασης. Για περισσότερες λεπτομερείς πληροφορίες σχετικά με τη χρήση του υλικού πορτοφολιού σας, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Συνδέστε το Trezor σας" }, diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 223c4ad7b415..fb29b5462b84 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -3906,6 +3906,36 @@ "onekey": { "message": "OneKey" }, + "onekeyBridgeInstallationRequired": { + "message": "Hardware requires OneKey Bridge software, $1" + }, + "onekeyConnectDevice": { + "message": "Connect device" + }, + "onekeyDownloadBridge": { + "message": "Download OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey needs to exit bootloader mode to use this feature." + }, + "onekeyForceUpdate": { + "message": "OneKey firmware needs to be updated. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Go to update firmware" + }, + "onekeyHardwareError": { + "message": "OneKey hardware error" + }, + "onekeyHardwareHelpLink": { + "message": "Please visit our online tutorials for detailed guides." + }, + "onekeyNeedUpdateFirmware": { + "message": "OneKey firmware update is required to use this feature, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "User authorization is required to connect to OneKey device. If you want to connect your OneKey, please click 'Connect Device' and approve the USB connection" + }, "onlyConnectTrust": { "message": "Only connect with sites you trust. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5718,6 +5748,13 @@ "message": "Download, set up, and enter your password to unlock $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Connect your OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Plug your OneKey directly into your computer and unlock it. Make sure you are using the correct passphrase. For more detailed information about using your hardware wallet, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Connect your Trezor" }, diff --git a/app/_locales/en_GB/messages.json b/app/_locales/en_GB/messages.json index 223c4ad7b415..44319ef43506 100644 --- a/app/_locales/en_GB/messages.json +++ b/app/_locales/en_GB/messages.json @@ -3906,6 +3906,36 @@ "onekey": { "message": "OneKey" }, + "onekeyBridgeInstallationRequired": { + "message": "Hardware requires OneKey Bridge software, $1" + }, + "onekeyConnectDevice": { + "message": "Connect device" + }, + "onekeyDownloadBridge": { + "message": "Download OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey needs to exit bootloader mode to use this feature." + }, + "onekeyForceUpdate": { + "message": "OneKey firmware needs to be updated. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Go to update firmware" + }, + "onekeyHardwareError": { + "message": "OneKey hardware error" + }, + "onekeyHardwareHelpLink": { + "message": "Please visit our online tutorials for detailed guides." + }, + "onekeyNeedUpdateFirmware": { + "message": "OneKey firmware update is required to use this feature, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "User authorisation is required to connect to OneKey device. If you want to connect your OneKey, please click 'Connect device' and approve the USB connection" + }, "onlyConnectTrust": { "message": "Only connect with sites you trust. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5718,6 +5748,13 @@ "message": "Download, set up, and enter your password to unlock $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Connect your OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Plug your OneKey directly into your computer and unlock it. Ensure you are using the correct passphrase. For more detailed information about using your hardware wallet, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Connect your Trezor" }, diff --git a/app/_locales/es/messages.json b/app/_locales/es/messages.json index 37a608794600..e5a6b1df0c6d 100644 --- a/app/_locales/es/messages.json +++ b/app/_locales/es/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "¡Su instalación de MetaMask ha finalizado!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "El hardware requiere el software OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Conectar dispositivo" + }, + "onekeyDownloadBridge": { + "message": "Descargar OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey necesita salir del modo bootloader para usar esta función." + }, + "onekeyForceUpdate": { + "message": "El firmware de OneKey necesita ser actualizado. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Ir a actualizar firmware" + }, + "onekeyHardwareError": { + "message": "Error de hardware OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Por favor, visite nuestros tutoriales en línea para una guía detallada." + }, + "onekeyNeedUpdateFirmware": { + "message": "Es necesario actualizar el firmware de OneKey para usar esta función, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Se requiere autorización del usuario para conectar el dispositivo OneKey. Si desea conectar su OneKey, haga clic en 'Conectar dispositivo' y apruebe la conexión USB" + }, "onlyConnectTrust": { "message": "Conéctese solo con sitios de confianza. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Descargue y configure la aplicación, e ingrese su contraseña para desbloquear $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Conecta tu OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Conecta tu OneKey directamente al ordenador y desbloquéalo. Asegúrate de utilizar la frase de contraseña correcta. Para más información detallada sobre el uso de tu monedero hardware, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Conecte su Trezor" }, diff --git a/app/_locales/es_419/messages.json b/app/_locales/es_419/messages.json index db4974108bfa..8c7930645113 100644 --- a/app/_locales/es_419/messages.json +++ b/app/_locales/es_419/messages.json @@ -1728,6 +1728,13 @@ "message": "Descargue y configure la aplicación, e ingrese su contraseña para desbloquear $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Conecta tu OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Conecta tu OneKey directamente a la computadora y desbloquéalo. Asegúrate de usar la frase de contraseña correcta. Para obtener información más detallada sobre cómo usar tu billetera de hardware, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Conectar la cartera Trezor" }, diff --git a/app/_locales/fr/messages.json b/app/_locales/fr/messages.json index 1d72d980acc2..99b485773e39 100644 --- a/app/_locales/fr/messages.json +++ b/app/_locales/fr/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Votre installation de MetaMask est terminée !" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Le matériel nécessite le logiciel OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Connecter l'appareil" + }, + "onekeyDownloadBridge": { + "message": "Télécharger OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey doit quitter le mode bootloader pour utiliser cette fonctionnalité." + }, + "onekeyForceUpdate": { + "message": "Le firmware OneKey doit être mis à jour. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Aller à la mise à jour du firmware" + }, + "onekeyHardwareError": { + "message": "Erreur matérielle OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Veuillez consulter nos tutoriels en ligne pour un guide détaillé." + }, + "onekeyNeedUpdateFirmware": { + "message": "Une mise à jour du firmware OneKey est nécessaire pour utiliser cette fonctionnalité, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "L'autorisation de l'utilisateur est nécessaire pour connecter l'appareil OneKey. Si vous souhaitez connecter votre OneKey, veuillez cliquer sur 'Connecter l'appareil' et approuver la connexion USB" + }, "onlyConnectTrust": { "message": "Ne vous connectez qu’aux sites auxquels vous faites confiance. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Téléchargez, configurez et saisissez votre mot de passe pour déverrouiller $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Connectez votre OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Branchez votre OneKey directement sur votre ordinateur et déverrouillez-le. Assurez-vous d'utiliser la bonne phrase secrète. Pour plus d'informations détaillées sur l'utilisation de votre portefeuille matériel, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Connecter le portefeuille Trezor" }, diff --git a/app/_locales/hi/messages.json b/app/_locales/hi/messages.json index a1b5569a68ec..84b0fc6afb2d 100644 --- a/app/_locales/hi/messages.json +++ b/app/_locales/hi/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "आपका MetaMask इंस्टॉल पूरा हो गया है!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "हार्डवेयर को OneKey Bridge सॉफ़्टवेयर की आवश्यकता है, $1" + }, + "onekeyConnectDevice": { + "message": "डिवाइस कनेक्ट करें" + }, + "onekeyDownloadBridge": { + "message": "OneKey Bridge डाउनलोड करें" + }, + "onekeyExitBootloaderMode": { + "message": "इस सुविधा का उपयोग करने के लिए OneKey को बूटलोडर मोड से बाहर निकलना होगा।" + }, + "onekeyForceUpdate": { + "message": "OneKey फर्मवेयर को अपडेट करने की आवश्यकता है। $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "फर्मवेयर अपडेट पर जाएं" + }, + "onekeyHardwareError": { + "message": "OneKey हार्डवेयर त्रुटि" + }, + "onekeyHardwareHelpLink": { + "message": "विस्तृत मार्गदर्शन के लिए कृपया हमारे ऑनलाइन ट्यूटोरियल देखें।" + }, + "onekeyNeedUpdateFirmware": { + "message": "इस सुविधा का उपयोग करने के लिए OneKey फर्मवेयर को अपडेट करने की आवश्यकता है, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "OneKey डिवाइस को कनेक्ट करने के लिए उपयोगकर्ता अनुमति की आवश्यकता है। यदि आप अपने OneKey को कनेक्ट करना चाहते हैं, तो कृपया 'डिवाइस कनेक्ट करें' पर क्लिक करें और USB कनेक्शन को स्वीकार करें" + }, "onlyConnectTrust": { "message": "केवल उन साइटों से कनेक्ट करें, जिन पर आप भरोसा करते हैं। $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "$1 अनलॉक करने के लिए डाउनलोड करें, सेट करें और अपना पासवर्ड डालें।", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "अपने OneKey को कनेक्ट करें" + }, + "step1OnekeyWalletMsg": { + "message": "अपने OneKey को सीधे कंप्यूटर से जोड़ें और अनलॉक करें। सुनिश्चित करें कि आप सही पासफ्रेज़ का उपयोग कर रहे हैं। अपने हार्डवेयर वॉलेट के उपयोग के बारे में अधिक विस्तृत जानकारी के लिए, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "अपने Trezor को कनेक्ट करें" }, diff --git a/app/_locales/id/messages.json b/app/_locales/id/messages.json index 2916d74c4977..e526628dfb58 100644 --- a/app/_locales/id/messages.json +++ b/app/_locales/id/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Pemasangan MetaMask Anda selesai!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Perangkat keras membutuhkan software OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Hubungkan perangkat" + }, + "onekeyDownloadBridge": { + "message": "Unduh OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey perlu keluar dari mode bootloader untuk menggunakan fitur ini." + }, + "onekeyForceUpdate": { + "message": "Firmware OneKey perlu diperbarui. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Pergi ke pembaruan firmware" + }, + "onekeyHardwareError": { + "message": "Kesalahan perangkat keras OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Silakan kunjungi tutorial online kami untuk panduan yang lebih detail." + }, + "onekeyNeedUpdateFirmware": { + "message": "Perlu memperbarui firmware OneKey untuk menggunakan fitur ini, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Diperlukan otorisasi pengguna untuk menghubungkan perangkat OneKey. Jika Anda ingin menghubungkan OneKey Anda, silakan klik 'Hubungkan perangkat' dan setujui koneksi USB" + }, "onlyConnectTrust": { "message": "Hanya hubungkan ke situs yang Anda percayai. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Unduh, atur, dan masukkan kata sandi Anda untuk membuka $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Hubungkan OneKey Anda" + }, + "step1OnekeyWalletMsg": { + "message": "Colokkan OneKey Anda langsung ke komputer dan buka kuncinya. Pastikan Anda menggunakan frasa sandi yang benar. Untuk informasi lebih lanjut tentang penggunaan dompet perangkat keras Anda, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Hubungkan Trezor Anda" }, diff --git a/app/_locales/ja/messages.json b/app/_locales/ja/messages.json index 17faa5d421ed..27be48c00329 100644 --- a/app/_locales/ja/messages.json +++ b/app/_locales/ja/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "MetaMaskのインストールが完了しました!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "ハードウェアに必要なOneKey Bridgeソフトウェア、$1" + }, + "onekeyConnectDevice": { + "message": "デバイスを接続" + }, + "onekeyDownloadBridge": { + "message": "OneKey Bridgeをダウンロード" + }, + "onekeyExitBootloaderMode": { + "message": "OneKeyはこの機能を使用するためにブートローダーモードを終了する必要があります。" + }, + "onekeyForceUpdate": { + "message": "OneKeyファームウェアの更新が必要です。$1" + }, + "onekeyGoToUpdateFirmware": { + "message": "ファームウェア更新へ進む" + }, + "onekeyHardwareError": { + "message": "OneKeyハードウェアエラー" + }, + "onekeyHardwareHelpLink": { + "message": "詳細なガイドについては、オンラインチュートリアルをご覧ください。" + }, + "onekeyNeedUpdateFirmware": { + "message": "この機能を使用するには、OneKeyファームウェアを更新する必要があります。$1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "OneKeyデバイスに接続するには、ユーザー認証が必要です。OneKeyに接続したい場合は、「デバイスを接続」をクリックして、USB接続を承認してください" + }, "onlyConnectTrust": { "message": "信頼するサイトにのみ接続してください。$1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "$1のロックを解除するには、ダウンロードして設定し、パスワードを入力してください。", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "OneKeyを接続する" + }, + "step1OnekeyWalletMsg": { + "message": "OneKeyをコンピューターに直接差し込み、ロックを解除してください。正しいパスフレーズを使用していることを確認してください。ハードウェアウォレットの使用に関する詳細情報については、$1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Trezorを接続する" }, diff --git a/app/_locales/ko/messages.json b/app/_locales/ko/messages.json index 6a809ee98f2b..41925975decb 100644 --- a/app/_locales/ko/messages.json +++ b/app/_locales/ko/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "MetaMask 설치가 완료되었습니다!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "하드웨어에 필요한 OneKey Bridge 소프트웨어, $1" + }, + "onekeyConnectDevice": { + "message": "장치 연결" + }, + "onekeyDownloadBridge": { + "message": "OneKey Bridge 다운로드" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey는 이 기능을 사용하기 위해 부트로더 모드를 종료해야 합니다." + }, + "onekeyForceUpdate": { + "message": "OneKey 펌웨어 업데이트가 필요합니다. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "펌웨어 업데이트로 이동" + }, + "onekeyHardwareError": { + "message": "OneKey 하드웨어 오류" + }, + "onekeyHardwareHelpLink": { + "message": "자세한 안내는 온라인 튜토리얼을 방문해 주세요." + }, + "onekeyNeedUpdateFirmware": { + "message": "이 기능을 사용하려면 OneKey 펌웨어를 업데이트해야 합니다. $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "OneKey 장치를 연결하려면 사용자 승인이 필요합니다. OneKey를 연결하시려면 '장치 연결'을 클릭하고 USB 연결을 승인하세요." + }, "onlyConnectTrust": { "message": "신뢰하는 사이트만 연결하세요. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -4258,9 +4291,6 @@ "recoveryPhraseReminderConfirm": { "message": "확인" }, - "recoveryPhraseReminderHasBackedUp": { - "message": "비밀복구구문은 언제나 보안이 유지되고 알려지지 않은 곳에 보관해야 합니다." - }, "recoveryPhraseReminderHasNotBackedUp": { "message": "비밀복구구문을 다시 백업해야 합니까?" }, @@ -5126,9 +5156,6 @@ "snapsSettings": { "message": "Snap 설정" }, - "snapsTermsOfUse": { - "message": "이용약관" - }, "snapsToggle": { "message": "스냅은 활성화된 상태에서만 작동합니다." }, @@ -5387,6 +5414,13 @@ "message": "$1의 잠금을 해제하려면 다운로드, 설정 및 비밀번호를 입력하세요.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "OneKey 연결하기" + }, + "step1OnekeyWalletMsg": { + "message": "OneKey를 컴퓨터에 직접 연결하고 잠금을 해제하세요. 올바른 암호문구를 사용하고 있는지 확인하세요. 하드웨어 지갑 사용에 관한 자세한 정보는 $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Trezor 지갑 연결" }, diff --git a/app/_locales/ph/messages.json b/app/_locales/ph/messages.json index 1b8643c58fa1..f7f2c8326ee2 100644 --- a/app/_locales/ph/messages.json +++ b/app/_locales/ph/messages.json @@ -1142,6 +1142,13 @@ "message": "I-download, i-set up, at ilagay ang iyong password para i-unlock ang $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "I-connect ang iyong OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Direktang isaksak ang iyong OneKey sa computer at i-unlock ito. Siguraduhing gumagamit ka ng tamang passphrase. Para sa karagdagang impormasyon tungkol sa paggamit ng iyong hardware wallet, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "I-plug in ang Trezor wallet" }, diff --git a/app/_locales/pt/messages.json b/app/_locales/pt/messages.json index f7d467568450..6b7bf5f0a826 100644 --- a/app/_locales/pt/messages.json +++ b/app/_locales/pt/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Sua instalação da MetaMask está concluída!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "O hardware requer o software OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Conectar dispositivo" + }, + "onekeyDownloadBridge": { + "message": "Baixar OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "O OneKey precisa sair do modo bootloader para usar este recurso." + }, + "onekeyForceUpdate": { + "message": "O firmware do OneKey precisa ser atualizado. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Ir para atualizar firmware" + }, + "onekeyHardwareError": { + "message": "Erro de hardware OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Por favor, visite nossos tutoriais online para obter guias detalhados." + }, + "onekeyNeedUpdateFirmware": { + "message": "É necessário atualizar o firmware do OneKey para usar este recurso, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "É necessária autorização do usuário para conectar o dispositivo OneKey. Se você deseja conectar seu OneKey, clique em \"Conectar dispositivo\" e aprove a conexão USB" + }, "onlyConnectTrust": { "message": "Conecte-se somente com sites em que você confia. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Baixe, configure e insira sua senha para desbloquear $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Conecte seu OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Conecte seu OneKey diretamente ao computador e desbloqueie-o. Certifique-se de usar a frase-senha correta. Para mais informações detalhadas sobre como usar sua carteira de hardware, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Conecte sua Trezor" }, diff --git a/app/_locales/pt_BR/messages.json b/app/_locales/pt_BR/messages.json index 8edd9c8358b1..667c710f3610 100644 --- a/app/_locales/pt_BR/messages.json +++ b/app/_locales/pt_BR/messages.json @@ -1728,6 +1728,13 @@ "message": "Baixe, configure e insira sua senha para desbloquear $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Conecte seu OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Conecte seu OneKey diretamente ao computador e desbloqueie-o. Certifique-se de usar a senha correta. Para mais informações detalhadas sobre como usar sua carteira física, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Conecte a carteira Trezor" }, diff --git a/app/_locales/ru/messages.json b/app/_locales/ru/messages.json index 19366550f020..6d78bfa121f5 100644 --- a/app/_locales/ru/messages.json +++ b/app/_locales/ru/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Установка MetaMask завершена!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Для оборудования требуется программное обеспечение OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Подключить устройство" + }, + "onekeyDownloadBridge": { + "message": "Скачать OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey необходимо выйти из режима загрузчика для использования этой функции." + }, + "onekeyForceUpdate": { + "message": "Прошивка OneKey требует обновления. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Перейти к обновлению прошивки" + }, + "onekeyHardwareError": { + "message": "Ошибка оборудования OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Пожалуйста, посетите наши онлайн-руководства для получения подробных инструкций." + }, + "onekeyNeedUpdateFirmware": { + "message": "Для использования этой функции необходимо обновить прошивку OneKey, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Для подключения устройства OneKey требуется разрешение пользователя. Если вы хотите подключить ваш OneKey, нажмите «Подключить устройство» и подтвердите USB-соединение" + }, "onlyConnectTrust": { "message": "Подключайтесь только к сайтам, которым доверяете. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Скачайте $1, настройте его и введите пароль для его разблокировки.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Подключите ваш OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Подключите ваш OneKey напрямую к компьютеру и разблокируйте его. Убедитесь, что вы используете правильную парольную фразу. Для получения дополнительной информации об использовании вашего аппаратного кошелька, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Подключить кошелек Trezor" }, diff --git a/app/_locales/tl/messages.json b/app/_locales/tl/messages.json index 2907bea9dec8..0176a1ec4da6 100644 --- a/app/_locales/tl/messages.json +++ b/app/_locales/tl/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "Ang pag-install ng iyong MetaMask ay kumpleto na!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Kinakailangan ng hardware ang OneKey Bridge software, $1" + }, + "onekeyConnectDevice": { + "message": "Ikonekta ang device" + }, + "onekeyDownloadBridge": { + "message": "I-download ang OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "Kailangan ng OneKey na lumabas sa bootloader mode para magamit ang feature na ito." + }, + "onekeyForceUpdate": { + "message": "Kailangan i-update ang firmware ng OneKey. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Pumunta sa firmware update" + }, + "onekeyHardwareError": { + "message": "Error sa hardware ng OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Mangyaring bisitahin ang aming online tutorial para sa detalyadong gabay." + }, + "onekeyNeedUpdateFirmware": { + "message": "Kailangan i-update ang firmware ng OneKey para magamit ang feature na ito, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Kailangan ng pahintulot ng user para makonekta ang OneKey device. Kung gusto mong ikonekta ang iyong OneKey, pakipindot ang 'Ikonekta ang device' at aprubahan ang USB connection" + }, "onlyConnectTrust": { "message": "Kumonekta lang sa mga site na pinagkakatiwalaan mo. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "Mag-download, mag-set up, at maglagay ng password para ma-unlock ang $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "I-connect ang iyong OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "Direktang isaksak ang iyong OneKey sa computer at i-unlock ito. Siguraduhing gumagamit ka ng tamang passphrase. Para sa karagdagang impormasyon tungkol sa paggamit ng iyong hardware wallet, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Ikonekta ang iyong Trezor" }, diff --git a/app/_locales/tr/messages.json b/app/_locales/tr/messages.json index b1d625f405d6..463250c2ea6a 100644 --- a/app/_locales/tr/messages.json +++ b/app/_locales/tr/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "MetaMask kurulumunuz tamamlandı!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Donanım için OneKey Bridge yazılımı gereklidir, $1" + }, + "onekeyConnectDevice": { + "message": "Cihazı bağla" + }, + "onekeyDownloadBridge": { + "message": "OneKey Bridge'i indir" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey, bu özelliği kullanmak için önyükleme modundan çıkmalıdır." + }, + "onekeyForceUpdate": { + "message": "OneKey firmware'inin güncellenmesi gerekiyor. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Firmware güncellemesine git" + }, + "onekeyHardwareError": { + "message": "OneKey donanım hatası" + }, + "onekeyHardwareHelpLink": { + "message": "Detaylı bilgi için lütfen çevrimiçi öğreticilerimizi ziyaret edin." + }, + "onekeyNeedUpdateFirmware": { + "message": "Bu özelliği kullanmak için OneKey firmware'ini güncellemek gerekiyor, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "OneKey cihazına bağlanmak için kullanıcı izni gerekiyor. OneKey'inizi bağlamak istiyorsanız, lütfen 'Cihazı bağla' seçeneğine tıklayın ve USB bağlantısını onaylayın" + }, "onlyConnectTrust": { "message": "Sadece güvendiğiniz sitelere bağlayın. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "$1 kilidini açmak için indirin, kurun ve şifrenizi girin.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "OneKey'inizi bağlayın" + }, + "step1OnekeyWalletMsg": { + "message": "OneKey'inizi doğrudan bilgisayarınıza takın ve kilidi açın. Doğru parolayı kullandığınızdan emin olun. Donanım cüzdanınızı kullanma hakkında daha fazla bilgi için, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Trezor'unuzu bağlayın" }, diff --git a/app/_locales/vi/messages.json b/app/_locales/vi/messages.json index 0c6b2dc6a1ac..c5b743c50a48 100644 --- a/app/_locales/vi/messages.json +++ b/app/_locales/vi/messages.json @@ -3665,6 +3665,39 @@ "onboardingPinExtensionTitle": { "message": "Quá trình cài đặt MetaMask đã hoàn tất!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "Phần cứng yêu cầu phần mềm OneKey Bridge, $1" + }, + "onekeyConnectDevice": { + "message": "Kết nối thiết bị" + }, + "onekeyDownloadBridge": { + "message": "Tải xuống OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey cần thoát khỏi chế độ bootloader để sử dụng tính năng này." + }, + "onekeyForceUpdate": { + "message": "Firmware OneKey cần được cập nhật. $1" + }, + "onekeyGoToUpdateFirmware": { + "message": "Đi đến cập nhật firmware" + }, + "onekeyHardwareError": { + "message": "Lỗi phần cứng OneKey" + }, + "onekeyHardwareHelpLink": { + "message": "Vui lòng truy cập hướng dẫn trực tuyến của chúng tôi để biết chi tiết." + }, + "onekeyNeedUpdateFirmware": { + "message": "Cần cập nhật firmware OneKey để sử dụng tính năng này, $1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "Cần có sự cho phép của người dùng để kết nối thiết bị OneKey. Nếu bạn muốn kết nối OneKey của mình, hãy nhấp vào 'Kết nối thiết bị' và chấp nhận kết nối USB" + }, "onlyConnectTrust": { "message": "Chỉ kết nối với các trang web mà bạn tin tưởng. $1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5390,6 +5423,13 @@ "message": "Tải về, thiết lập và nhập mật khẩu của bạn để mở khóa $1.", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "Liên kết OneKey của bạn" + }, + "step1OnekeyWalletMsg": { + "message": "Cắm OneKey của bạn trực tiếp vào máy tính và mở khóa. Đảm bảo sử dụng cụm từ mật khẩu chính xác. Để biết thêm thông tin chi tiết về việc sử dụng ví phần cứng của bạn, $1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "Kết nối với Trezor" }, diff --git a/app/_locales/zh_CN/messages.json b/app/_locales/zh_CN/messages.json index 5d065a201762..f85b69138bd2 100644 --- a/app/_locales/zh_CN/messages.json +++ b/app/_locales/zh_CN/messages.json @@ -3662,6 +3662,39 @@ "onboardingPinExtensionTitle": { "message": "您的 MetaMask 安装完成!" }, + "onekey": { + "message": "OneKey" + }, + "onekeyBridgeInstallationRequired": { + "message": "硬件需要的 OneKey Bridge 软件,$1" + }, + "onekeyConnectDevice": { + "message": "连接设备" + }, + "onekeyDownloadBridge": { + "message": "下载 OneKey Bridge" + }, + "onekeyExitBootloaderMode": { + "message": "OneKey 需要退出引导模式才能使用该功能。" + }, + "onekeyForceUpdate": { + "message": "OneKey 固件需要更新。$1" + }, + "onekeyGoToUpdateFirmware": { + "message": "前往更新固件" + }, + "onekeyHardwareError": { + "message": "OneKey 硬件错误" + }, + "onekeyHardwareHelpLink": { + "message": "请访问我们的在线教程以获取详细的指南。" + }, + "onekeyNeedUpdateFirmware": { + "message": "需要更新 OneKey 固件才能使用该功能,$1" + }, + "onekeyWebUSBNotConnectedErrorMessage": { + "message": "需要用户授权才可以连接 OneKey 设备。如果您想要连接您的 OneKey,请点击“连接设备”并批准 USB 连接" + }, "onlyConnectTrust": { "message": "仅连接您信任的网站。$1", "description": "Text displayed above the buttons for connection confirmation. $1 is the link to the learn more web page." @@ -5387,6 +5420,13 @@ "message": "下载、设置并输入您的密码以解锁 $1。", "description": "$1 represents the `ledgerLiveApp` localization value" }, + "step1OnekeyWallet": { + "message": "关联您的 OneKey" + }, + "step1OnekeyWalletMsg": { + "message": "将您的 OneKey 直接插入电脑并解锁。确保使用正确的密语。关于更多使用您的硬件钱包的详细信息,$1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step1TrezorWallet": { "message": "关联您的 Trezor" }, diff --git a/app/_locales/zh_TW/messages.json b/app/_locales/zh_TW/messages.json index 1d6f30d3f441..e43c0de7ab3f 100644 --- a/app/_locales/zh_TW/messages.json +++ b/app/_locales/zh_TW/messages.json @@ -1114,6 +1114,13 @@ "message": "直接將錢包連接到電腦上。關於更多使用您的硬體錢包的詳細資訊,$1", "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" }, + "step1OnekeyWallet": { + "message": "插入 OneKey 錢包" + }, + "step1OnekeyWalletMsg": { + "message": "直接將錢包連接到電腦上。關於更多使用您的硬體錢包的詳細資訊,$1", + "description": "$1 represents the `hardwareWalletSupportLinkConversion` localization key" + }, "step2LedgerWallet": { "message": "插入 Ledger 錢包" }, diff --git a/app/scripts/controllers/encryption-public-key.ts b/app/scripts/controllers/encryption-public-key.ts index e40e63ab5aa0..711dce823d15 100644 --- a/app/scripts/controllers/encryption-public-key.ts +++ b/app/scripts/controllers/encryption-public-key.ts @@ -230,6 +230,14 @@ export default class EncryptionPublicKeyController extends BaseController< }); } + case KeyringType.oneKey: { + return new Promise((_, reject) => { + reject( + new Error('OneKey does not support eth_getEncryptionPublicKey.'), + ); + }); + } + case KeyringType.qr: { return Promise.reject( new Error('QR hardware does not support eth_getEncryptionPublicKey.'), diff --git a/app/scripts/lib/hardware-keyring-builder-factory.ts b/app/scripts/lib/hardware-keyring-builder-factory.ts index 1b617dd62fe6..ca93abc6abd6 100644 --- a/app/scripts/lib/hardware-keyring-builder-factory.ts +++ b/app/scripts/lib/hardware-keyring-builder-factory.ts @@ -3,6 +3,7 @@ import type { LedgerBridge, LedgerBridgeOptions, } from '@metamask/eth-ledger-bridge-keyring'; +import type { OneKeyBridge } from 'eth-onekey-bridge-keyring'; import { KeyringClass, Json } from '@metamask/utils'; import { FakeKeyringBridge } from '../../../test/stub/keyring-bridge'; @@ -12,7 +13,8 @@ import { FakeKeyringBridge } from '../../../test/stub/keyring-bridge'; export type HardwareTransportBridgeClass = | (new () => TrezorBridge) | (new () => LedgerBridge) - | (new () => FakeKeyringBridge); + | (new () => FakeKeyringBridge) + | (new () => OneKeyBridge); /** * Get builder function for Hardware keyrings which require an additional `opts` diff --git a/app/scripts/lib/hardware-onekey-keyring-builder-factory.ts b/app/scripts/lib/hardware-onekey-keyring-builder-factory.ts new file mode 100644 index 000000000000..1f1ade798352 --- /dev/null +++ b/app/scripts/lib/hardware-onekey-keyring-builder-factory.ts @@ -0,0 +1,49 @@ +import { + ONEKEY_HARDWARE_UI_EVENT, + type OneKeyBridge, +} from 'eth-onekey-bridge-keyring'; +import { KeyringClass, Json } from '@metamask/utils'; +import { Platform } from '../../../types/global'; +// eslint-disable-next-line import/no-restricted-paths +import { HARDWARE_ONEKEY_ERRORS_ROUTE } from '../../../ui/helpers/constants/routes'; + +/** + * A transport bridge between the keyring and the hardware device. + */ +export type HardwareTransportBridgeClass = new () => OneKeyBridge; + +/** + * Get builder function for Hardware keyrings which require an additional `opts` + * parameter, used to pass the transport bridge used by the keyring. + * + * Returns a builder function for `Keyring` with a `type` property. + * + * @param Keyring - The Keyring class for the builder. + * @param Bridge - The transport bridge class to use for the given Keyring. + * @param platform - The platform to use for the given Keyring. + * @returns A builder function for the given Keyring. + */ +export function hardwareOneKeyKeyringBuilderFactory( + Keyring: KeyringClass, + Bridge: HardwareTransportBridgeClass, + platform?: Platform, +) { + const builder = () => { + const keyring = new Keyring({ bridge: new Bridge() }); + if ('on' in keyring && typeof keyring.on === 'function') { + keyring.on( + ONEKEY_HARDWARE_UI_EVENT, + (payload: { type: string; code: number }) => { + platform?.openExtensionInBrowser?.( + `${HARDWARE_ONEKEY_ERRORS_ROUTE}/${payload.type ?? payload.code}`, + ); + }, + ); + } + return keyring; + }; + + builder.type = Keyring.type; + + return builder; +} diff --git a/app/scripts/lib/offscreen-bridge/onekey-offscreen-bridge.ts b/app/scripts/lib/offscreen-bridge/onekey-offscreen-bridge.ts new file mode 100644 index 000000000000..3912d1f95bfe --- /dev/null +++ b/app/scripts/lib/offscreen-bridge/onekey-offscreen-bridge.ts @@ -0,0 +1,202 @@ +import { + ONEKEY_HARDWARE_UI_EVENT, + OneKeyBridge, +} from 'eth-onekey-bridge-keyring'; +import type { + ConnectSettings, + Params, + Response as OneKeyResponse, + EVMSignedTx, + EVMSignTransactionParams, + EVMSignMessageParams, + EVMSignTypedDataParams, + EVMGetPublicKeyParams, +} from '@onekeyfe/hd-core'; +import type { EthereumMessageSignature } from '@onekeyfe/hd-transport'; +import { + OffscreenCommunicationEvents, + OffscreenCommunicationTarget, + OneKeyAction, +} from '../../../../shared/constants/offscreen-communication'; + +/** + * This class is used as a custom bridge for the OneKey connection. Every + * hardware wallet keyring also requires a bridge that has a known interface + * that the keyring can call into for specific functions. The bridge then makes + * whatever calls or requests it needs to in order to fulfill the request from + * the keyring. In this case, the bridge is used to communicate with the + * Offscreen Document. Inside the Offscreen document the onekey script is + * loaded and registers a listener for these calls and communicate with the + * onekey/hd-web-sdk library. + */ +export class OneKeyOffscreenBridge implements OneKeyBridge { + model: string | undefined; + + private listeners: Map void> = new Map(); + + on(event: string, listener: (payload: unknown) => void) { + this.listeners.set(event, listener); + } + + off(event: string) { + if (!this.listeners.has(event)) { + return; + } + this.listeners.delete(event); + } + + init(settings: Partial) { + chrome.runtime.onMessage.addListener((msg) => { + if ( + msg.target === OffscreenCommunicationTarget.extension && + msg.event === OffscreenCommunicationEvents.onekeyDeviceConnect + ) { + this.model = msg.payload.model; + } else if ( + msg.target === OffscreenCommunicationTarget.extension && + msg.event === OffscreenCommunicationEvents.onekeyDeviceConnectError + ) { + const listener = this.listeners.get(ONEKEY_HARDWARE_UI_EVENT); + if (listener) { + listener(msg.payload); + } + } + }); + + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.init, + params: { + ...settings, + env: window.navigator.usb ? 'webusb' : 'webextension', + }, + }, + () => { + resolve(); + }, + ); + }); + } + + dispose() { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.dispose, + }, + () => { + resolve(); + }, + ); + }); + } + + updateTransportMethod(transportType: string): Promise { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.switchTransport, + params: { transportType }, + }, + () => { + resolve(); + }, + ); + }); + } + + getPublicKey(params: { path: string; coin: string }) { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.getPublicKey, + params, + }, + (response) => { + resolve(response); + }, + ); + }) as OneKeyResponse<{ publicKey: string; chainCode: string }>; + } + + batchGetPublicKey( + params: Params & { bundle: EVMGetPublicKeyParams[] }, + ) { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.batchGetPublicKey, + params, + }, + (response) => { + resolve(response); + }, + ); + }) as OneKeyResponse<{ pub: string }[]>; + } + + getPassphraseState() { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.getPassphraseState, + }, + (response) => { + resolve(response); + }, + ); + }) as OneKeyResponse; + } + + ethereumSignTransaction(params: Params) { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.signTransaction, + params, + }, + (response) => { + resolve(response); + }, + ); + }) as OneKeyResponse; + } + + ethereumSignMessage(params: Params) { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.signMessage, + params, + }, + (response) => { + resolve(response); + }, + ); + }) as OneKeyResponse; + } + + ethereumSignTypedData(params: Params) { + return new Promise((resolve) => { + chrome.runtime.sendMessage( + { + target: OffscreenCommunicationTarget.onekeyOffscreen, + action: OneKeyAction.signTypedData, + params, + }, + (response) => { + resolve(response); + }, + ); + }) as OneKeyResponse; + } +} diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index 081b60a7ce6c..8ea668426ba5 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -26,7 +26,6 @@ import { JsonRpcError, rpcErrors } from '@metamask/rpc-errors'; import { Mutex } from 'await-semaphore'; import log from 'loglevel'; import { - OneKeyKeyring, TrezorConnectBridge, TrezorKeyring, } from '@metamask/eth-trezor-keyring'; @@ -148,7 +147,7 @@ import { parseCaipAccountId, } from '@metamask/utils'; import { normalize } from '@metamask/eth-sig-util'; - +import { OneKeyKeyring, OneKeyWebBridge } from 'eth-onekey-bridge-keyring'; import { TRIGGER_TYPES } from '@metamask/notification-services-controller/notification-services'; import { @@ -423,6 +422,8 @@ import { onRpcEndpointDegraded, } from './lib/network-controller/messenger-action-handlers'; import { getIsQuicknodeEndpointUrl } from './lib/network-controller/utils'; +import { OneKeyOffscreenBridge } from './lib/offscreen-bridge/onekey-offscreen-bridge'; +import { hardwareOneKeyKeyringBuilderFactory } from './lib/hardware-onekey-keyring-builder-factory'; export const METAMASK_CONTROLLER_EVENTS = { // Fired after state changes that impact the extension badge (unapproved msg count) @@ -1090,10 +1091,6 @@ export default class MetamaskController extends EventEmitter { keyring: keyringOverrides?.trezor || TrezorKeyring, bridge: keyringOverrides?.trezorBridge || TrezorConnectBridge, }, - { - keyring: keyringOverrides?.oneKey || OneKeyKeyring, - bridge: keyringOverrides?.oneKeyBridge || TrezorConnectBridge, - }, { keyring: keyringOverrides?.ledger || LedgerKeyring, bridge: keyringOverrides?.ledgerBridge || LedgerIframeBridge, @@ -1112,21 +1109,29 @@ export default class MetamaskController extends EventEmitter { ), ), ); + additionalKeyrings.push( + hardwareOneKeyKeyringBuilderFactory( + keyringOverrides?.oneKey || OneKeyKeyring, + keyringOverrides?.oneKeyBridge || OneKeyWebBridge, + this.platform, + ), + ); } else { additionalKeyrings.push( hardwareKeyringBuilderFactory( TrezorKeyring, keyringOverrides?.trezorBridge || TrezorOffscreenBridge, ), - hardwareKeyringBuilderFactory( - OneKeyKeyring, - keyringOverrides?.oneKey || TrezorOffscreenBridge, - ), hardwareKeyringBuilderFactory( LedgerKeyring, keyringOverrides?.ledgerBridge || LedgerOffscreenBridge, ), keyringBuilderFactory(LatticeKeyringOffscreen), + hardwareOneKeyKeyringBuilderFactory( + OneKeyKeyring, + keyringOverrides?.oneKey || OneKeyOffscreenBridge, + this.platform, + ), ); } @@ -5384,6 +5389,19 @@ export default class MetamaskController extends EventEmitter { ); } + /** + * Get hardware type that will be sent for metrics logging. + * + * @param {string} address - Address to retrieve the keyring from + * @returns {HardwareKeyringType} Keyring hardware type + */ + async getHardwareTypeForMetric(address) { + return await this.keyringController.withKeyring( + { address }, + ({ keyring }) => HardwareKeyringType[keyring.type], + ); + } + /** * Check if the device is unlocked * @@ -5400,19 +5418,6 @@ export default class MetamaskController extends EventEmitter { ); } - /** - * Get hardware type that will be sent for metrics logging. - * - * @param {string} address - Address to retrieve the keyring from - * @returns {HardwareKeyringType} Keyring hardware type - */ - async getHardwareTypeForMetric(address) { - return await this.keyringController.withKeyring( - { address }, - ({ keyring }) => HardwareKeyringType[keyring.type], - ); - } - /** * Clear * diff --git a/lavamoat/browserify/beta/policy.json b/lavamoat/browserify/beta/policy.json index 8d031a0f0ace..23e67bfeb342 100644 --- a/lavamoat/browserify/beta/policy.json +++ b/lavamoat/browserify/beta/policy.json @@ -46,17 +46,17 @@ "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } @@ -74,7 +74,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -98,7 +98,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -111,7 +111,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -124,7 +124,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -137,7 +137,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -163,7 +163,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -189,7 +189,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -202,7 +202,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -215,7 +215,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -228,7 +228,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -241,7 +241,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -254,7 +254,20 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, + "browserify>buffer": true, + "@ethereumjs/tx>ethereum-cryptography": true, + "webpack>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/util>micro-ftch": true + } + }, + "eth-onekey-bridge-keyring>@ethereumjs/util": { + "globals": { + "console.warn": true + }, + "packages": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -730,7 +743,7 @@ }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/util": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -804,7 +817,7 @@ }, "@keystonehq/metamask-airgapped-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -1391,7 +1404,7 @@ }, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1403,7 +1416,7 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1415,7 +1428,7 @@ }, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1439,7 +1452,7 @@ }, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1451,7 +1464,7 @@ }, "@metamask/eth-snap-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1463,7 +1476,7 @@ }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1475,7 +1488,7 @@ }, "@metamask/keyring-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1487,7 +1500,7 @@ }, "@metamask/signature-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/signature-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/signature-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -2433,6 +2446,106 @@ "crypto": true } }, + "@onekeyfe/hd-core": { + "globals": { + "AbortController": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "location": true, + "navigator": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@noble/hashes": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": true, + "@onekeyfe/hd-core>axios": true, + "@onekeyfe/hd-core>bignumber.js": true, + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>jszip": true, + "lodash": true, + "@onekeyfe/hd-core>ripple-keypairs": true, + "semver": true + } + }, + "@onekeyfe/hd-shared": { + "globals": { + "SuppressedError": true, + "setTimeout": true + } + }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": { + "globals": { + "SuppressedError": true + }, + "packages": { + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": true + } + }, + "@onekeyfe/hd-web-sdk": { + "globals": { + "$$onekeyAppStorage": true, + "$onekey": "write", + "AbortController": true, + "AggregateError": true, + "Blob": true, + "BlobBuilder": true, + "Buffer": true, + "DEBUG_LOGGER_STORAGE_KEY": true, + "FileReader": true, + "FinalizationRegistry": true, + "FormData": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "WeakRef": true, + "Web3RpcError": true, + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebKitBlobBuilder": true, + "XMLHttpRequest": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "consoleErrorInDev": true, + "crypto": true, + "define": true, + "document": true, + "errorValues": true, + "global": "write", + "globalThis": true, + "localStorage": true, + "location": true, + "msCrypto": true, + "navigator": true, + "performance.now": true, + "process": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "@open-rpc/schema-utils-js": { "packages": { "@open-rpc/schema-utils-js>@json-schema-tools/dereferencer": true, @@ -2455,18 +2568,18 @@ "navigator.userAgent": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": { "globals": { "console.log": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": { "globals": { "XMLHttpRequest": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true } }, "@reduxjs/toolkit": { @@ -3194,13 +3307,30 @@ "browserify>timers-browserify": true } }, + "@onekeyfe/hd-core>axios": { + "globals": { + "Blob": true, + "FormData": true, + "XMLHttpRequest": true, + "btoa": true, + "console.warn": true, + "document": true, + "location.href": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true + } + }, "@metamask/snaps-controllers>tar-stream>b4a": { "globals": { "TextDecoder": true, "TextEncoder": true } }, - "@ensdomains/content-hash>multihashes>multibase>base-x": { + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": { "packages": { "koa>content-disposition>safe-buffer": true } @@ -3252,6 +3382,12 @@ "define": true } }, + "@onekeyfe/hd-core>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@trezor/connect-web>@trezor/utils>bignumber.js": { "globals": { "crypto": true, @@ -3304,7 +3440,7 @@ "define": true } }, - "@metamask/ppom-validator>elliptic>brorand": { + "@onekeyfe/hd-core>ripple-keypairs>brorand": { "globals": { "crypto": true, "msCrypto": true @@ -3370,7 +3506,7 @@ }, "ethereumjs-util>ethereum-cryptography>bs58check>bs58": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true } }, "ethereumjs-util>ethereum-cryptography>bs58check": { @@ -3414,6 +3550,15 @@ "semver": true } }, + "@onekeyfe/hd-core>bytebuffer": { + "globals": { + "console": true, + "define": true + }, + "packages": { + "@onekeyfe/hd-core>bytebuffer>long": true + } + }, "string.prototype.matchall>call-bind>call-bind-apply-helpers": { "packages": { "string.prototype.matchall>es-abstract>es-errors": true, @@ -3768,7 +3913,7 @@ "@metamask/ppom-validator>elliptic": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, "ethers>@ethersproject/sha2>hash.js": true, "@metamask/ppom-validator>elliptic>hmac-drbg": true, "pumpify>inherits": true, @@ -3836,6 +3981,21 @@ "eth-method-registry>@metamask/ethjs-query": true } }, + "eth-onekey-bridge-keyring": { + "globals": { + "console.log": true + }, + "packages": { + "@ethereumjs/tx": true, + "eth-onekey-bridge-keyring>@ethereumjs/util": true, + "@metamask/eth-sig-util": true, + "@onekeyfe/hd-core": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-web-sdk": true, + "browserify>buffer": true, + "webpack>events": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, @@ -4377,6 +4537,24 @@ "react-router-dom>tiny-warning": true } }, + "@onekeyfe/hd-core>jszip": { + "globals": { + "Blob": true, + "BlobBuilder": true, + "FileReader": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true, + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "ethereumjs-util>ethereum-cryptography>keccak": { "packages": { "browserify>buffer": true, @@ -4433,6 +4611,17 @@ "navigator": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true + } + }, + "@onekeyfe/hd-core>bytebuffer>long": { + "globals": { + "define": true + } + }, "lottie-web": { "globals": { "Blob": true, @@ -4531,7 +4720,7 @@ "crypto-browserify>diffie-hellman>miller-rabin": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true + "@onekeyfe/hd-core>ripple-keypairs>brorand": true } }, "@ensdomains/content-hash>cids>multibase": { @@ -4545,7 +4734,7 @@ }, "@ensdomains/content-hash>multihashes>multibase": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, "browserify>buffer": true, "@ensdomains/content-hash>multihashes>web-encoding": true } @@ -4791,22 +4980,40 @@ "watchify>xtend": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": { + "globals": { + "process": true, + "setTimeout": true + }, + "packages": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true + } + }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs": { "globals": { "process": true, "setTimeout": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/base64": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/eventemitter": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/float": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/path": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/pool": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/utf8": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true } }, "crypto-browserify>public-encrypt": { @@ -5345,6 +5552,25 @@ "pumpify>inherits": true } }, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": { + "packages": { + "browserify>assert": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true + } + }, + "@onekeyfe/hd-core>ripple-keypairs": { + "packages": { + "browserify>assert": true, + "bn.js": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, + "browserify>buffer": true, + "@metamask/ppom-validator>elliptic": true, + "ethers>@ethersproject/sha2>hash.js": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": true + } + }, "eth-lattice-keyring>rlp": { "globals": { "TextEncoder": true diff --git a/lavamoat/browserify/flask/policy.json b/lavamoat/browserify/flask/policy.json index 8d031a0f0ace..23e67bfeb342 100644 --- a/lavamoat/browserify/flask/policy.json +++ b/lavamoat/browserify/flask/policy.json @@ -46,17 +46,17 @@ "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } @@ -74,7 +74,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -98,7 +98,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -111,7 +111,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -124,7 +124,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -137,7 +137,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -163,7 +163,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -189,7 +189,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -202,7 +202,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -215,7 +215,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -228,7 +228,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -241,7 +241,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -254,7 +254,20 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, + "browserify>buffer": true, + "@ethereumjs/tx>ethereum-cryptography": true, + "webpack>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/util>micro-ftch": true + } + }, + "eth-onekey-bridge-keyring>@ethereumjs/util": { + "globals": { + "console.warn": true + }, + "packages": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -730,7 +743,7 @@ }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/util": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -804,7 +817,7 @@ }, "@keystonehq/metamask-airgapped-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -1391,7 +1404,7 @@ }, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1403,7 +1416,7 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1415,7 +1428,7 @@ }, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1439,7 +1452,7 @@ }, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1451,7 +1464,7 @@ }, "@metamask/eth-snap-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1463,7 +1476,7 @@ }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1475,7 +1488,7 @@ }, "@metamask/keyring-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1487,7 +1500,7 @@ }, "@metamask/signature-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/signature-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/signature-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -2433,6 +2446,106 @@ "crypto": true } }, + "@onekeyfe/hd-core": { + "globals": { + "AbortController": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "location": true, + "navigator": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@noble/hashes": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": true, + "@onekeyfe/hd-core>axios": true, + "@onekeyfe/hd-core>bignumber.js": true, + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>jszip": true, + "lodash": true, + "@onekeyfe/hd-core>ripple-keypairs": true, + "semver": true + } + }, + "@onekeyfe/hd-shared": { + "globals": { + "SuppressedError": true, + "setTimeout": true + } + }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": { + "globals": { + "SuppressedError": true + }, + "packages": { + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": true + } + }, + "@onekeyfe/hd-web-sdk": { + "globals": { + "$$onekeyAppStorage": true, + "$onekey": "write", + "AbortController": true, + "AggregateError": true, + "Blob": true, + "BlobBuilder": true, + "Buffer": true, + "DEBUG_LOGGER_STORAGE_KEY": true, + "FileReader": true, + "FinalizationRegistry": true, + "FormData": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "WeakRef": true, + "Web3RpcError": true, + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebKitBlobBuilder": true, + "XMLHttpRequest": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "consoleErrorInDev": true, + "crypto": true, + "define": true, + "document": true, + "errorValues": true, + "global": "write", + "globalThis": true, + "localStorage": true, + "location": true, + "msCrypto": true, + "navigator": true, + "performance.now": true, + "process": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "@open-rpc/schema-utils-js": { "packages": { "@open-rpc/schema-utils-js>@json-schema-tools/dereferencer": true, @@ -2455,18 +2568,18 @@ "navigator.userAgent": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": { "globals": { "console.log": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": { "globals": { "XMLHttpRequest": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true } }, "@reduxjs/toolkit": { @@ -3194,13 +3307,30 @@ "browserify>timers-browserify": true } }, + "@onekeyfe/hd-core>axios": { + "globals": { + "Blob": true, + "FormData": true, + "XMLHttpRequest": true, + "btoa": true, + "console.warn": true, + "document": true, + "location.href": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true + } + }, "@metamask/snaps-controllers>tar-stream>b4a": { "globals": { "TextDecoder": true, "TextEncoder": true } }, - "@ensdomains/content-hash>multihashes>multibase>base-x": { + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": { "packages": { "koa>content-disposition>safe-buffer": true } @@ -3252,6 +3382,12 @@ "define": true } }, + "@onekeyfe/hd-core>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@trezor/connect-web>@trezor/utils>bignumber.js": { "globals": { "crypto": true, @@ -3304,7 +3440,7 @@ "define": true } }, - "@metamask/ppom-validator>elliptic>brorand": { + "@onekeyfe/hd-core>ripple-keypairs>brorand": { "globals": { "crypto": true, "msCrypto": true @@ -3370,7 +3506,7 @@ }, "ethereumjs-util>ethereum-cryptography>bs58check>bs58": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true } }, "ethereumjs-util>ethereum-cryptography>bs58check": { @@ -3414,6 +3550,15 @@ "semver": true } }, + "@onekeyfe/hd-core>bytebuffer": { + "globals": { + "console": true, + "define": true + }, + "packages": { + "@onekeyfe/hd-core>bytebuffer>long": true + } + }, "string.prototype.matchall>call-bind>call-bind-apply-helpers": { "packages": { "string.prototype.matchall>es-abstract>es-errors": true, @@ -3768,7 +3913,7 @@ "@metamask/ppom-validator>elliptic": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, "ethers>@ethersproject/sha2>hash.js": true, "@metamask/ppom-validator>elliptic>hmac-drbg": true, "pumpify>inherits": true, @@ -3836,6 +3981,21 @@ "eth-method-registry>@metamask/ethjs-query": true } }, + "eth-onekey-bridge-keyring": { + "globals": { + "console.log": true + }, + "packages": { + "@ethereumjs/tx": true, + "eth-onekey-bridge-keyring>@ethereumjs/util": true, + "@metamask/eth-sig-util": true, + "@onekeyfe/hd-core": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-web-sdk": true, + "browserify>buffer": true, + "webpack>events": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, @@ -4377,6 +4537,24 @@ "react-router-dom>tiny-warning": true } }, + "@onekeyfe/hd-core>jszip": { + "globals": { + "Blob": true, + "BlobBuilder": true, + "FileReader": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true, + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "ethereumjs-util>ethereum-cryptography>keccak": { "packages": { "browserify>buffer": true, @@ -4433,6 +4611,17 @@ "navigator": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true + } + }, + "@onekeyfe/hd-core>bytebuffer>long": { + "globals": { + "define": true + } + }, "lottie-web": { "globals": { "Blob": true, @@ -4531,7 +4720,7 @@ "crypto-browserify>diffie-hellman>miller-rabin": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true + "@onekeyfe/hd-core>ripple-keypairs>brorand": true } }, "@ensdomains/content-hash>cids>multibase": { @@ -4545,7 +4734,7 @@ }, "@ensdomains/content-hash>multihashes>multibase": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, "browserify>buffer": true, "@ensdomains/content-hash>multihashes>web-encoding": true } @@ -4791,22 +4980,40 @@ "watchify>xtend": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": { + "globals": { + "process": true, + "setTimeout": true + }, + "packages": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true + } + }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs": { "globals": { "process": true, "setTimeout": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/base64": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/eventemitter": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/float": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/path": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/pool": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/utf8": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true } }, "crypto-browserify>public-encrypt": { @@ -5345,6 +5552,25 @@ "pumpify>inherits": true } }, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": { + "packages": { + "browserify>assert": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true + } + }, + "@onekeyfe/hd-core>ripple-keypairs": { + "packages": { + "browserify>assert": true, + "bn.js": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, + "browserify>buffer": true, + "@metamask/ppom-validator>elliptic": true, + "ethers>@ethersproject/sha2>hash.js": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": true + } + }, "eth-lattice-keyring>rlp": { "globals": { "TextEncoder": true diff --git a/lavamoat/browserify/main/policy.json b/lavamoat/browserify/main/policy.json index 8d031a0f0ace..23e67bfeb342 100644 --- a/lavamoat/browserify/main/policy.json +++ b/lavamoat/browserify/main/policy.json @@ -46,17 +46,17 @@ "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } @@ -74,7 +74,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -98,7 +98,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -111,7 +111,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -124,7 +124,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -137,7 +137,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -163,7 +163,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -189,7 +189,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -202,7 +202,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -215,7 +215,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -228,7 +228,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -241,7 +241,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -254,7 +254,20 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, + "browserify>buffer": true, + "@ethereumjs/tx>ethereum-cryptography": true, + "webpack>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/util>micro-ftch": true + } + }, + "eth-onekey-bridge-keyring>@ethereumjs/util": { + "globals": { + "console.warn": true + }, + "packages": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -730,7 +743,7 @@ }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/util": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -804,7 +817,7 @@ }, "@keystonehq/metamask-airgapped-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -1391,7 +1404,7 @@ }, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1403,7 +1416,7 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1415,7 +1428,7 @@ }, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1439,7 +1452,7 @@ }, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1451,7 +1464,7 @@ }, "@metamask/eth-snap-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1463,7 +1476,7 @@ }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1475,7 +1488,7 @@ }, "@metamask/keyring-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1487,7 +1500,7 @@ }, "@metamask/signature-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/signature-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/signature-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -2433,6 +2446,106 @@ "crypto": true } }, + "@onekeyfe/hd-core": { + "globals": { + "AbortController": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "location": true, + "navigator": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@noble/hashes": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": true, + "@onekeyfe/hd-core>axios": true, + "@onekeyfe/hd-core>bignumber.js": true, + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>jszip": true, + "lodash": true, + "@onekeyfe/hd-core>ripple-keypairs": true, + "semver": true + } + }, + "@onekeyfe/hd-shared": { + "globals": { + "SuppressedError": true, + "setTimeout": true + } + }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": { + "globals": { + "SuppressedError": true + }, + "packages": { + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": true + } + }, + "@onekeyfe/hd-web-sdk": { + "globals": { + "$$onekeyAppStorage": true, + "$onekey": "write", + "AbortController": true, + "AggregateError": true, + "Blob": true, + "BlobBuilder": true, + "Buffer": true, + "DEBUG_LOGGER_STORAGE_KEY": true, + "FileReader": true, + "FinalizationRegistry": true, + "FormData": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "WeakRef": true, + "Web3RpcError": true, + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebKitBlobBuilder": true, + "XMLHttpRequest": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "consoleErrorInDev": true, + "crypto": true, + "define": true, + "document": true, + "errorValues": true, + "global": "write", + "globalThis": true, + "localStorage": true, + "location": true, + "msCrypto": true, + "navigator": true, + "performance.now": true, + "process": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "@open-rpc/schema-utils-js": { "packages": { "@open-rpc/schema-utils-js>@json-schema-tools/dereferencer": true, @@ -2455,18 +2568,18 @@ "navigator.userAgent": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": { "globals": { "console.log": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": { "globals": { "XMLHttpRequest": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true } }, "@reduxjs/toolkit": { @@ -3194,13 +3307,30 @@ "browserify>timers-browserify": true } }, + "@onekeyfe/hd-core>axios": { + "globals": { + "Blob": true, + "FormData": true, + "XMLHttpRequest": true, + "btoa": true, + "console.warn": true, + "document": true, + "location.href": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true + } + }, "@metamask/snaps-controllers>tar-stream>b4a": { "globals": { "TextDecoder": true, "TextEncoder": true } }, - "@ensdomains/content-hash>multihashes>multibase>base-x": { + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": { "packages": { "koa>content-disposition>safe-buffer": true } @@ -3252,6 +3382,12 @@ "define": true } }, + "@onekeyfe/hd-core>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@trezor/connect-web>@trezor/utils>bignumber.js": { "globals": { "crypto": true, @@ -3304,7 +3440,7 @@ "define": true } }, - "@metamask/ppom-validator>elliptic>brorand": { + "@onekeyfe/hd-core>ripple-keypairs>brorand": { "globals": { "crypto": true, "msCrypto": true @@ -3370,7 +3506,7 @@ }, "ethereumjs-util>ethereum-cryptography>bs58check>bs58": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true } }, "ethereumjs-util>ethereum-cryptography>bs58check": { @@ -3414,6 +3550,15 @@ "semver": true } }, + "@onekeyfe/hd-core>bytebuffer": { + "globals": { + "console": true, + "define": true + }, + "packages": { + "@onekeyfe/hd-core>bytebuffer>long": true + } + }, "string.prototype.matchall>call-bind>call-bind-apply-helpers": { "packages": { "string.prototype.matchall>es-abstract>es-errors": true, @@ -3768,7 +3913,7 @@ "@metamask/ppom-validator>elliptic": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, "ethers>@ethersproject/sha2>hash.js": true, "@metamask/ppom-validator>elliptic>hmac-drbg": true, "pumpify>inherits": true, @@ -3836,6 +3981,21 @@ "eth-method-registry>@metamask/ethjs-query": true } }, + "eth-onekey-bridge-keyring": { + "globals": { + "console.log": true + }, + "packages": { + "@ethereumjs/tx": true, + "eth-onekey-bridge-keyring>@ethereumjs/util": true, + "@metamask/eth-sig-util": true, + "@onekeyfe/hd-core": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-web-sdk": true, + "browserify>buffer": true, + "webpack>events": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, @@ -4377,6 +4537,24 @@ "react-router-dom>tiny-warning": true } }, + "@onekeyfe/hd-core>jszip": { + "globals": { + "Blob": true, + "BlobBuilder": true, + "FileReader": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true, + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "ethereumjs-util>ethereum-cryptography>keccak": { "packages": { "browserify>buffer": true, @@ -4433,6 +4611,17 @@ "navigator": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true + } + }, + "@onekeyfe/hd-core>bytebuffer>long": { + "globals": { + "define": true + } + }, "lottie-web": { "globals": { "Blob": true, @@ -4531,7 +4720,7 @@ "crypto-browserify>diffie-hellman>miller-rabin": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true + "@onekeyfe/hd-core>ripple-keypairs>brorand": true } }, "@ensdomains/content-hash>cids>multibase": { @@ -4545,7 +4734,7 @@ }, "@ensdomains/content-hash>multihashes>multibase": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, "browserify>buffer": true, "@ensdomains/content-hash>multihashes>web-encoding": true } @@ -4791,22 +4980,40 @@ "watchify>xtend": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": { + "globals": { + "process": true, + "setTimeout": true + }, + "packages": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true + } + }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs": { "globals": { "process": true, "setTimeout": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/base64": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/eventemitter": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/float": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/path": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/pool": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/utf8": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true } }, "crypto-browserify>public-encrypt": { @@ -5345,6 +5552,25 @@ "pumpify>inherits": true } }, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": { + "packages": { + "browserify>assert": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true + } + }, + "@onekeyfe/hd-core>ripple-keypairs": { + "packages": { + "browserify>assert": true, + "bn.js": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, + "browserify>buffer": true, + "@metamask/ppom-validator>elliptic": true, + "ethers>@ethersproject/sha2>hash.js": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": true + } + }, "eth-lattice-keyring>rlp": { "globals": { "TextEncoder": true diff --git a/lavamoat/browserify/mmi/policy.json b/lavamoat/browserify/mmi/policy.json index 335d085eb694..9987f0d6d828 100644 --- a/lavamoat/browserify/mmi/policy.json +++ b/lavamoat/browserify/mmi/policy.json @@ -46,17 +46,17 @@ "TextEncoder": true } }, - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@ethereumjs/rlp": { + "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { "globals": { "TextEncoder": true } }, - "@metamask/eth-ledger-bridge-keyring>@metamask/eth-sig-util>@ethereumjs/rlp": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": { "globals": { "TextEncoder": true } @@ -74,7 +74,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -98,7 +98,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -111,7 +111,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -124,7 +124,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -137,7 +137,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -150,7 +150,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -163,7 +163,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -176,7 +176,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -189,7 +189,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -202,7 +202,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -228,7 +228,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -241,7 +241,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -254,7 +254,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -267,7 +267,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -280,7 +280,7 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -293,7 +293,20 @@ "console.warn": true }, "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, + "browserify>buffer": true, + "@ethereumjs/tx>ethereum-cryptography": true, + "webpack>events": true, + "browserify>insert-module-globals>is-buffer": true, + "eth-lattice-keyring>@ethereumjs/util>micro-ftch": true + } + }, + "eth-onekey-bridge-keyring>@ethereumjs/util": { + "globals": { + "console.warn": true + }, + "packages": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "browserify>buffer": true, "@ethereumjs/tx>ethereum-cryptography": true, "webpack>events": true, @@ -769,7 +782,7 @@ }, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@ethereumjs/util": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -843,7 +856,7 @@ }, "@keystonehq/metamask-airgapped-keyring": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@ethereumjs/tx": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/base-eth-keyring": true, "@keystonehq/metamask-airgapped-keyring>@keystonehq/bc-ur-registry-eth": true, @@ -1522,7 +1535,7 @@ }, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-hd-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1534,7 +1547,7 @@ }, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1546,7 +1559,7 @@ }, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1570,7 +1583,7 @@ }, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-simple-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1582,7 +1595,7 @@ }, "@metamask/eth-snap-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-snap-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1594,7 +1607,7 @@ }, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/eth-trezor-keyring>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1606,7 +1619,7 @@ }, "@metamask/keyring-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/keyring-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -1618,7 +1631,7 @@ }, "@metamask/signature-controller>@metamask/eth-sig-util": { "packages": { - "@keystonehq/metamask-airgapped-keyring>@ethereumjs/rlp": true, + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true, "@metamask/signature-controller>@metamask/eth-sig-util>@ethereumjs/util": true, "@metamask/signature-controller>@metamask/eth-sig-util>@metamask/abi-utils": true, "@metamask/utils": true, @@ -2564,6 +2577,106 @@ "crypto": true } }, + "@onekeyfe/hd-core": { + "globals": { + "AbortController": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "location": true, + "navigator": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "@noble/hashes": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": true, + "@onekeyfe/hd-core>axios": true, + "@onekeyfe/hd-core>bignumber.js": true, + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>jszip": true, + "lodash": true, + "@onekeyfe/hd-core>ripple-keypairs": true, + "semver": true + } + }, + "@onekeyfe/hd-shared": { + "globals": { + "SuppressedError": true, + "setTimeout": true + } + }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport": { + "globals": { + "SuppressedError": true + }, + "packages": { + "browserify>buffer": true, + "@onekeyfe/hd-core>bytebuffer": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": true + } + }, + "@onekeyfe/hd-web-sdk": { + "globals": { + "$$onekeyAppStorage": true, + "$onekey": "write", + "AbortController": true, + "AggregateError": true, + "Blob": true, + "BlobBuilder": true, + "Buffer": true, + "DEBUG_LOGGER_STORAGE_KEY": true, + "FileReader": true, + "FinalizationRegistry": true, + "FormData": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "ONEKEY_CONNECT_SRC": true, + "SuppressedError": true, + "TextEncoder": true, + "WeakRef": true, + "Web3RpcError": true, + "WebAssembly.Instance": true, + "WebAssembly.Module": true, + "WebKitBlobBuilder": true, + "XMLHttpRequest": true, + "addEventListener": true, + "btoa": true, + "chrome": true, + "clearInterval": true, + "clearTimeout": true, + "console": true, + "consoleErrorInDev": true, + "crypto": true, + "define": true, + "document": true, + "errorValues": true, + "global": "write", + "globalThis": true, + "localStorage": true, + "location": true, + "msCrypto": true, + "navigator": true, + "performance.now": true, + "process": true, + "removeEventListener": true, + "setInterval": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "@open-rpc/schema-utils-js": { "packages": { "@open-rpc/schema-utils-js>@json-schema-tools/dereferencer": true, @@ -2586,18 +2699,18 @@ "navigator.userAgent": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": { "globals": { "console.log": true } }, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": { "globals": { "XMLHttpRequest": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true } }, "@reduxjs/toolkit": { @@ -3325,13 +3438,30 @@ "browserify>timers-browserify": true } }, + "@onekeyfe/hd-core>axios": { + "globals": { + "Blob": true, + "FormData": true, + "XMLHttpRequest": true, + "btoa": true, + "console.warn": true, + "document": true, + "location.href": true, + "navigator": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true + } + }, "@metamask/snaps-controllers>tar-stream>b4a": { "globals": { "TextDecoder": true, "TextEncoder": true } }, - "@ensdomains/content-hash>multihashes>multibase>base-x": { + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": { "packages": { "koa>content-disposition>safe-buffer": true } @@ -3383,6 +3513,12 @@ "define": true } }, + "@onekeyfe/hd-core>bignumber.js": { + "globals": { + "crypto": true, + "define": true + } + }, "@trezor/connect-web>@trezor/utils>bignumber.js": { "globals": { "crypto": true, @@ -3435,7 +3571,7 @@ "define": true } }, - "@metamask/ppom-validator>elliptic>brorand": { + "@onekeyfe/hd-core>ripple-keypairs>brorand": { "globals": { "crypto": true, "msCrypto": true @@ -3501,7 +3637,7 @@ }, "ethereumjs-util>ethereum-cryptography>bs58check>bs58": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true } }, "ethereumjs-util>ethereum-cryptography>bs58check": { @@ -3545,6 +3681,15 @@ "semver": true } }, + "@onekeyfe/hd-core>bytebuffer": { + "globals": { + "console": true, + "define": true + }, + "packages": { + "@onekeyfe/hd-core>bytebuffer>long": true + } + }, "string.prototype.matchall>call-bind>call-bind-apply-helpers": { "packages": { "string.prototype.matchall>es-abstract>es-errors": true, @@ -3899,7 +4044,7 @@ "@metamask/ppom-validator>elliptic": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, "ethers>@ethersproject/sha2>hash.js": true, "@metamask/ppom-validator>elliptic>hmac-drbg": true, "pumpify>inherits": true, @@ -3967,6 +4112,21 @@ "eth-method-registry>@metamask/ethjs-query": true } }, + "eth-onekey-bridge-keyring": { + "globals": { + "console.log": true + }, + "packages": { + "@ethereumjs/tx": true, + "eth-onekey-bridge-keyring>@ethereumjs/util": true, + "@metamask/eth-sig-util": true, + "@onekeyfe/hd-core": true, + "@onekeyfe/hd-shared": true, + "@onekeyfe/hd-web-sdk": true, + "browserify>buffer": true, + "webpack>events": true + } + }, "@ethereumjs/tx>ethereum-cryptography": { "globals": { "TextDecoder": true, @@ -4508,6 +4668,24 @@ "react-router-dom>tiny-warning": true } }, + "@onekeyfe/hd-core>jszip": { + "globals": { + "Blob": true, + "BlobBuilder": true, + "FileReader": true, + "MSBlobBuilder": true, + "MessageChannel": true, + "MozBlobBuilder": true, + "WebKitBlobBuilder": true, + "define": true, + "setTimeout": true + }, + "packages": { + "browserify>buffer": true, + "process": true, + "browserify>timers-browserify": true + } + }, "ethereumjs-util>ethereum-cryptography>keccak": { "packages": { "browserify>buffer": true, @@ -4564,6 +4742,17 @@ "navigator": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>long": { + "globals": { + "WebAssembly.Instance": true, + "WebAssembly.Module": true + } + }, + "@onekeyfe/hd-core>bytebuffer>long": { + "globals": { + "define": true + } + }, "lottie-web": { "globals": { "Blob": true, @@ -4662,7 +4851,7 @@ "crypto-browserify>diffie-hellman>miller-rabin": { "packages": { "bn.js": true, - "@metamask/ppom-validator>elliptic>brorand": true + "@onekeyfe/hd-core>ripple-keypairs>brorand": true } }, "@ensdomains/content-hash>cids>multibase": { @@ -4676,7 +4865,7 @@ }, "@ensdomains/content-hash>multihashes>multibase": { "packages": { - "@ensdomains/content-hash>multihashes>multibase>base-x": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, "browserify>buffer": true, "@ensdomains/content-hash>multihashes>web-encoding": true } @@ -4922,22 +5111,40 @@ "watchify>xtend": true } }, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": { + "globals": { + "process": true, + "setTimeout": true + }, + "packages": { + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true + } + }, "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs": { "globals": { "process": true, "setTimeout": true }, "packages": { - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/aspromise": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/base64": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/codegen": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/eventemitter": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/fetch": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/float": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/inquire": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/path": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/pool": true, - "@trezor/connect-web>@trezor/connect>@trezor/protobuf>protobufjs>@protobufjs/utf8": true + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/aspromise": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/base64": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/codegen": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/eventemitter": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/fetch": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/float": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/inquire": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/path": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/pool": true, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs>@protobufjs/utf8": true } }, "crypto-browserify>public-encrypt": { @@ -5476,6 +5683,25 @@ "pumpify>inherits": true } }, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": { + "packages": { + "browserify>assert": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec>base-x": true, + "browserify>buffer": true, + "ethereumjs-util>create-hash": true + } + }, + "@onekeyfe/hd-core>ripple-keypairs": { + "packages": { + "browserify>assert": true, + "bn.js": true, + "@onekeyfe/hd-core>ripple-keypairs>brorand": true, + "browserify>buffer": true, + "@metamask/ppom-validator>elliptic": true, + "ethers>@ethersproject/sha2>hash.js": true, + "@onekeyfe/hd-core>ripple-keypairs>ripple-address-codec": true + } + }, "eth-lattice-keyring>rlp": { "globals": { "TextEncoder": true diff --git a/lavamoat/browserify/policy-override.json b/lavamoat/browserify/policy-override.json index 8dfc11cf6026..ad319fb3d13d 100644 --- a/lavamoat/browserify/policy-override.json +++ b/lavamoat/browserify/policy-override.json @@ -168,6 +168,16 @@ "globals": { "crypto": true } + }, + "@metamask/network-controller>@metamask/eth-json-rpc-middleware>@metamask/eth-sig-util>@ethereumjs/util": { + "packages": { + "eth-onekey-bridge-keyring>@ethereumjs/rlp": true + } + }, + "eth-onekey-bridge-keyring": { + "packages": { + "@ethereumjs/rlp": true + } } } } diff --git a/lavamoat/build-system/policy.json b/lavamoat/build-system/policy.json index af8f194c72e6..8be24db4bf04 100644 --- a/lavamoat/build-system/policy.json +++ b/lavamoat/build-system/policy.json @@ -1809,6 +1809,7 @@ "chokidar>anymatch": true, "chokidar>braces": true, "chokidar>fsevents": true, + "tsx>fsevents": true, "eslint>glob-parent": true, "chokidar>is-binary-path": true, "del>is-glob": true, @@ -3361,6 +3362,13 @@ "gulp-watch>chokidar>fsevents>node-pre-gyp": true } }, + "tsx>fsevents": { + "globals": { + "console.assert": true, + "process.platform": true + }, + "native": true + }, "@lavamoat/allow-scripts>@npmcli/run-script>node-gyp>npmlog>gauge": { "builtin": { "util.format": true diff --git a/offscreen/scripts/offscreen.ts b/offscreen/scripts/offscreen.ts index d1651eb6af08..c704c1df11e3 100644 --- a/offscreen/scripts/offscreen.ts +++ b/offscreen/scripts/offscreen.ts @@ -10,6 +10,7 @@ import { import initLedger from './ledger'; import initTrezor from './trezor'; import initLattice from './lattice'; +import initOneKey from './onekey'; /** * Initialize a post message stream with the parent window that is initialized @@ -34,6 +35,7 @@ async function init(): Promise { initializePostMessageStream(); initTrezor(); initLattice(); + initOneKey(); try { const ledgerInitTimeout = new Promise((_, reject) => { diff --git a/offscreen/scripts/onekey.ts b/offscreen/scripts/onekey.ts new file mode 100644 index 000000000000..fbd2d0bdaeb0 --- /dev/null +++ b/offscreen/scripts/onekey.ts @@ -0,0 +1,248 @@ +import { + ConnectSettings, + CoreApi, + DEVICE, + UI_REQUEST, + UI_RESPONSE, + UiEvent, + Unsuccessful, +} from '@onekeyfe/hd-core'; +import { HardwareErrorCode } from '@onekeyfe/hd-shared'; +import { + OffscreenCommunicationEvents, + OffscreenCommunicationTarget, + OneKeyAction, +} from '../../shared/constants/offscreen-communication'; + +/** + * This listener is used to listen for messages targeting the OneKey Offscreen + * handler. Each package sent has an action that is used to determine what calls + * to the OneKey Hardware SDK should be made. The response is then sent back to + * the sender of the message, which in this case will be the + * OneKeyOffscreenBridge. + */ +let isSDKInitialized = false; +let sdk: CoreApi | undefined; + +function handleBlockErrorEvent(payload: Unsuccessful) { + const { code } = payload.payload; + const errorCodes: number[] = [ + HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission, + HardwareErrorCode.BridgeNotInstalled, + HardwareErrorCode.NewFirmwareForceUpdate, + HardwareErrorCode.NotAllowInBootloaderMode, + HardwareErrorCode.CallMethodNeedUpgradeFirmware, + ]; + + if (code && typeof code === 'number' && errorCodes.includes(code)) { + chrome.runtime.sendMessage({ + target: OffscreenCommunicationTarget.extension, + event: OffscreenCommunicationEvents.onekeyDeviceConnectError, + payload: payload.payload, + }); + } +} + +export default function init() { + chrome.runtime.onMessage.addListener( + ( + msg: { + target: string; + action: OneKeyAction; + // TODO: Replace `any` with type + // eslint-disable-next-line @typescript-eslint/no-explicit-any + params: any; + }, + _sender, + sendResponse, + ) => { + if (msg.target !== OffscreenCommunicationTarget.onekeyOffscreen) { + return; + } + + switch (msg.action) { + case OneKeyAction.init: + // eslint-disable-next-line no-case-declarations + const { + HardwareWebSdk, + HardwareSDKLowLevel, + // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires, node/global-require + } = require('@onekeyfe/hd-web-sdk'); + + // eslint-disable-next-line no-case-declarations + const settings: Partial = { + debug: true, + fetchConfig: false, + connectSrc: 'https://jssdk.onekey.so/1.0.27-alpha.0/', + env: msg.params.env, + }; + + try { + if (isSDKInitialized) { + sendResponse(); + return; + } + + HardwareWebSdk.init(settings, HardwareSDKLowLevel).then(() => { + isSDKInitialized = true; + sdk = HardwareWebSdk; + + sdk?.on('DEVICE_EVENT', (event) => { + if (event.type !== DEVICE.CONNECT) { + return; + } + const { features } = event.payload; + const modelName = + features?.onekey_device_type || + features?.ble_name || + features?.label; + + if (modelName) { + chrome.runtime.sendMessage({ + target: OffscreenCommunicationTarget.extension, + event: OffscreenCommunicationEvents.onekeyDeviceConnect, + payload: { + model: modelName, + }, + }); + } + }); + sdk?.on('UI_EVENT', (e) => { + const originEvent = e as UiEvent; + if (originEvent.type === UI_REQUEST.REQUEST_PIN) { + sdk?.uiResponse({ + type: UI_RESPONSE.RECEIVE_PIN, + payload: '@@ONEKEY_INPUT_PIN_IN_DEVICE', + }); + } + if (originEvent.type === UI_REQUEST.REQUEST_PASSPHRASE) { + sdk?.uiResponse({ + type: UI_RESPONSE.RECEIVE_PASSPHRASE, + payload: { + value: '', + passphraseOnDevice: true, + save: false, + }, + }); + } + }); + + sendResponse(); + }); + } catch (error) { + isSDKInitialized = false; + } + break; + + case OneKeyAction.dispose: + // This removes the Trezor Connect iframe from the DOM + // This method is not well documented, but the code it calls can be seen + // here: https://github.com/trezor/connect/blob/dec4a56af8a65a6059fb5f63fa3c6690d2c37e00/src/js/iframe/builder.js#L181 + sdk?.removeAllListeners('DEVICE_EVENT'); + sdk?.removeAllListeners('UI_EVENT'); + sdk?.dispose(); + isSDKInitialized = false; + sdk = undefined; + + sendResponse(); + + break; + + case OneKeyAction.getPublicKey: + sdk + ?.evmGetPublicKey('', '', { + ...msg.params, + showOnOneKey: false, + }) + .then((result) => { + let response; + if (result?.success) { + response = { + success: true, + payload: { + publicKey: result.payload.pub, + chainCode: result.payload.node.chain_code, + }, + }; + } else { + handleBlockErrorEvent(result); + response = { + success: false, + payload: { + error: result?.payload.error ?? '', + code: + typeof result?.payload?.code === 'number' + ? result?.payload?.code + : undefined, + }, + }; + } + + sendResponse(response); + }); + break; + + case OneKeyAction.batchGetPublicKey: + sdk?.evmGetPublicKey('', '', msg.params).then((result) => { + if (!result?.success) { + handleBlockErrorEvent(result); + } + sendResponse(result); + }); + break; + + case OneKeyAction.getPassphraseState: + sdk?.getPassphraseState().then((result) => { + if (!result?.success) { + handleBlockErrorEvent(result); + } + sendResponse(result); + }); + break; + + case OneKeyAction.signTransaction: + sdk?.evmSignTransaction('', '', msg.params).then((result) => { + if (!result?.success) { + handleBlockErrorEvent(result); + } + sendResponse(result); + }); + + break; + + case OneKeyAction.signMessage: + sdk?.evmSignMessage('', '', msg.params).then((result) => { + if (!result?.success) { + handleBlockErrorEvent(result); + } + sendResponse(result); + }); + + break; + + case OneKeyAction.signTypedData: + sdk?.evmSignTypedData('', '', msg.params).then((result) => { + if (!result?.success) { + handleBlockErrorEvent(result); + } + sendResponse(result); + }); + + break; + + default: + sendResponse({ + success: false, + payload: { + error: 'OneKey action not supported', + }, + }); + } + + // This keeps sendResponse function valid after return + // https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage + // eslint-disable-next-line consistent-return + return true; + }, + ); +} diff --git a/package.json b/package.json index 53fc019579cc..069f8666a010 100644 --- a/package.json +++ b/package.json @@ -339,6 +339,9 @@ "@metamask/utils": "^11.1.0", "@ngraveio/bc-ur": "^1.1.13", "@noble/hashes": "^1.3.3", + "@onekeyfe/hd-core": "1.0.27-alpha.0", + "@onekeyfe/hd-shared": "1.0.27-alpha.0", + "@onekeyfe/hd-web-sdk": "1.0.27-alpha.0", "@popperjs/core": "^2.4.0", "@reduxjs/toolkit": "patch:@reduxjs/toolkit@npm%3A1.9.7#~/.yarn/patches/@reduxjs-toolkit-npm-1.9.7-b14925495c.patch", "@segment/loosely-validate-event": "^2.0.0", @@ -370,6 +373,7 @@ "eth-ens-namehash": "^2.0.8", "eth-lattice-keyring": "patch:eth-lattice-keyring@npm%3A0.12.4#~/.yarn/patches/eth-lattice-keyring-npm-0.12.4-c5fb3fcf54.patch", "eth-method-registry": "^4.0.0", + "eth-onekey-bridge-keyring": "^0.2.1", "ethereumjs-util": "^7.0.10", "extension-port-stream": "^3.0.0", "fast-json-patch": "^3.1.1", @@ -748,6 +752,8 @@ "@trezor/connect-web>@trezor/connect>@trezor/blockchain-link>@solana/web3.js>bigint-buffer": false, "@trezor/connect-web>@trezor/connect>@trezor/utxo-lib>blake-hash": false, "@trezor/connect-web>@trezor/connect>@trezor/utxo-lib>tiny-secp256k1": false, + "@onekeyfe/hd-web-sdk>@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": false, + "@onekeyfe/hd-core>@onekeyfe/hd-transport>protobufjs": false, "@storybook/test-runner>@swc/core": false, "@lavamoat/lavadome-react>@lavamoat/preinstall-always-fail": false, "ws>bufferutil": false, diff --git a/shared/constants/hardware-wallets.ts b/shared/constants/hardware-wallets.ts index e211f50f855c..8d891aafc74e 100644 --- a/shared/constants/hardware-wallets.ts +++ b/shared/constants/hardware-wallets.ts @@ -42,7 +42,8 @@ export enum HardwareAffiliateLinks { dcent = 'https://dcentwallet.com/', ngrave = 'https://shop.ngrave.io/', imtoken = 'https://token.im/', - onekey = 'https://onekey.so/products/onekey-pro-hardware-wallet/', + onekey_pro = 'https://onekey.so/products/onekey-pro-hardware-wallet/', + onekey = 'https://onekey.so/shop/', } export enum HardwareAffiliateTutorialLinks { @@ -55,7 +56,8 @@ export enum HardwareAffiliateTutorialLinks { dcent = 'https://medium.com/dcentwallet/dcent-wallet-now-supports-qr-based-protocol-to-link-with-metamask-57555f02603f', ngrave = 'https://ngrave.io/zero', imtoken = 'https://support.token.im/hc/en-us/articles/24652624775961/', - onekey = 'https://help.onekey.so/hc/articles/9426592069903', + onekey_qr = 'https://help.onekey.so/hc/articles/9426592069903', + onekey = 'https://help.onekey.so/hc/articles/8910581291151', } /** @@ -66,6 +68,11 @@ export enum LedgerTransportTypes { u2f = 'u2f', } +export enum OneKeyTransportTypes { + webusb = 'webusb', + webextension = 'webextension', +} + export enum WebHIDConnectedStatuses { connected = 'connected', notConnected = 'notConnected', diff --git a/shared/constants/offscreen-communication.ts b/shared/constants/offscreen-communication.ts index 881a02560b2d..611f8b3b0dac 100644 --- a/shared/constants/offscreen-communication.ts +++ b/shared/constants/offscreen-communication.ts @@ -9,6 +9,7 @@ export enum OffscreenCommunicationTarget { trezorOffscreen = 'trezor-offscreen', ledgerOffscreen = 'ledger-offscreen', latticeOffscreen = 'lattice-offscreen', + onekeyOffscreen = 'onekey-offscreen', extension = 'extension-offscreen', extensionMain = 'extension', } @@ -20,6 +21,8 @@ export enum OffscreenCommunicationTarget { export enum OffscreenCommunicationEvents { trezorDeviceConnect = 'trezor-device-connect', ledgerDeviceConnect = 'ledger-device-connect', + onekeyDeviceConnect = 'onekey-device-connect', + onekeyDeviceConnectError = 'onekey-device-connect-error', metamaskBackgroundReady = 'metamask-background-ready', } @@ -48,6 +51,18 @@ export enum LedgerAction { signTypedData = 'ledger-sign-typed-data', } +export enum OneKeyAction { + init = 'onekey-init', + dispose = 'onekey-dispose', + switchTransport = 'onekey-switch-transport', + getPublicKey = 'onekey-get-public-key', + batchGetPublicKey = 'onekey-batch-get-public-key', + getPassphraseState = 'onekey-get-passphrase-state', + signTransaction = 'onekey-sign-transaction', + signMessage = 'onekey-sign-message', + signTypedData = 'onekey-sign-typed-data', +} + /** * Defines domain origins that we expect to interface with in our offscreen * document. Any reference to a domain as an origin should use this enum diff --git a/ui/components/ui/logo/logo-onekey.js b/ui/components/ui/logo/logo-onekey.js new file mode 100644 index 000000000000..7cfdc03b4e18 --- /dev/null +++ b/ui/components/ui/logo/logo-onekey.js @@ -0,0 +1,53 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const LogoOnekey = ({ + width = '100%', + color = 'var(--color-text-default)', + className, + ariaLabel, +}) => { + return ( + + + + + + + + + + ); +}; + +LogoOnekey.propTypes = { + /** + * The width of the logo. Defaults to 100% + */ + width: PropTypes.string, + /** + * The color of the logo defaults to var(--color-text-default) + */ + color: PropTypes.string, + /** + * Additional className to add to the root svg + */ + className: PropTypes.string, + /** + * Aria label to add to the logo component + */ + ariaLabel: PropTypes.string, +}; + +export default LogoOnekey; diff --git a/ui/components/ui/logo/logo.stories.js b/ui/components/ui/logo/logo.stories.js index 01a9be0b10a1..20b3c0a6e59f 100644 --- a/ui/components/ui/logo/logo.stories.js +++ b/ui/components/ui/logo/logo.stories.js @@ -10,6 +10,7 @@ import LogoLedger from './logo-ledger'; import LogoQRBased from './logo-qr-based'; import LogoTrezor from './logo-trezor'; import LogoLattice from './logo-lattice'; +import LogoOneKey from './logo-onekey'; import README from './README.mdx'; @@ -66,6 +67,7 @@ export const DefaultStory = (args) => ( } /> } /> } /> + } /> ); diff --git a/ui/ducks/app/app.ts b/ui/ducks/app/app.ts index 6b16cb184b1f..8e23ead8c4d2 100644 --- a/ui/ducks/app/app.ts +++ b/ui/ducks/app/app.ts @@ -77,6 +77,7 @@ type AppState = { oneKey: string; ledger: string; lattice: string; + onekey: string; }; networksTabSelectedRpcUrl: string | null; requestAccountTabs: Record; // [url.origin]: tab.id @@ -186,6 +187,7 @@ const initialState: AppState = { oneKey: `m/44'/60'/0'/0`, ledger: `m/44'/60'/0'/0/0`, lattice: `m/44'/60'/0'/0`, + onekey: `m/44'/60'/0'/0`, }, networksTabSelectedRpcUrl: '', requestAccountTabs: {}, diff --git a/ui/helpers/constants/routes.ts b/ui/helpers/constants/routes.ts index 805bd07dbeea..b237b4940a61 100644 --- a/ui/helpers/constants/routes.ts +++ b/ui/helpers/constants/routes.ts @@ -278,6 +278,12 @@ export const ONBOARDING_PIN_EXTENSION_ROUTE = '/onboarding/pin-extension'; export const ONBOARDING_WELCOME_ROUTE = '/onboarding/welcome'; export const ONBOARDING_METAMETRICS = '/onboarding/metametrics'; +// Hardware OneKey +export const HARDWARE_ONEKEY_ERRORS_ROUTE = '/onekey-errors'; +PATH_NAME_MAP[HARDWARE_ONEKEY_ERRORS_ROUTE] = 'Hardware OneKey Errors Page'; +PATH_NAME_MAP[`${HARDWARE_ONEKEY_ERRORS_ROUTE}/:error`] = + 'Hardware OneKey Errors Page'; + ///: BEGIN:ONLY_INCLUDE_IF(build-flask) export const INITIALIZE_EXPERIMENTAL_AREA = '/initialize/experimental-area'; export const ONBOARDING_EXPERIMENTAL_AREA = '/onboarding/experimental-area'; diff --git a/ui/pages/create-account/connect-hardware/index.js b/ui/pages/create-account/connect-hardware/index.js index 52620819441d..819c2355a771 100644 --- a/ui/pages/create-account/connect-hardware/index.js +++ b/ui/pages/create-account/connect-hardware/index.js @@ -71,11 +71,24 @@ export const TREZOR_HD_PATHS = [ { name: `Trezor Testnets`, value: TREZOR_TESTNET_PATH }, ]; +const ONEKEY_STANDARD_BIP44_PATH = `m/44'/60'/0'/0/x`; +const ONEKEY_LEDGER_LIVE_PATH = `m/44'/60'/x'/0/0`; +export const ONEKEY_HD_PATHS = [ + { + name: `Standard (${ONEKEY_STANDARD_BIP44_PATH})`, + value: ONEKEY_STANDARD_BIP44_PATH, + }, + { + name: `Ledger Live (${ONEKEY_LEDGER_LIVE_PATH})`, + value: ONEKEY_LEDGER_LIVE_PATH, + }, +]; + const HD_PATHS = { ledger: LEDGER_HD_PATHS, lattice: LATTICE_HD_PATHS, trezor: TREZOR_HD_PATHS, - oneKey: TREZOR_HD_PATHS, + oneKey: ONEKEY_HD_PATHS, }; const getErrorMessage = (errorCode, t) => { @@ -135,6 +148,7 @@ class ConnectHardwareForm extends Component { HardwareDeviceNames.lattice, ]) { const path = this.props.defaultHdPaths[device]; + const unlocked = await this.props.checkHardwareStatus(device, path); if (unlocked && this.state.device) { this.setState({ unlocked: true }); @@ -293,10 +307,19 @@ class ConnectHardwareForm extends Component { this.setState({ error: this.context.t('accountSelectionRequired') }); } - const description = - MEW_PATH === path - ? this.context.t('hardwareWalletLegacyDescription') - : ''; + let description = ''; + if (deviceName === HardwareDeviceNames.oneKey) { + if (path === ONEKEY_LEDGER_LIVE_PATH) { + description = '(Ledger)'; + } else { + description = ''; + } + } else { + description = + MEW_PATH === path + ? this.context.t('hardwareWalletLegacyDescription') + : ''; + } return unlockHardwareWalletAccounts( selectedAccounts, diff --git a/ui/pages/create-account/connect-hardware/select-hardware.js b/ui/pages/create-account/connect-hardware/select-hardware.js index 98302d659a32..8a5262a9df47 100644 --- a/ui/pages/create-account/connect-hardware/select-hardware.js +++ b/ui/pages/create-account/connect-hardware/select-hardware.js @@ -1,6 +1,8 @@ import classnames from 'classnames'; import PropTypes from 'prop-types'; import React, { Component } from 'react'; + +import { ONEKEY_WEBUSB_FILTER } from '@onekeyfe/hd-shared'; import { Text, Box, @@ -16,6 +18,7 @@ import LogoLedger from '../../../components/ui/logo/logo-ledger'; import LogoQRBased from '../../../components/ui/logo/logo-qr-based'; import LogoTrezor from '../../../components/ui/logo/logo-trezor'; import LogoLattice from '../../../components/ui/logo/logo-lattice'; +import LogoOnekey from '../../../components/ui/logo/logo-onekey'; import { HardwareDeviceNames, @@ -89,6 +92,22 @@ export default class SelectHardware extends Component { this.setState({ trezorRequestDevicePending: false }); } } + if ( + this.state.selectedDevice === HardwareDeviceNames.oneKey && + isUSBSupported + ) { + this.setState({ trezorRequestDevicePending: true }); + try { + const connectedDevice = await window.navigator.usb.requestDevice({ + filters: ONEKEY_WEBUSB_FILTER, + }); + if (!connectedDevice) { + throw new Error('No device selected'); + } + } finally { + this.setState({ trezorRequestDevicePending: false }); + } + } this.props.connectToHardwareWallet(selectedDevice); } @@ -159,18 +178,35 @@ export default class SelectHardware extends Component { ); } + renderConnectToOnekeyButton() { + return ( + + ); + } + renderButtons() { return ( <>
{this.renderConnectToLedgerButton()} {this.renderConnectToTrezorButton()} + {this.renderConnectToLatticeButton()}
- {this.renderConnectToLatticeButton()} + {this.renderConnectToOnekeyButton()} {this.renderConnectToQRButton()}
@@ -328,6 +364,8 @@ export default class SelectHardware extends Component { return this.renderTrezorTutorialSteps(); case HardwareDeviceNames.lattice: return this.renderLatticeTutorialSteps(); + case HardwareDeviceNames.oneKey: + return this.renderOneKeyTutorialSteps(); case HardwareDeviceNames.qr: return this.renderQRHardwareWalletSteps(); default: @@ -593,6 +631,86 @@ export default class SelectHardware extends Component { ); } + renderOneKeyTutorialSteps() { + const steps = [ + { + asset: 'plug-in-wallet', + dimensions: { width: '225px', height: '75px' }, + title: this.context.t('step1OnekeyWallet'), + message: this.context.t('step1OnekeyWalletMsg', [ + + {this.context.t('hardwareWalletSupportLinkConversion')} + , + ]), + }, + ]; + + return ( +
+ {steps.map((step, index) => ( + +

{step.title}

+ + + + + +

{step.message}

+ {step.asset && ( + + )} +
+ ))} +
+ ); + } + renderQRHardwareWalletSteps() { const steps = []; steps.push( @@ -787,7 +905,7 @@ export default class SelectHardware extends Component { category: MetaMetricsEventCategory.Navigation, event: 'Clicked OneKey Learn More', }); - openWindow(HardwareAffiliateLinks.onekey); + openWindow(HardwareAffiliateLinks.onekey_pro); }} > {this.context.t('buyNow')} @@ -800,7 +918,7 @@ export default class SelectHardware extends Component { category: MetaMetricsEventCategory.Navigation, event: 'Clicked OneKey Tutorial', }); - openWindow(HardwareAffiliateTutorialLinks.onekey); + openWindow(HardwareAffiliateTutorialLinks.onekey_qr); }} > {this.context.t('tutorial')} diff --git a/ui/pages/onekey-errors/index.js b/ui/pages/onekey-errors/index.js new file mode 100644 index 000000000000..ac032a067912 --- /dev/null +++ b/ui/pages/onekey-errors/index.js @@ -0,0 +1 @@ +export { default } from './onekey-erros'; diff --git a/ui/pages/onekey-errors/index.scss b/ui/pages/onekey-errors/index.scss new file mode 100644 index 000000000000..fcc94944acd8 --- /dev/null +++ b/ui/pages/onekey-errors/index.scss @@ -0,0 +1,5 @@ +@use "design-system"; + +.notifications-settings { + display: block; +} diff --git a/ui/pages/onekey-errors/onekey-allow-webusb-connect.tsx b/ui/pages/onekey-errors/onekey-allow-webusb-connect.tsx new file mode 100644 index 000000000000..138fc259a638 --- /dev/null +++ b/ui/pages/onekey-errors/onekey-allow-webusb-connect.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { ONEKEY_WEBUSB_FILTER } from '@onekeyfe/hd-shared'; +import { useHistory, useLocation } from 'react-router-dom'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { + Box, + Text, + Button, + ButtonVariant, +} from '../../components/component-library'; +import { + Display, + JustifyContent, + FlexDirection, + AlignItems, + TextVariant, + TextColor, +} from '../../helpers/constants/design-system'; +import { DEFAULT_ROUTE } from '../../helpers/constants/routes'; + +export function OneKeyAllowWebUSBConnect() { + const t = useI18nContext(); + + const history = useHistory(); + const location = useLocation(); + // Previous page + const previousPage = location.state?.fromPage; + + return ( + + + {t('onekeyWebUSBNotConnectedErrorMessage')} + + + + ); +} diff --git a/ui/pages/onekey-errors/onekey-errors-types.tsx b/ui/pages/onekey-errors/onekey-errors-types.tsx new file mode 100644 index 000000000000..5232b43121f8 --- /dev/null +++ b/ui/pages/onekey-errors/onekey-errors-types.tsx @@ -0,0 +1,119 @@ +import React, { useState, useContext } from 'react'; +import { useSelector } from 'react-redux'; +import { MetaMetricsContext } from '../../contexts/metametrics'; +import { + MetaMetricsEventCategory, + MetaMetricsEventName, +} from '../../../shared/constants/metametrics'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { useMetamaskNotificationsContext } from '../../contexts/metamask-notifications/metamask-notifications'; +import { useSwitchFeatureAnnouncementsChange } from '../../hooks/metamask-notifications/useSwitchNotifications'; +import { Box, IconName, Text } from '../../components/component-library'; +import { + BlockSize, + BorderColor, + Display, + JustifyContent, + FlexDirection, + AlignItems, + TextVariant, + TextColor, +} from '../../helpers/constants/design-system'; +import { + NotificationsSettingsBox, + NotificationsSettingsType, +} from '../../components/multichain'; +import { selectIsFeatureAnnouncementsEnabled } from '../../selectors/metamask-notifications/metamask-notifications'; + +export function NotificationsSettingsTypes({ + disabled, +}: { + disabled: boolean; +}) { + // Context + const t = useI18nContext(); + const { listNotifications } = useMetamaskNotificationsContext(); + const trackEvent = useContext(MetaMetricsContext); + + // Selectors + const isFeatureAnnouncementsEnabled = useSelector( + selectIsFeatureAnnouncementsEnabled, + ); + + // Hooks + const { + onChange: onChangeFeatureAnnouncements, + error: errorFeatureAnnouncements, + } = useSwitchFeatureAnnouncementsChange(); + + // States + const [featureAnnouncementsEnabled, setFeatureAnnouncementsEnabled] = + useState(isFeatureAnnouncementsEnabled); + + const onToggleFeatureAnnouncements = async () => { + setFeatureAnnouncementsEnabled(!featureAnnouncementsEnabled); + try { + onChangeFeatureAnnouncements(!featureAnnouncementsEnabled); + trackEvent({ + category: MetaMetricsEventCategory.NotificationSettings, + event: MetaMetricsEventName.NotificationsSettingsUpdated, + properties: { + settings_type: 'product_announcements', + old_value: featureAnnouncementsEnabled, + new_value: !featureAnnouncementsEnabled, + }, + }); + listNotifications(); + } catch (error) { + setFeatureAnnouncementsEnabled(featureAnnouncementsEnabled); + } + }; + + return ( + <> + + + {t('customizeYourNotifications')} + + + {t('customizeYourNotificationsText')} + + + + {/* Product announcements */} + + + + + + + ); +} diff --git a/ui/pages/onekey-errors/onekey-erros.tsx b/ui/pages/onekey-errors/onekey-erros.tsx new file mode 100644 index 000000000000..5ccec7f463b2 --- /dev/null +++ b/ui/pages/onekey-errors/onekey-erros.tsx @@ -0,0 +1,113 @@ +import React, { useMemo } from 'react'; +///: BEGIN:ONLY_INCLUDE_IF(build-mmi) +import { useSelector } from 'react-redux'; +///: END:ONLY_INCLUDE_IF +import { useHistory, useLocation, useParams } from 'react-router-dom'; +import { HardwareErrorCode } from '@onekeyfe/hd-shared'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { DEFAULT_ROUTE } from '../../helpers/constants/routes'; +import { + Box, + IconName, + ButtonIcon, + ButtonIconSize, +} from '../../components/component-library'; +import { + Display, + JustifyContent, + AlignItems, +} from '../../helpers/constants/design-system'; + +import { Content, Header, Page } from '../../components/multichain/pages/page'; +///: BEGIN:ONLY_INCLUDE_IF(build-mmi) +import { getTheme } from '../../selectors'; +///: END:ONLY_INCLUDE_IF +import MetaFoxLogo from '../../components/ui/metafox-logo'; +import { OneKeyAllowWebUSBConnect } from './onekey-allow-webusb-connect'; +import { OneKeyBridgeInstallationRequired } from './onekey-require-install-bridge'; +import { OneKeyForceUpdateFirmware } from './onekey-force-update-firmware'; +import { OneKeyUpdateFirmware } from './onekey-update-firmware'; +import { OneKeyExitBootloaderMode } from './onekey-exit-bootloader-mode'; + +export default function OneKeyErrors() { + const history = useHistory(); + const location = useLocation(); + const t = useI18nContext(); + const { error } = useParams<{ error: string }>(); + + // Previous page + const previousPage = location.state?.fromPage; + + ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) + const theme = useSelector((state) => getTheme(state)); + ///: END:ONLY_INCLUDE_IF + + const contentView = useMemo(() => { + switch (error) { + case HardwareErrorCode.WebDeviceNotFoundOrNeedsPermission.toString(): + return ( + + ); + case HardwareErrorCode.BridgeNotInstalled.toString(): + return ( + + ); + case HardwareErrorCode.NewFirmwareForceUpdate.toString(): + return ( + + ); + case HardwareErrorCode.CallMethodNeedUpgradeFirmware.toString(): + return ( + + ); + case HardwareErrorCode.NotAllowInBootloaderMode.toString(): + return ( + + ); + default: + return null; + } + }, [error]); + + return ( +
+ + history.push(DEFAULT_ROUTE)} + ///: BEGIN:ONLY_INCLUDE_IF(build-mmi) + theme={theme} + ///: END:ONLY_INCLUDE_IF + /> + + + +
+ previousPage + ? history.push(previousPage) + : history.push(DEFAULT_ROUTE) + } + /> + } + endAccessory={null} + > + {t('onekeyHardwareError')} +
+ {contentView} +
+
+ ); +} diff --git a/ui/pages/onekey-errors/onekey-exit-bootloader-mode.tsx b/ui/pages/onekey-errors/onekey-exit-bootloader-mode.tsx new file mode 100644 index 000000000000..a07e38aa1029 --- /dev/null +++ b/ui/pages/onekey-errors/onekey-exit-bootloader-mode.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { + Box, + Text, + Button, + ButtonVariant, +} from '../../components/component-library'; +import { + Display, + JustifyContent, + FlexDirection, + AlignItems, + TextVariant, + TextColor, +} from '../../helpers/constants/design-system'; + +export function OneKeyExitBootloaderMode() { + const t = useI18nContext(); + + return ( + + + {t('onekeyExitBootloaderMode')} + + + + ); +} diff --git a/ui/pages/onekey-errors/onekey-force-update-firmware.tsx b/ui/pages/onekey-errors/onekey-force-update-firmware.tsx new file mode 100644 index 000000000000..0fac96a79bc5 --- /dev/null +++ b/ui/pages/onekey-errors/onekey-force-update-firmware.tsx @@ -0,0 +1,62 @@ +import React, { useMemo } from 'react'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { + Box, + Text, + Button, + ButtonVariant, +} from '../../components/component-library'; +import { + Display, + JustifyContent, + FlexDirection, + AlignItems, + TextVariant, + TextColor, +} from '../../helpers/constants/design-system'; + +export function OneKeyForceUpdateFirmware() { + const t = useI18nContext(); + + const privacyLink = useMemo( + () => ( + + {t('onekeyHardwareHelpLink')} + + ), + [t], + ); + + return ( + + + {t('onekeyForceUpdate', [privacyLink])} + + + + ); +} diff --git a/ui/pages/onekey-errors/onekey-require-install-bridge.tsx b/ui/pages/onekey-errors/onekey-require-install-bridge.tsx new file mode 100644 index 000000000000..052dff6ba3b8 --- /dev/null +++ b/ui/pages/onekey-errors/onekey-require-install-bridge.tsx @@ -0,0 +1,62 @@ +import React, { useMemo } from 'react'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { + Box, + Text, + Button, + ButtonVariant, +} from '../../components/component-library'; +import { + Display, + JustifyContent, + FlexDirection, + AlignItems, + TextVariant, + TextColor, +} from '../../helpers/constants/design-system'; + +export function OneKeyBridgeInstallationRequired() { + const t = useI18nContext(); + + const privacyLink = useMemo( + () => ( + + {t('onekeyHardwareHelpLink')} + + ), + [t], + ); + + return ( + + + {t('onekeyBridgeInstallationRequired', [privacyLink])} + + + + ); +} diff --git a/ui/pages/onekey-errors/onekey-update-firmware.tsx b/ui/pages/onekey-errors/onekey-update-firmware.tsx new file mode 100644 index 000000000000..d45f08d8aaaf --- /dev/null +++ b/ui/pages/onekey-errors/onekey-update-firmware.tsx @@ -0,0 +1,62 @@ +import React, { useMemo } from 'react'; +import { useI18nContext } from '../../hooks/useI18nContext'; +import { + Box, + Text, + Button, + ButtonVariant, +} from '../../components/component-library'; +import { + Display, + JustifyContent, + FlexDirection, + AlignItems, + TextVariant, + TextColor, +} from '../../helpers/constants/design-system'; + +export function OneKeyUpdateFirmware() { + const t = useI18nContext(); + + const privacyLink = useMemo( + () => ( + + {t('onekeyHardwareHelpLink')} + + ), + [t], + ); + + return ( + + + {t('onekeyNeedUpdateFirmware', [privacyLink])} + + + + ); +} diff --git a/ui/pages/routes/routes.component.js b/ui/pages/routes/routes.component.js index 4f1c90606704..657b124d7db7 100644 --- a/ui/pages/routes/routes.component.js +++ b/ui/pages/routes/routes.component.js @@ -21,6 +21,7 @@ import { } from '../../components/multichain'; import Alerts from '../../components/app/alerts'; import OnboardingAppHeader from '../onboarding-flow/onboarding-app-header/onboarding-app-header'; +import OneKeyErrors from '../onekey-errors'; import { ASSET_ROUTE, @@ -52,6 +53,7 @@ import { REMOTE_ROUTE_SETUP_SWAPS, REMOTE_ROUTE_SETUP_DAILY_ALLOWANCE, DEFI_ROUTE, + HARDWARE_ONEKEY_ERRORS_ROUTE, } from '../../helpers/constants/routes'; import { @@ -397,7 +399,10 @@ export default class Routes extends Component { component={RemoteModeSetupDailyAllowance} exact /> - + diff --git a/ui/pages/routes/utils.js b/ui/pages/routes/utils.js index ca74d33f24fd..087910785659 100644 --- a/ui/pages/routes/utils.js +++ b/ui/pages/routes/utils.js @@ -14,6 +14,7 @@ import { CONNECTIONS, CROSS_CHAIN_SWAP_ROUTE, DEFAULT_ROUTE, + HARDWARE_ONEKEY_ERRORS_ROUTE, NOTIFICATIONS_ROUTE, ONBOARDING_ROUTE, ONBOARDING_UNLOCK_ROUTE, @@ -145,6 +146,17 @@ export function hideAppHeader(props) { return true; } + const isOneKeyErrorsPage = Boolean( + matchPath(location.pathname, { + path: HARDWARE_ONEKEY_ERRORS_ROUTE, + exact: false, + }), + ); + + if (isOneKeyErrorsPage) { + return true; + } + const isConnectionsPage = Boolean( matchPath(location.pathname, { path: CONNECTIONS, diff --git a/yarn.lock b/yarn.lock index 32b531e3cbfa..29cb6304d810 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2228,7 +2228,7 @@ __metadata: languageName: node linkType: hard -"@ethereumjs/rlp@npm:^4.0.1": +"@ethereumjs/rlp@npm:^4.0.0, @ethereumjs/rlp@npm:^4.0.1": version: 4.0.1 resolution: "@ethereumjs/rlp@npm:4.0.1" bin: @@ -7032,7 +7032,7 @@ __metadata: languageName: node linkType: hard -"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:^1.7.1, @noble/hashes@npm:~1.8.0": +"@noble/hashes@npm:1.8.0, @noble/hashes@npm:^1.1.2, @noble/hashes@npm:^1.2.0, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.2, @noble/hashes@npm:^1.3.3, @noble/hashes@npm:^1.4.0, @noble/hashes@npm:^1.5.0, @noble/hashes@npm:^1.7.0, @noble/hashes@npm:^1.7.1, @noble/hashes@npm:~1.8.0": version: 1.8.0 resolution: "@noble/hashes@npm:1.8.0" checksum: 10/474b7f56bc6fb2d5b3a42132561e221b0ea4f91e590f4655312ca13667840896b34195e2b53b7f097ec080a1fdd3b58d902c2a8d0fbdf51d2e238b53808a177e @@ -7549,6 +7549,114 @@ __metadata: languageName: node linkType: hard +"@onekeyfe/cross-inpage-provider-core@npm:^0.0.17": + version: 0.0.17 + resolution: "@onekeyfe/cross-inpage-provider-core@npm:0.0.17" + dependencies: + "@onekeyfe/cross-inpage-provider-errors": "npm:^0.0.17" + "@onekeyfe/cross-inpage-provider-events": "npm:^0.0.17" + "@onekeyfe/cross-inpage-provider-types": "npm:^0.0.17" + events: "npm:^3.3.0" + lodash: "npm:^4.17.21" + ms: "npm:^2.1.3" + checksum: 10/655305db565093b245d42c65f02f951cc4f064469aa201e9acea6c4b9e14e5acc2944815134b18773865ef05afff9bb78face94e6f730ef9e9dd5b0ccd0d72b4 + languageName: node + linkType: hard + +"@onekeyfe/cross-inpage-provider-errors@npm:^0.0.17": + version: 0.0.17 + resolution: "@onekeyfe/cross-inpage-provider-errors@npm:0.0.17" + dependencies: + fast-safe-stringify: "npm:^2.1.1" + checksum: 10/f9a37acaaff97581d5344651b3d72c91cdf537d88c452564db962b8cc214c32c97246de9d5adeeef225ef1ccc5d804545e84755d8c9a95e63af2fc94a90dd4fb + languageName: node + linkType: hard + +"@onekeyfe/cross-inpage-provider-events@npm:^0.0.17": + version: 0.0.17 + resolution: "@onekeyfe/cross-inpage-provider-events@npm:0.0.17" + checksum: 10/f98304e1d98c1b3fc9b2952056019dcd2123de8bf555d9039d1d93a953ceb2937a97a91c1061bd4b971d6efa3a017ed9c68915a3454a7c0b8f9bdcefa0d11d84 + languageName: node + linkType: hard + +"@onekeyfe/cross-inpage-provider-types@npm:^0.0.17": + version: 0.0.17 + resolution: "@onekeyfe/cross-inpage-provider-types@npm:0.0.17" + checksum: 10/4dbf5bc6b4467a8324f2e438757fccd934573e081d88532a75d1588b32120bde3c9f39229ac6678fcc25d4970622fbec4e128f01550b4f6925b798c93ad642a5 + languageName: node + linkType: hard + +"@onekeyfe/hd-core@npm:1.0.27-alpha.0, @onekeyfe/hd-core@npm:^1.0.27-alpha.0": + version: 1.0.27-alpha.0 + resolution: "@onekeyfe/hd-core@npm:1.0.27-alpha.0" + dependencies: + "@onekeyfe/hd-shared": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-transport": "npm:^1.0.27-alpha.0" + axios: "npm:^0.27.2" + bignumber.js: "npm:^9.0.2" + bytebuffer: "npm:^5.0.1" + jszip: "npm:^3.10.1" + parse-uri: "npm:^1.0.7" + semver: "npm:^7.3.7" + peerDependencies: + "@noble/hashes": ^1.1.3 + ripple-keypairs: ^1.1.4 + checksum: 10/f5345e72058c652b00f3467c73a69abb248627ce59ff70662ab35c6e34ab18fbb4b856f68b0c754ea2ad59144efaac5166e2b166bf5a14933f7db59ac11045ec + languageName: node + linkType: hard + +"@onekeyfe/hd-shared@npm:1.0.27-alpha.0, @onekeyfe/hd-shared@npm:^1.0.27-alpha.0": + version: 1.0.27-alpha.0 + resolution: "@onekeyfe/hd-shared@npm:1.0.27-alpha.0" + checksum: 10/425651d41121634c7cd3a9b936a2c0aefb906514934af37c7918e69e66bda79085c8a9d92c5021966932051e3c5f58619f4c82a48591c13da4104447b46e8527 + languageName: node + linkType: hard + +"@onekeyfe/hd-transport-http@npm:^1.0.27-alpha.0": + version: 1.0.27-alpha.0 + resolution: "@onekeyfe/hd-transport-http@npm:1.0.27-alpha.0" + dependencies: + "@onekeyfe/hd-shared": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-transport": "npm:^1.0.27-alpha.0" + axios: "npm:^0.27.2" + checksum: 10/180500bbfc82d837b2e85bf37984080d409e3d7d17b0c65e2c461d98ed7174762a4b8c938d1b065032a17932302e80e00f38f8163d9f00259b76625e5b9d4406 + languageName: node + linkType: hard + +"@onekeyfe/hd-transport-webusb@npm:^1.0.27-alpha.0": + version: 1.0.27-alpha.0 + resolution: "@onekeyfe/hd-transport-webusb@npm:1.0.27-alpha.0" + dependencies: + "@onekeyfe/hd-shared": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-transport": "npm:^1.0.27-alpha.0" + checksum: 10/87627f360775192b21589667711aae14aea916871f98370d87e965750c6a59b1664ad9640aef56b4e5c9accca4b5b8b28305e06e04691e2438da2b64d446a388 + languageName: node + linkType: hard + +"@onekeyfe/hd-transport@npm:^1.0.27-alpha.0": + version: 1.0.27-alpha.0 + resolution: "@onekeyfe/hd-transport@npm:1.0.27-alpha.0" + dependencies: + bytebuffer: "npm:^5.0.1" + long: "npm:^4.0.0" + protobufjs: "npm:^6.11.2" + checksum: 10/5e442520f2a6635bcbe6705460c22e383503ec65c7a4bb5ad69cc67bee36e7b2d1491467a228d566b83625e42c0f08177331236021f6115ee5befdfde7f5dcb8 + languageName: node + linkType: hard + +"@onekeyfe/hd-web-sdk@npm:1.0.27-alpha.0, @onekeyfe/hd-web-sdk@npm:^1.0.27-alpha.0": + version: 1.0.27-alpha.0 + resolution: "@onekeyfe/hd-web-sdk@npm:1.0.27-alpha.0" + dependencies: + "@onekeyfe/cross-inpage-provider-core": "npm:^0.0.17" + "@onekeyfe/hd-core": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-shared": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-transport-http": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-transport-webusb": "npm:^1.0.27-alpha.0" + checksum: 10/1c1a8b8a55ef2e446e686f4c9d3a31684104b36872a6fcf29617ec538cf73a75dbfb7ca38e879b9f43fc0b7d9531a86c72156c451d69d1274c4d8b5f874a87bf + languageName: node + linkType: hard + "@open-rpc/examples@npm:^1.6.1": version: 1.7.0 resolution: "@open-rpc/examples@npm:1.7.0" @@ -13244,6 +13352,13 @@ __metadata: languageName: node linkType: hard +"@types/long@npm:^4.0.1": + version: 4.0.2 + resolution: "@types/long@npm:4.0.2" + checksum: 10/68afa05fb20949d88345876148a76f6ccff5433310e720db51ac5ca21cb8cc6714286dbe04713840ddbd25a8b56b7a23aa87d08472fabf06463a6f2ed4967707 + languageName: node + linkType: hard + "@types/lru-cache@npm:5.1.1": version: 5.1.1 resolution: "@types/lru-cache@npm:5.1.1" @@ -16710,7 +16825,7 @@ __metadata: languageName: node linkType: hard -"bignumber.js@npm:^9.0.0, bignumber.js@npm:^9.0.1, bignumber.js@npm:^9.1.1, bignumber.js@npm:^9.1.2": +"bignumber.js@npm:^9.0.0, bignumber.js@npm:^9.0.1, bignumber.js@npm:^9.0.2, bignumber.js@npm:^9.1.1, bignumber.js@npm:^9.1.2": version: 9.1.2 resolution: "bignumber.js@npm:9.1.2" checksum: 10/d89b8800a987225d2c00dcbf8a69dc08e92aa0880157c851c287b307d31ceb2fc2acb0c62c3e3a3d42b6c5fcae9b004035f13eb4386e56d529d7edac18d5c9d8 @@ -17510,6 +17625,15 @@ __metadata: languageName: node linkType: hard +"bytebuffer@npm:^5.0.1": + version: 5.0.1 + resolution: "bytebuffer@npm:5.0.1" + dependencies: + long: "npm:~3" + checksum: 10/f3e9739ed9ab30e19d985fc3dadfdbd631d030874bbb313feefddac756f21ac10957257737e630fd9959744318e6e8b7d8c35b797519693bf1897be16c560970 + languageName: node + linkType: hard + "bytes@npm:1": version: 1.0.0 resolution: "bytes@npm:1.0.0" @@ -22036,6 +22160,23 @@ __metadata: languageName: node linkType: hard +"eth-onekey-bridge-keyring@npm:^0.2.1": + version: 0.2.1 + resolution: "eth-onekey-bridge-keyring@npm:0.2.1" + dependencies: + "@ethereumjs/rlp": "npm:^4.0.0" + "@ethereumjs/tx": "npm:^4.2.0" + "@ethereumjs/util": "npm:^8.0.0" + "@metamask/eth-sig-util": "npm:^7.0.1" + "@noble/hashes": "npm:^1.7.0" + "@onekeyfe/hd-core": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-shared": "npm:^1.0.27-alpha.0" + "@onekeyfe/hd-web-sdk": "npm:^1.0.27-alpha.0" + bytebuffer: "npm:^5.0.1" + checksum: 10/fc8258216a012b5029fb21f53a75c6aa0768ac23473c6bbc858e10d3d80ed16550aba5143f8d56da7d545cd601a5e9b12148398a36a4a4d500674bca9c66a18e + languageName: node + linkType: hard + "eth-phishing-detect@npm:^1.2.0": version: 1.2.0 resolution: "eth-phishing-detect@npm:1.2.0" @@ -29255,6 +29396,13 @@ __metadata: languageName: node linkType: hard +"long@npm:~3": + version: 3.2.0 + resolution: "long@npm:3.2.0" + checksum: 10/ffc685ec458ddf71a830d6deb62ff7dc551a736d47473350d9e077c22db96ec88c8a3554c11ffce7d7f2291b0c30da36629e4d0a97c29b5360dc977533c96d28 + languageName: node + linkType: hard + "longest-streak@npm:^2.0.1": version: 2.0.3 resolution: "longest-streak@npm:2.0.3" @@ -30128,6 +30276,9 @@ __metadata: "@noble/hashes": "npm:^1.3.3" "@octokit/core": "npm:^3.6.0" "@octokit/types": "npm:^14.0.0" + "@onekeyfe/hd-core": "npm:1.0.27-alpha.0" + "@onekeyfe/hd-shared": "npm:1.0.27-alpha.0" + "@onekeyfe/hd-web-sdk": "npm:1.0.27-alpha.0" "@open-rpc/meta-schema": "npm:^1.14.6" "@open-rpc/mock-server": "npm:^1.7.5" "@open-rpc/schema-utils-js": "npm:^2.0.5" @@ -30273,6 +30424,7 @@ __metadata: eth-ens-namehash: "npm:^2.0.8" eth-lattice-keyring: "patch:eth-lattice-keyring@npm%3A0.12.4#~/.yarn/patches/eth-lattice-keyring-npm-0.12.4-c5fb3fcf54.patch" eth-method-registry: "npm:^4.0.0" + eth-onekey-bridge-keyring: "npm:^0.2.1" ethereumjs-util: "npm:^7.0.10" ethers: "npm:5.7.0" extension-port-stream: "npm:^3.0.0" @@ -32943,6 +33095,13 @@ __metadata: languageName: node linkType: hard +"parse-uri@npm:^1.0.7": + version: 1.0.11 + resolution: "parse-uri@npm:1.0.11" + checksum: 10/f1f8d6f73c00b09e297f502cab2a1ae22efa1e9edbdd45caeb95be0c89d680d9822387419377823972d5010a1d25b1a72c72b08e1a15e359fa8ad4634c7aef8e + languageName: node + linkType: hard + "parse-url@npm:^8.1.0": version: 8.1.0 resolution: "parse-url@npm:8.1.0" @@ -34186,6 +34345,30 @@ __metadata: languageName: node linkType: hard +"protobufjs@npm:^6.11.2": + version: 6.11.4 + resolution: "protobufjs@npm:6.11.4" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/long": "npm:^4.0.1" + "@types/node": "npm:>=13.7.0" + long: "npm:^4.0.0" + bin: + pbjs: bin/pbjs + pbts: bin/pbts + checksum: 10/6b7fd7540d74350d65c38f69f398c9995ae019da070e79d9cd464a458c6d19b40b07c9a026be4e10704c824a344b603307745863310c50026ebd661ce4da0663 + languageName: node + linkType: hard + "protocols@npm:^2.0.0, protocols@npm:^2.0.1": version: 2.0.1 resolution: "protocols@npm:2.0.1"