From 1cb5525a40849f7a0e712032a27a198abbb1a526 Mon Sep 17 00:00:00 2001 From: Andrei Giura Date: Fri, 3 Feb 2023 10:12:56 +0200 Subject: [PATCH] add opera provider example --- signing-providers/dummy-certificate-key.pem | 55 ++++++------ signing-providers/dummy-certificate.pem | 39 ++++----- signing-providers/index.html | 18 ++++ signing-providers/package-lock.json | 75 +++++++++++++++- signing-providers/package.json | 4 +- signing-providers/src/index.js | 1 + signing-providers/src/opera.js | 97 +++++++++++++++++++++ 7 files changed, 238 insertions(+), 51 deletions(-) create mode 100644 signing-providers/src/opera.js diff --git a/signing-providers/dummy-certificate-key.pem b/signing-providers/dummy-certificate-key.pem index 3a2af43..1428986 100644 --- a/signing-providers/dummy-certificate-key.pem +++ b/signing-providers/dummy-certificate-key.pem @@ -1,28 +1,27 @@ ------BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDH2ieSlD9B+FoJ -dAD1M3SJMNIxfeM2wyw3KWewaxJxd20qL/FXiBM2v5gRQZnxUdfjXALgz5DCa5zF -/eKnDHGepPA2hc7fNLofXvB1qpO9M/Y1Cjvv5kABIw1BtNMVaMRmzzkQW1aCMn9m -F3qIm8+db7iMN6pNlvvXA1Q44UgZFu1G7lhn/HSQedb90ScoDOZ2HZnLIdI2sVob -y9f6+va48Noqe2XdveA0GGE4Poch1c1l0ljffrd2mmnQRTg/bXgX5KQ+zEJg9TMT -ugz+WNrP49fW9s0Sr3/3q8gKG0D5xJrTUh0blYBecj9r37wUUMK67IIsHZuAw6kf -2GoLf2KVAgMBAAECggEAJwYdJg0WkQ4qnp/tM/P5NHS5Bnr7bA0OTDMkkRlHP6q/ -QTadXKcwgUdGLVBu++UsT7P+x+Ef9ibHNQ4PPOk8Ims4kJzuOT11fnyuXXuSX6aO -0+qMq5p9MvuiMgtaEFslxqF+FgiPytqLb+bzwUsTbj2Lfq277myl/mUjA/xRdLxh -/7yly7YBAoffsUsRu65ek7k/itV7heVCqpgbioJ4KjGpLruh3G8EEID7FfFlafRY -phU9f+xWG9QtZTEBsWDgJhljeFZ64wOHpG3Wokpq17sYWoobykkRN19kgu6ag8ok -3LC2mkw8Hf56ZdZt2B+RDOQCez1x5O3N/GbO8obKAQKBgQDkiOYmtFPAbvnZHCdN -JMYHFSMw6/hB+QZWho0oc+qAdzX4xE9rvAXOb7/oilyZf1DJdwILCm34NVH4gaVP -BhGD24usTEKMq2w/JhLsLPYYlKyvtNKBCFpg0S7xoyfPT6xfUYfsnvN+50V7R5cG -WyHeJytGKnkkc5UVRzuORWfagQKBgQDf3s6HrL3LTjuXWqgXNk6HefKP/888MZHL -/iyJ6Av8xmeSyvWITcB2Hr7xka+weTb3Co/6MH140LDc0zAMEISsTKP+p4qV5Ewv -e60wOAx+7r0gYPy9vTef7oW4zwh1we1UUO1FklI3/mUIEkNlHQnSGouTCrS/BVib -7IWBi8N2FQKBgQCXbmciymacomyIAnHAWlelpcn1xsZv4LTkbK/oWDbQ/S0UM/B0 -cNhgHAhL7DLDu2sqs+L0seqAh8RTKIUDQgAlITsB5l5Km+RUS8RKHtjLHOj4XJcH -zSMl+DZlAzmD00Viu8GXdxPdyR1vPNbD7WsZq1avXcF79+KXgOXjtfXFAQKBgQCa -kVploKYWNfi9ArHl/O/xaAhK1iN+evcgMmkL+nQ0XcRrPMiUCKLmq0nIvn7gSIDj -xp4r7sji3qwOe53D5q/DytK742+zGEJl0m18SmaOSUW5kl1On9NFEEmxlPhRXckA -GzQHggRUdsfI79sqeAcs0nkl2BF9hjJszbxL+nTFFQKBgQDVl/toy30trOx9vyB+ -yA76hyF654Drjjnbhbi1UDkKoVo95H1q8Arnu/VzgEhW/GcfIUAkUAuRlxNK08Et -LjINeDA2blVI9emwGSLRSeuMkpOLTexs5PqaB64A36IPn2YZWRsQ760z0PqlZwPf -G7Or7/WAMMKnmsuXYA2ZOc6w7A== ------END PRIVATE KEY----- +-----BEGIN RSA PRIVATE KEY----- +MIIEowIBAAKCAQEAoqdRehXsILBOKtFbR1uxf1mkczsW7GCo6RYEA/l444eDYKIO +oKLCcCO9E9c9oHgjqLSR17cDa2epd91jBfKZumMlM0LaL0PT45GvBBS3f5/sN+2w +j8ymwa7AAMj8f6Dj5DjncuJRQ2PeXx+ctbB0whX6AARjGhL7tJN01XR1rUnB57e2 +G6rnUIEjlNLbL+dXmUlS0qMMNODxp4BUdnEZzQuOgfdPCswOMur2PpkAowosN8Ch +7rBY31uUTSntGqOxbIkyBlo5vmdr55nkpFDpF0yxFHKzksZi+unxwR8W1QWVq10P +sL9o0DimCRx5TxgqZIOMWmrbFuymReUR0s/5kwIDAQABAoIBAFI3byjeAfB4Ddr4 +3kHQqITt5AFXIfwz082WEkuMA75HFnJ3GBu8ibozZnSr/PurHqM9OucmHDVjPbdY +EaDFA03CpeAmb7EqgOVsE2Jlsmdxh+6xV+koEjaexXDgJznAMtF+rgdVPKxqw9Gj +Ygw4+JvOjgMKNKnOZKrfSlRHPOBtNIYel/UxCQCO+567udqawtQdeAFxE8iMPNZo +Pxu0h8ZAwQYa7ug96/rtnhpfeNElL5GXt7Y9y/0Keb3dPVvq6GB2cqMg3p64v5YD +t6e4qwgBn6lJmbf3hr7/oXV1K5VZRMVbI2A6Fwca2yR2tvxvbFMgkM2K56kWsudC +Ukhj85ECgYEA08mKQ3C+h5vpBuyS21T4GZnd6ek9CL0WZr6zJsP5FyBAL6UjUulr +V0vjtno5PqvxAyhV32gDa6W1FsstKoRe1NsBTVyx2kfC0kQZOgBou4j+OQ5xX9Bl +u3aiZfXDth+ZdQsXOa1Q7YkxRnuDhmcV4/TXiCfUCC97yf/AQ7/57JkCgYEAxJvy +d+6Wm9yvsieGV2TBd4RYARi/DUr8KvSh1D9xWGjFGeSMatSMiYyH3vXnsFdLWto1 +a4TJNXFtINNA3xv1Xu0tNM+2n/5455NjQckdLWdiUwAFlc4BjNQU+LmpvtRnh0kY +haQe3g+VHYQrrH01AKRSkTbdaoI/83cu0OlzpwsCgYBhAIFcbEpIEGgF7NtCrENK +bogOt+5ljz2wZ43kpoPzTKk5aViphBHPFQpCLO8FPnmQKaxTO++9IVO1EfAo9iH9 +OiX5ighH4vBfoCMxxrgxlQhjl7Lj4K6H00mEi7FNPGHsEt1bZH+ZnGm+T5opOBP1 +qdICIcPiz+TR21rzbP2KmQKBgDIXLTJDFhoForm3+jEf2W6SyD0XSe2gEhj7lJNX +yo/kuXq8UM4S8u9EX4V9jxbNVsSB3aRUA1NbX5tCVz/AhsY1lRPka7ndgn41fc9P +5uAfe9x7n/CnuJthmSo5WzbkNLAx/k5mHvsiazJG7z2V9MACHYsjuEuffZ2Q2tuc +7rs7AoGBAKdpicNM6Yp7fbq2B/btV0oDBVY8yaJvAr10T6NlLyyYukWMLZrtYf+k +dwehH5decS4rnToea6Fir9LVy5E+A4C3dA2MsfcqUETLhu53xiY0+5kUbNYdY4yg +b64UT6CQUJ2uddkAS4WWHPIcw269eiIlIAqzbbqikp/iZSahDn7A +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/signing-providers/dummy-certificate.pem b/signing-providers/dummy-certificate.pem index f3e3308..3e7bc71 100644 --- a/signing-providers/dummy-certificate.pem +++ b/signing-providers/dummy-certificate.pem @@ -1,23 +1,20 @@ -----BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIURipd1gg/wb/awjtz1q09AeYhAkcwDQYJKoZIhvcNAQEL -BQAwcjELMAkGA1UEBhMCUk8xDTALBgNVBAgMBFRlc3QxDTALBgNVBAcMBFRlc3Qx -DTALBgNVBAoMBFRlc3QxDTALBgNVBAsMBFRlc3QxEjAQBgNVBAMMCTEyNy4wLjAu -MTETMBEGCSqGSIb3DQEJARYEVGVzdDAeFw0yMjAzMjgxNDU5NTdaFw0zMjAzMjUx -NDU5NTdaMHIxCzAJBgNVBAYTAlJPMQ0wCwYDVQQIDARUZXN0MQ0wCwYDVQQHDARU -ZXN0MQ0wCwYDVQQKDARUZXN0MQ0wCwYDVQQLDARUZXN0MRIwEAYDVQQDDAkxMjcu -MC4wLjExEzARBgkqhkiG9w0BCQEWBFRlc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQDH2ieSlD9B+FoJdAD1M3SJMNIxfeM2wyw3KWewaxJxd20qL/FX -iBM2v5gRQZnxUdfjXALgz5DCa5zF/eKnDHGepPA2hc7fNLofXvB1qpO9M/Y1Cjvv -5kABIw1BtNMVaMRmzzkQW1aCMn9mF3qIm8+db7iMN6pNlvvXA1Q44UgZFu1G7lhn -/HSQedb90ScoDOZ2HZnLIdI2sVoby9f6+va48Noqe2XdveA0GGE4Poch1c1l0ljf -frd2mmnQRTg/bXgX5KQ+zEJg9TMTugz+WNrP49fW9s0Sr3/3q8gKG0D5xJrTUh0b -lYBecj9r37wUUMK67IIsHZuAw6kf2GoLf2KVAgMBAAGjUzBRMB0GA1UdDgQWBBQv -xzKASX+752Cpd/Ja7gjZ9lTIcTAfBgNVHSMEGDAWgBQvxzKASX+752Cpd/Ja7gjZ -9lTIcTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQBzcWWvnWtb -v7VlDqxoJIsveaGfKl8vlrvYR/FBskxDEQRjp6ptoDiDDbbTc6fJ9x4WdX003Cvv -mkG1+SnjrpKTm8Sr5DlYPZW61yG/77Is7mLiQUN65NUhud2soTn5ZFst6aZSY0dA -QtubNXoshwKSru7xVwzOBqiwf0kdBNnDxD4p2s88f99B26l6Ze4rw1xrRMgBaA2I -WU0/jqOCkJc6khL0MMjvRGiilTAt4ra+IUf2hAwf6TORbH27CBWACPwL74rNb3Yh -M2SSUK0wxego+3Jvh8JAiViVetPfkWI01Nu64VVB+CJOydTFotPGCSJkc/BF4yJq -ZlzZ1OQJvjZX +MIIDTTCCAjWgAwIBAgIJE0oFz2cohNz8MA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV +BAMTCWxvY2FsaG9zdDAeFw0yMzAxMjUxMzQ4MjZaFw0yMzAyMjQxMzQ4MjZaMBQx +EjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAKKnUXoV7CCwTirRW0dbsX9ZpHM7FuxgqOkWBAP5eOOHg2CiDqCiwnAjvRPX +PaB4I6i0kde3A2tnqXfdYwXymbpjJTNC2i9D0+ORrwQUt3+f7DftsI/MpsGuwADI +/H+g4+Q453LiUUNj3l8fnLWwdMIV+gAEYxoS+7STdNV0da1Jwee3thuq51CBI5TS +2y/nV5lJUtKjDDTg8aeAVHZxGc0LjoH3TwrMDjLq9j6ZAKMKLDfAoe6wWN9blE0p +7RqjsWyJMgZaOb5na+eZ5KRQ6RdMsRRys5LGYvrp8cEfFtUFlatdD7C/aNA4pgkc +eU8YKmSDjFpq2xbspkXlEdLP+ZMCAwEAAaOBoTCBnjALBgNVHQ8EBAMCAvQwMQYD +VR0lBCowKAYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYBBQUHAwgw +XAYDVR0RBFUwU4IJbG9jYWxob3N0ghVsb2NhbGhvc3QubG9jYWxkb21haW6CBmx2 +aC5tZYIIKi5sdmgubWWCBVs6OjFdhwR/AAABhxD+gAAAAAAAAAAAAAAAAAABMA0G +CSqGSIb3DQEBCwUAA4IBAQA6iOXzAKSE6/QmQbUkVw3MT7ERPQRjOx7BQxte81Er +ksGgrkHBWfYH/G+X8T/7kOzFthr3iypez2aPhKx7HzJiR1ZLtw0lOGQTCKvAx7Yp +tH/fj478OtX4e/DHLzGSi1NKG3n392vPhpcro6FXZbz0YXFGHcmKhVHAE9vAfHCL +LDrdaMh6DFPKLgZ7RVfGZLAJwOhZV9g/1JEb/pjP4uzoFlBI47R6IkbcAHjF3gXA +eJC/ooPY9uJzo0MhNldQgKzcu29R99MJAVrWMbsh/P/qK9H8IRWT/V2JJ58HNpFS +HNPcNt/AxOOvBPUNuw5hV8GqRiJvQLhUJEvyontmoUtZ -----END CERTIFICATE----- diff --git a/signing-providers/index.html b/signing-providers/index.html index bcce0ec..3465b3c 100644 --- a/signing-providers/index.html +++ b/signing-providers/index.html @@ -56,6 +56,23 @@

