zetrix-connect-wallet-sdk-test 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,88 @@
1
+ let hostGroup = {
2
+ '1': {
3
+ host: 'https://wallet.zetrix.com'
4
+ },
5
+ '2': {
6
+ host: 'https://test-wallet.zetrix.com'
7
+ }
8
+ }
9
+
10
+ class ChainSDK {
11
+ getAccountNonce(address, chainId) {
12
+ return new Promise((resolve, reject) => {
13
+ ajax({
14
+ url: hostGroup[chainId].host + '/getAccount',
15
+ type: 'GET',
16
+ data: {address: address},
17
+ success: function (respData) {
18
+ respData = JSON.parse(respData)
19
+ if (respData.error_code === 4) {
20
+ resolve(0)
21
+ }
22
+ if (!respData.result.nonce) {
23
+ resolve(0)
24
+ }
25
+ resolve(respData.result.nonce)
26
+ },
27
+ error: function (res) {
28
+
29
+ }
30
+ })
31
+
32
+ })
33
+ // this.ztxQuery = new Query({host: hostGroup[chainId].host})
34
+ // if (address === '') {
35
+ // return 0
36
+ // }
37
+ // eslint-disable-next-line no-undef
38
+ // return this.ZTXQuery.getNonceByAddress(address)
39
+
40
+ }
41
+ }
42
+
43
+
44
+ function ajax(options) {
45
+ let params = {
46
+ url: '',
47
+ type: 'get',
48
+ data: {},
49
+ success: function(data) {},
50
+ error: function(err) {}
51
+ }
52
+ options = Object.assign(params,options);
53
+
54
+ if (options.url) {
55
+ const xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
56
+ let url = options.url,
57
+ type = options.type.toUpperCase(),
58
+ data = options.data,
59
+ dataArr = [];
60
+
61
+ for (let key in data) {
62
+ let value = key + '=' + data[key];
63
+ dataArr.push(value);
64
+ }
65
+
66
+ if (type === 'GET') {
67
+ url = url + '?' + dataArr.join('&');
68
+ xhr.open(type,url,true);
69
+ xhr.send();
70
+ }
71
+
72
+ if (type === 'POST') {
73
+ xhr.open(type,url,true);
74
+ xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
75
+ xhr.send(dataArr.join('&'));
76
+ }
77
+
78
+ xhr.onreadystatechange = function() {
79
+ if (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 304)) {
80
+ options.success(xhr.responseText);
81
+ } else {
82
+ options.error(xhr.responseText);
83
+ }
84
+ }
85
+ }
86
+ }
87
+
88
+ export default ChainSDK
@@ -0,0 +1,106 @@
1
+ export const hmacStr = (message) => {
2
+ if (message) {
3
+ return SHA256(message)
4
+ } else {
5
+ return ''
6
+ }
7
+ }
8
+
9
+ function SHA256(s){
10
+ var chrsz = 8;
11
+ var hexcase = 0;
12
+ function safe_add (x, y) {
13
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
14
+ var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
15
+ return (msw << 16) | (lsw & 0xFFFF);
16
+ }
17
+ function S (X, n) { return ( X >>> n ) | (X << (32 - n)); }
18
+ function R (X, n) { return ( X >>> n ); }
19
+ function Ch(x, y, z) { return ((x & y) ^ ((~x) & z)); }
20
+ function Maj(x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
21
+ function Sigma0256(x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
22
+ function Sigma1256(x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
23
+ function Gamma0256(x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
24
+ function Gamma1256(x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
25
+ function core_sha256 (m, l) {
26
+ var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786, 0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147, 0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
27
+ var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
28
+ var W = new Array(64);
29
+ var a, b, c, d, e, f, g, h, i, j;
30
+ var T1, T2;
31
+ m[l >> 5] |= 0x80 << (24 - l % 32);
32
+ m[((l + 64 >> 9) << 4) + 15] = l;
33
+ for ( var i = 0; i<m.length; i+=16 ) {
34
+ a = HASH[0];
35
+ b = HASH[1];
36
+ c = HASH[2];
37
+ d = HASH[3];
38
+ e = HASH[4];
39
+ f = HASH[5];
40
+ g = HASH[6];
41
+ h = HASH[7];
42
+ for ( var j = 0; j<64; j++) {
43
+ if (j < 16) W[j] = m[j + i];
44
+ else W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]);
45
+ T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]);
46
+ T2 = safe_add(Sigma0256(a), Maj(a, b, c));
47
+ h = g;
48
+ g = f;
49
+ f = e;
50
+ e = safe_add(d, T1);
51
+ d = c;
52
+ c = b;
53
+ b = a;
54
+ a = safe_add(T1, T2);
55
+ }
56
+ HASH[0] = safe_add(a, HASH[0]);
57
+ HASH[1] = safe_add(b, HASH[1]);
58
+ HASH[2] = safe_add(c, HASH[2]);
59
+ HASH[3] = safe_add(d, HASH[3]);
60
+ HASH[4] = safe_add(e, HASH[4]);
61
+ HASH[5] = safe_add(f, HASH[5]);
62
+ HASH[6] = safe_add(g, HASH[6]);
63
+ HASH[7] = safe_add(h, HASH[7]);
64
+ }
65
+ return HASH;
66
+ }
67
+ function str2binb (str) {
68
+ var bin = Array();
69
+ var mask = (1 << chrsz) - 1;
70
+ for(var i = 0; i < str.length * chrsz; i += chrsz) {
71
+ bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
72
+ }
73
+ return bin;
74
+ }
75
+ function Utf8Encode(string) {
76
+ string = string.replace(/\r\n/g,"\n");
77
+ var utftext = "";
78
+ for (var n = 0; n < string.length; n++) {
79
+ var c = string.charCodeAt(n);
80
+ if (c < 128) {
81
+ utftext += String.fromCharCode(c);
82
+ }
83
+ else if((c > 127) && (c < 2048)) {
84
+ utftext += String.fromCharCode((c >> 6) | 192);
85
+ utftext += String.fromCharCode((c & 63) | 128);
86
+ }
87
+ else {
88
+ utftext += String.fromCharCode((c >> 12) | 224);
89
+ utftext += String.fromCharCode(((c >> 6) & 63) | 128);
90
+ utftext += String.fromCharCode((c & 63) | 128);
91
+ }
92
+ }
93
+ return utftext;
94
+ }
95
+ function binb2hex (binarray) {
96
+ var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
97
+ var str = "";
98
+ for(var i = 0; i < binarray.length * 4; i++) {
99
+ str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
100
+ hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
101
+ }
102
+ return str;
103
+ }
104
+ s = Utf8Encode(s);
105
+ return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
106
+ }
@@ -0,0 +1,15 @@
1
+ import Native from './native'
2
+
3
+
4
+ class Apis {
5
+ constructor() {
6
+ this.native = {}
7
+ let native = new Native()
8
+ this.native.clientEncryption = native.clientEncryption
9
+ this.native.clientDecrypt = native.clientDecrypt
10
+ this.native.closeDapp = native.closeDapp
11
+ this.native.getPreloadParams = native.getPreloadParams
12
+ }
13
+ }
14
+
15
+ export default Apis
@@ -0,0 +1,154 @@
1
+ import { resultInfo } from '../../result'
2
+ import { useDevice, isJSON, resReturnedData, fixedRequestParameters, isAnObject, getUrlParameter } from '../../util'
3
+ import { webViewPoolName, storageName } from '../poolName'
4
+ let operatingSystem = useDevice()
5
+ class Native {
6
+ constructor() {
7
+ this.appType = sessionStorage.getItem('app_type')
8
+ }
9
+ clientEncryption (data, callback) {
10
+ return new Promise((resolve, reject) => {
11
+ // JSON DATA ?
12
+ if (isJSON(data)) {
13
+ let res = JSON.parse(data)
14
+ if (res.data&&res.data.source.sourceType === 'client') {
15
+ let req = window.ZetrixWalletConnect.observer.promisePool[webViewPoolName.nativeClientEncryption]
16
+ req.resolve(resReturnedData(res))
17
+ }
18
+ }else {
19
+ if (!isAnObject(data)) {
20
+ reject ({
21
+ code: resultInfo.h5ParametersMastObject.code,
22
+ message: `${resultInfo.h5ParametersMastObject.message}`
23
+ })
24
+ return false
25
+ }
26
+ if (data.originStr == undefined) {
27
+ reject ({
28
+ code: resultInfo.h5RequiredParametersError.code,
29
+ message: `${resultInfo.h5RequiredParametersError.message}-->originStr`
30
+ })
31
+ return false
32
+ }
33
+ if (data.type == undefined) {
34
+ reject ({
35
+ code: resultInfo.h5RequiredParametersError.code,
36
+ message: `${resultInfo.h5RequiredParametersError.message}-->type`
37
+ })
38
+ return false
39
+ }
40
+ window.ZetrixWalletConnect.observer.send(webViewPoolName.nativeClientEncryption).then(res => {
41
+ callback(res)
42
+ })
43
+ let appParams = {
44
+ originStr: data.originStr,
45
+ type: data.type
46
+ }
47
+ let oParams = fixedRequestParameters(appParams)
48
+ console.log(oParams);
49
+ let appType = sessionStorage.getItem(storageName.APP_TYPE)
50
+ if (appType == 1) {
51
+ window.flutter_inappwebview.callHandler('sendEncryption', oParams)
52
+ } else {
53
+ if (operatingSystem === 'ios') {
54
+ window.webkit.messageHandlers.sendEncryption.postMessage(oParams)
55
+ } else {
56
+ window.platformChannel.sendEncryption(oParams)
57
+ }
58
+ }
59
+ }
60
+ })
61
+ }
62
+ clientDecrypt (data, callback) {
63
+ return new Promise((resolve, reject) => {
64
+ if (isJSON(data)) {
65
+ let res = JSON.parse(data)
66
+ if (res.data&&res.data.source.sourceType === 'client') {
67
+ let req = window.ZetrixWalletConnect.observer.promisePool[webViewPoolName.nativeClientDecrypt]
68
+ req.resolve(resReturnedData(res))
69
+ }
70
+ }else {
71
+ if (!isAnObject(data)) {
72
+ reject ({
73
+ code: resultInfo.h5ParametersMastObject.code,
74
+ message: `${resultInfo.h5ParametersMastObject.message}`
75
+ })
76
+ return false
77
+ }
78
+ if (data.originStr == undefined) {
79
+ reject ({
80
+ code: resultInfo.h5RequiredParametersError.code,
81
+ message: `${resultInfo.h5RequiredParametersError.message}-->originStr`
82
+ })
83
+ return false
84
+ }
85
+ if (data.type == undefined) {
86
+ reject ({
87
+ code: resultInfo.h5RequiredParametersError.code,
88
+ message: `${resultInfo.h5RequiredParametersError.message}-->type`
89
+ })
90
+ return false
91
+ }
92
+ let appParams = {
93
+ originStr: data.originStr,
94
+ type: data.type
95
+ }
96
+ let oParams = fixedRequestParameters(appParams)
97
+ console.log(oParams);
98
+ window.ZetrixWalletConnect.observer.send(webViewPoolName.nativeClientDecrypt).then(res => {
99
+ callback(res)
100
+ })
101
+ let appType = sessionStorage.getItem(storageName.APP_TYPE)
102
+ if (appType == 1) {
103
+ window.flutter_inappwebview.callHandler('sendDecryption', oParams)
104
+ } else {
105
+ if (operatingSystem === 'ios') {
106
+ window.webkit.messageHandlers.sendDecryption.postMessage(oParams)
107
+ } else {
108
+ window.platformChannel.sendDecryption(oParams)
109
+ }
110
+ }
111
+ }
112
+ })
113
+ }
114
+
115
+ scanQRCode () {}
116
+
117
+ closeDapp (data, callback) {
118
+ return new Promise((resolve, reject) => {
119
+ if (isJSON(data)) {
120
+ let res = JSON.parse(data)
121
+ if (res.data&&res.data.source.sourceType === 'client') {
122
+ let req = window.ZetrixWalletConnect.observer.promisePool[webViewPoolName.closeDapp]
123
+ req.resolve(resReturnedData(res))
124
+ }
125
+ }else {
126
+ window.ZetrixWalletConnect.observer.send(webViewPoolName.closeDapp).then(res => {
127
+ callback(res)
128
+ })
129
+ let oParams = fixedRequestParameters()
130
+ console.log(oParams);
131
+ let appType = sessionStorage.getItem(storageName.APP_TYPE)
132
+ if (appType == 1) {
133
+ window.flutter_inappwebview.callHandler('sendClose', oParams)
134
+ } else {
135
+ if (operatingSystem === 'ios') {
136
+ window.webkit.messageHandlers.sendClose.postMessage(oParams)
137
+ } else {
138
+ window.platformChannel.sendClose(oParams)
139
+ }
140
+ }
141
+ }
142
+ })
143
+ }
144
+
145
+ getPreloadParams () {
146
+ let path = window.location.href
147
+ let urlPara = getUrlParameter(path)
148
+ if (urlPara&&urlPara.navHeight) {
149
+ return urlPara
150
+ }
151
+ }
152
+
153
+ }
154
+ export default Native
@@ -0,0 +1,59 @@
1
+ class NativeMethods {
2
+ clientEncryption (params) {
3
+ return new Promise((resolve, reject) => {
4
+ try {
5
+ window.ZetrixWalletConnect.apis.native.clientEncryption(params, (res) => {
6
+ if (res.code == '0') {
7
+ resolve(res)
8
+ } else {
9
+ reject(res)
10
+ }
11
+ })
12
+ } catch (e) {
13
+ reject(e)
14
+ }
15
+ })
16
+ }
17
+ clientDecrypt (params) {
18
+ return new Promise((resolve, reject) => {
19
+ try {
20
+ window.ZetrixWalletConnect.apis.native.clientDecrypt(params, (res) => {
21
+ if (res.code == '0') {
22
+ resolve(res)
23
+ } else {
24
+ reject(res)
25
+ }
26
+ })
27
+ } catch (e) {
28
+ reject(e)
29
+ }
30
+ })
31
+ }
32
+ closeDapp (params={}) {
33
+ return new Promise((resolve, reject) => {
34
+ try {
35
+ window.ZetrixWalletConnect.apis.native.closeDapp(params, (res) => {
36
+ if (res.code == '0') {
37
+ resolve(res)
38
+ } else {
39
+ reject(res)
40
+ }
41
+ })
42
+ } catch (e) {
43
+ reject(e)
44
+ }
45
+ })
46
+ }
47
+ getPreloadParams () {
48
+ return new Promise((resolve, reject) => {
49
+ try {
50
+ let p = window.ZetrixWalletConnect.apis.native.getPreloadParams()
51
+ resolve(p)
52
+ } catch (e) {
53
+ reject(e)
54
+ }
55
+ })
56
+ }
57
+ }
58
+
59
+ export default NativeMethods
@@ -0,0 +1,90 @@
1
+ import ZetrixWalletConnect from '../h5WebView/index.js'
2
+ import NativeMethods from '../h5WebView/externalProvision/native/index.js'
3
+ class h5WebView {
4
+ constructor () {
5
+ this.zetrixWalletConnect = new ZetrixWalletConnect()
6
+ window.ZetrixWalletConnect = this.zetrixWalletConnect
7
+ let nativeMethods = new NativeMethods()
8
+ this.apis = {
9
+ native: {
10
+ clientEncryption: nativeMethods.clientEncryption,
11
+ clientDecrypt: nativeMethods.clientDecrypt,
12
+ closeDapp: nativeMethods.closeDapp,
13
+ getPreloadParams: nativeMethods.getPreloadParams
14
+ }
15
+ }
16
+ }
17
+ auth (params={}) {
18
+ return new Promise((resolve, reject) => {
19
+ try {
20
+ this.zetrixWalletConnect.auth(params, (res) => {
21
+ console.log(res, 'resres');
22
+ if (res.code == '0') {
23
+ resolve(res)
24
+ } else {
25
+ reject(res)
26
+ }
27
+ })
28
+ } catch (e) {
29
+ reject(e)
30
+ }
31
+ })
32
+ }
33
+ signMessage (params) {
34
+ return new Promise((resolve, reject) => {
35
+ try {
36
+ this.zetrixWalletConnect.signMessage(params, (res) => {
37
+ console.log(res, '------->');
38
+ if (res.code == '0') {
39
+ resolve(res)
40
+ } else {
41
+ reject(res)
42
+ }
43
+ })
44
+ } catch (e) {
45
+ reject(e)
46
+ }
47
+ })
48
+ }
49
+ signBlob (params) {
50
+ return new Promise((resolve, reject) => {
51
+ try {
52
+ this.zetrixWalletConnect.signBlob(params, (res) => {
53
+ if (res.code == '0') {
54
+ resolve(res)
55
+ } else {
56
+ reject(res)
57
+ }
58
+ })
59
+ } catch (e) {
60
+ reject(e)
61
+ }
62
+ })
63
+ }
64
+ sendTransaction (params) {
65
+ return new Promise((resolve, reject) => {
66
+ try {
67
+ this.zetrixWalletConnect.sendTransaction(params, (res) => {
68
+ if (res.code == '0') {
69
+ resolve(res)
70
+ } else {
71
+ reject(res)
72
+ }
73
+ })
74
+ } catch (e) {
75
+ reject(e)
76
+ }
77
+ })
78
+ }
79
+ getNonce (params) {
80
+ return new Promise((resolve, reject) => {
81
+ try {
82
+ resolve(this.zetrixWalletConnect.getNonce(params))
83
+ } catch (e) {
84
+ reject(e)
85
+ }
86
+ })
87
+ }
88
+ }
89
+
90
+ export default h5WebView