Extension (Maiar DeFi Wallet)

+
+
+
+

Opera (Opera Crypto Wallet)

+
+
+
+
+ + + + + +
+
+
+
@@ -152,6 +169,7 @@

Hardware Wallet

diff --git a/signing-providers/package-lock.json b/signing-providers/package-lock.json index 6b5a350..33de4fb 100644 --- a/signing-providers/package-lock.json +++ b/signing-providers/package-lock.json @@ -13,7 +13,9 @@ "@elrondnetwork/erdjs-hw-provider": "2.0.4", "@elrondnetwork/erdjs-wallet-connect-provider": "2.0.3", "@elrondnetwork/erdjs-walletcore": "1.0.0", - "@elrondnetwork/erdjs-web-wallet-provider": "2.1.1" + "@elrondnetwork/erdjs-web-wallet-provider": "2.1.1", + "@multiversx/sdk-opera-provider": "^1.0.0-alpha.1", + "qrcode": "^1.5.1" }, "devDependencies": { "@types/node": "18.0.3", @@ -760,6 +762,11 @@ "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" }, + "node_modules/@multiversx/sdk-opera-provider": { + "version": "1.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-opera-provider/-/sdk-opera-provider-1.0.0-alpha.1.tgz", + "integrity": "sha512-5hrqn+kNpuy/S6eV5wh5mE4lvQo0PduZ7fLsh/2Srcaz3K5kM5lE1VyQmWk4DTxToZSldrGbgWz/olezoC6fPg==" + }, "node_modules/@octokit/auth-token": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", @@ -2462,6 +2469,11 @@ "randombytes": "^2.0.0" } }, + "node_modules/dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, "node_modules/domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -2523,6 +2535,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4001,6 +4018,14 @@ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/prebuild-install": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", @@ -4106,6 +4131,23 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, + "node_modules/qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", @@ -6013,6 +6055,11 @@ "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==" }, + "@multiversx/sdk-opera-provider": { + "version": "1.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@multiversx/sdk-opera-provider/-/sdk-opera-provider-1.0.0-alpha.1.tgz", + "integrity": "sha512-5hrqn+kNpuy/S6eV5wh5mE4lvQo0PduZ7fLsh/2Srcaz3K5kM5lE1VyQmWk4DTxToZSldrGbgWz/olezoC6fPg==" + }, "@octokit/auth-token": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", @@ -7459,6 +7506,11 @@ "randombytes": "^2.0.0" } }, + "dijkstrajs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz", + "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==" + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -7518,6 +7570,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -8643,6 +8700,11 @@ "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" }, + "pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==" + }, "prebuild-install": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.4.tgz", @@ -8728,6 +8790,17 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, + "qrcode": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz", + "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==", + "requires": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + } + }, "qs": { "version": "6.10.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", diff --git a/signing-providers/package.json b/signing-providers/package.json index 92d270d..47e6ed5 100644 --- a/signing-providers/package.json +++ b/signing-providers/package.json @@ -13,7 +13,9 @@ "@elrondnetwork/erdjs-hw-provider": "2.0.4", "@elrondnetwork/erdjs-wallet-connect-provider": "2.0.3", "@elrondnetwork/erdjs-walletcore": "1.0.0", - "@elrondnetwork/erdjs-web-wallet-provider": "2.1.1" + "@elrondnetwork/erdjs-web-wallet-provider": "2.1.1", + "@multiversx/sdk-opera-provider": "^1.0.0-alpha.1", + "qrcode": "^1.5.1" }, "devDependencies": { "@types/node": "18.0.3", diff --git a/signing-providers/src/index.js b/signing-providers/src/index.js index be5f7e2..9d34e3e 100644 --- a/signing-providers/src/index.js +++ b/signing-providers/src/index.js @@ -2,3 +2,4 @@ export * from "./web-wallet"; export * from "./extension"; export * from "./wallet-connect"; export * from "./hw"; +export * from "./opera"; diff --git a/signing-providers/src/opera.js b/signing-providers/src/opera.js new file mode 100644 index 0000000..e5bfc0a --- /dev/null +++ b/signing-providers/src/opera.js @@ -0,0 +1,97 @@ +import { OperaProvider } from "@multiversx/sdk-opera-provider"; +import { + Address, + SignableMessage, + Transaction, + TransactionPayload, +} from "@elrondnetwork/erdjs"; +import { + acquireThirdPartyAuthToken, + verifyAuthTokenSignature, +} from "./backendFacade"; + +export class Opera { + constructor() { + this.provider = OperaProvider.getInstance(); + } + + async login() { + await this.provider.init(); + const address = await this.provider.login(); + + alert(`Address: ${address}`); + } + + async loginWithToken() { + await this.provider.init(); + + const authToken = acquireThirdPartyAuthToken(); + await this.provider.login({ token: authToken }); + + const address = this.provider.account.address; + const signature = this.provider.account.signature; + alert(`Address: ${address};\nsignature of token = ${signature}`); + + alert(verifyAuthTokenSignature(address, authToken, signature)); + } + + async logout() { + await this.provider.init(); + await this.provider.logout(); + } + + async signTransactions() { + await this.provider.init(); + + const firstTransaction = new Transaction({ + nonce: 42, + value: "1", + receiver: new Address( + "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa" + ), + gasPrice: 1000000000, + gasLimit: 50000, + data: new TransactionPayload(), + chainID: "T", + version: 1, + }); + + const secondTransaction = new Transaction({ + nonce: 43, + value: "100000000", + receiver: new Address( + "erd1uv40ahysflse896x4ktnh6ecx43u7cmy9wnxnvcyp7deg299a4sq6vaywa" + ), + gasPrice: 1000000000, + gasLimit: 50000, + data: new TransactionPayload("hello world"), + chainID: "T", + version: 1, + }); + + await this.provider.signTransactions([firstTransaction, secondTransaction]); + console.log("First transaction, upon signing:"); + console.log(firstTransaction); + console.log("Second transaction, upon signing:"); + console.log(secondTransaction); + + alert( + JSON.stringify( + [firstTransaction.toSendable(), secondTransaction.toSendable()], + null, + 4 + ) + ); + } + + async signMessage() { + await this.provider.init(); + + const message = new SignableMessage({ + message: Buffer.from("hello"), + }); + + await this.provider.signMessage(message); + alert(JSON.stringify(message.toJSON(), null, 4)); + } +}