From ca0626d972ba720f721249c88d4da7344ab17c78 Mon Sep 17 00:00:00 2001 From: dongfengtao Date: Wed, 13 Mar 2024 18:11:28 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E6=8A=96=E9=9F=B3?= =?UTF-8?q?=E5=8E=9F=E7=94=9F=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/miniapp-tt/miniapp-tt/app.json | 11 +++++++ examples/miniapp-tt/miniapp-tt/app.ts | 5 ++++ examples/miniapp-tt/miniapp-tt/app.ttss | 0 examples/miniapp-tt/miniapp-tt/package.json | 11 +++++++ .../miniapp-tt/pages/index/index.json | 3 ++ .../miniapp-tt/pages/index/index.ts | 10 +++++++ .../miniapp-tt/pages/index/index.ttml | 1 + .../miniapp-tt/pages/index/index.ttss | 4 +++ .../miniapp-tt/miniapp-tt/project.config.json | 18 ++++++++++++ examples/miniapp-tt/miniapp-tt/tsconfig.json | 29 +++++++++++++++++++ packages/miniapp-tt/README.md | 11 +++++++ packages/miniapp-tt/package.json | 27 +++++++++++++++++ 12 files changed, 130 insertions(+) create mode 100644 examples/miniapp-tt/miniapp-tt/app.json create mode 100644 examples/miniapp-tt/miniapp-tt/app.ts create mode 100644 examples/miniapp-tt/miniapp-tt/app.ttss create mode 100644 examples/miniapp-tt/miniapp-tt/package.json create mode 100644 examples/miniapp-tt/miniapp-tt/pages/index/index.json create mode 100644 examples/miniapp-tt/miniapp-tt/pages/index/index.ts create mode 100644 examples/miniapp-tt/miniapp-tt/pages/index/index.ttml create mode 100644 examples/miniapp-tt/miniapp-tt/pages/index/index.ttss create mode 100644 examples/miniapp-tt/miniapp-tt/project.config.json create mode 100644 examples/miniapp-tt/miniapp-tt/tsconfig.json create mode 100644 packages/miniapp-tt/README.md create mode 100644 packages/miniapp-tt/package.json diff --git a/examples/miniapp-tt/miniapp-tt/app.json b/examples/miniapp-tt/miniapp-tt/app.json new file mode 100644 index 000000000..9ddca1b0a --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/app.json @@ -0,0 +1,11 @@ +{ + "pages":[ + "pages/index/index" + ], + "window":{ + "backgroundTextStyle":"light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "Mini Program", + "navigationBarTextStyle":"black" + } +} diff --git a/examples/miniapp-tt/miniapp-tt/app.ts b/examples/miniapp-tt/miniapp-tt/app.ts new file mode 100644 index 000000000..a0f82cf2b --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/app.ts @@ -0,0 +1,5 @@ +App({ + onLaunch: function () { + + } +}) diff --git a/examples/miniapp-tt/miniapp-tt/app.ttss b/examples/miniapp-tt/miniapp-tt/app.ttss new file mode 100644 index 000000000..e69de29bb diff --git a/examples/miniapp-tt/miniapp-tt/package.json b/examples/miniapp-tt/miniapp-tt/package.json new file mode 100644 index 000000000..f8b7e342f --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/package.json @@ -0,0 +1,11 @@ +{ + "name": "miniprogram-ts", + "version": "1.0.0", + "description": "", + "keywords": [], + "author": "", + "license": "", + "devDependencies": { + "@douyin-microapp/typings": "latest" + } +} diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.json b/examples/miniapp-tt/miniapp-tt/pages/index/index.json new file mode 100644 index 000000000..3928faa4c --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/pages/index/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.ts b/examples/miniapp-tt/miniapp-tt/pages/index/index.ts new file mode 100644 index 000000000..29b79b132 --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/pages/index/index.ts @@ -0,0 +1,10 @@ +const app = getApp() + +Page({ + data: { + + }, + onLoad: function () { + console.log('Welcome to Mini Code') + }, +}) diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.ttml b/examples/miniapp-tt/miniapp-tt/pages/index/index.ttml new file mode 100644 index 000000000..94e6aca9c --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/pages/index/index.ttml @@ -0,0 +1 @@ +Welcome to Mini Program \ No newline at end of file diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.ttss b/examples/miniapp-tt/miniapp-tt/pages/index/index.ttss new file mode 100644 index 000000000..c009246ce --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/pages/index/index.ttss @@ -0,0 +1,4 @@ +.intro { + margin: 30px; + text-align: center; +} \ No newline at end of file diff --git a/examples/miniapp-tt/miniapp-tt/project.config.json b/examples/miniapp-tt/miniapp-tt/project.config.json new file mode 100644 index 000000000..679850339 --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/project.config.json @@ -0,0 +1,18 @@ +{ + "setting": { + "urlCheck": true, + "es6": true, + "postcss": true, + "minified": true, + "newFeature": true, + "autoCompile": true, + "compileHotReLoad": true, + "nativeCompile": true, + "useCompilerPlugins": [ + "typescript" + ] + }, + "appid": "ttcad4bc6955e5062401", + "projectname": "miniapp-tt", + "douyinProjectType": "native" +} diff --git a/examples/miniapp-tt/miniapp-tt/tsconfig.json b/examples/miniapp-tt/miniapp-tt/tsconfig.json new file mode 100644 index 000000000..504005430 --- /dev/null +++ b/examples/miniapp-tt/miniapp-tt/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "strictNullChecks": true, + "noImplicitAny": true, + "module": "CommonJS", + "target": "ES2020", + "allowJs": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "noImplicitThis": true, + "noImplicitReturns": true, + "alwaysStrict": true, + "noFallthroughCasesInSwitch": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "strict": true, + "strictPropertyInitialization": true, + "lib": ["es2020"], + "types": ["@douyin-microapp/typings"] + }, + "include": [ + "./**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} + \ No newline at end of file diff --git a/packages/miniapp-tt/README.md b/packages/miniapp-tt/README.md new file mode 100644 index 000000000..c71ef567e --- /dev/null +++ b/packages/miniapp-tt/README.md @@ -0,0 +1,11 @@ +# @authing/miniapp-tt + +Authing JS SDK for douyin minprogram + +## Usage + +reference [examples](../../examples/miniapp-tt/miniapp/pages/index/index.ts) + +## Doc + +https://docs.authing.cn/v3/reference/sdk/miniapp/quick.html diff --git a/packages/miniapp-tt/package.json b/packages/miniapp-tt/package.json new file mode 100644 index 000000000..7e8966512 --- /dev/null +++ b/packages/miniapp-tt/package.json @@ -0,0 +1,27 @@ +{ + "name": "@authing/miniapp-tt", + "version": "5.1.16-alpha.2", + "description": "Authing miniapp JS SDK for TT", + "main": "dist/bundle-tt.js", + "types": "dist/typings/src/index.d.ts", + "author": "https://github.com/authing", + "license": "MIT", + "files": [ + "dist" + ], + "scripts": { + "release:official": "npm publish --verbose --access public", + "release:alpha": "npm publish --verbose --tag=alpha --access public" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "repository": { + "type": "git", + "url": "https://github.com/authing/authing-js-sdk" + }, + "bugs": { + "url": "https://github.com/authing/authing-js-sdk/issues" + } +} From 65ee18d020c356eab4b3d61b60f9747c8b1e529a Mon Sep 17 00:00:00 2001 From: dongfengtao Date: Wed, 13 Mar 2024 18:15:08 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=E6=8A=96=E9=9F=B3?= =?UTF-8?q?=E5=8E=9F=E7=94=9F=E5=B0=8F=E7=A8=8B=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/miniapp-tt/{miniapp-tt => }/app.json | 0 examples/miniapp-tt/{miniapp-tt => }/app.ts | 0 examples/miniapp-tt/{miniapp-tt => }/app.ttss | 0 .../miniapp-tt/miniapp-tt/project.config.json | 18 ------------------ .../miniapp-tt/{miniapp-tt => }/package.json | 0 .../{miniapp-tt => }/pages/index/index.json | 0 .../{miniapp-tt => }/pages/index/index.ts | 0 .../{miniapp-tt => }/pages/index/index.ttml | 0 .../{miniapp-tt => }/pages/index/index.ttss | 0 examples/miniapp-tt/project.config.json | 1 + .../miniapp-tt/{miniapp-tt => }/tsconfig.json | 0 11 files changed, 1 insertion(+), 18 deletions(-) rename examples/miniapp-tt/{miniapp-tt => }/app.json (100%) rename examples/miniapp-tt/{miniapp-tt => }/app.ts (100%) rename examples/miniapp-tt/{miniapp-tt => }/app.ttss (100%) delete mode 100644 examples/miniapp-tt/miniapp-tt/project.config.json rename examples/miniapp-tt/{miniapp-tt => }/package.json (100%) rename examples/miniapp-tt/{miniapp-tt => }/pages/index/index.json (100%) rename examples/miniapp-tt/{miniapp-tt => }/pages/index/index.ts (100%) rename examples/miniapp-tt/{miniapp-tt => }/pages/index/index.ttml (100%) rename examples/miniapp-tt/{miniapp-tt => }/pages/index/index.ttss (100%) create mode 100644 examples/miniapp-tt/project.config.json rename examples/miniapp-tt/{miniapp-tt => }/tsconfig.json (100%) diff --git a/examples/miniapp-tt/miniapp-tt/app.json b/examples/miniapp-tt/app.json similarity index 100% rename from examples/miniapp-tt/miniapp-tt/app.json rename to examples/miniapp-tt/app.json diff --git a/examples/miniapp-tt/miniapp-tt/app.ts b/examples/miniapp-tt/app.ts similarity index 100% rename from examples/miniapp-tt/miniapp-tt/app.ts rename to examples/miniapp-tt/app.ts diff --git a/examples/miniapp-tt/miniapp-tt/app.ttss b/examples/miniapp-tt/app.ttss similarity index 100% rename from examples/miniapp-tt/miniapp-tt/app.ttss rename to examples/miniapp-tt/app.ttss diff --git a/examples/miniapp-tt/miniapp-tt/project.config.json b/examples/miniapp-tt/miniapp-tt/project.config.json deleted file mode 100644 index 679850339..000000000 --- a/examples/miniapp-tt/miniapp-tt/project.config.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "setting": { - "urlCheck": true, - "es6": true, - "postcss": true, - "minified": true, - "newFeature": true, - "autoCompile": true, - "compileHotReLoad": true, - "nativeCompile": true, - "useCompilerPlugins": [ - "typescript" - ] - }, - "appid": "ttcad4bc6955e5062401", - "projectname": "miniapp-tt", - "douyinProjectType": "native" -} diff --git a/examples/miniapp-tt/miniapp-tt/package.json b/examples/miniapp-tt/package.json similarity index 100% rename from examples/miniapp-tt/miniapp-tt/package.json rename to examples/miniapp-tt/package.json diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.json b/examples/miniapp-tt/pages/index/index.json similarity index 100% rename from examples/miniapp-tt/miniapp-tt/pages/index/index.json rename to examples/miniapp-tt/pages/index/index.json diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.ts b/examples/miniapp-tt/pages/index/index.ts similarity index 100% rename from examples/miniapp-tt/miniapp-tt/pages/index/index.ts rename to examples/miniapp-tt/pages/index/index.ts diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.ttml b/examples/miniapp-tt/pages/index/index.ttml similarity index 100% rename from examples/miniapp-tt/miniapp-tt/pages/index/index.ttml rename to examples/miniapp-tt/pages/index/index.ttml diff --git a/examples/miniapp-tt/miniapp-tt/pages/index/index.ttss b/examples/miniapp-tt/pages/index/index.ttss similarity index 100% rename from examples/miniapp-tt/miniapp-tt/pages/index/index.ttss rename to examples/miniapp-tt/pages/index/index.ttss diff --git a/examples/miniapp-tt/project.config.json b/examples/miniapp-tt/project.config.json new file mode 100644 index 000000000..a58f6d053 --- /dev/null +++ b/examples/miniapp-tt/project.config.json @@ -0,0 +1 @@ +{"setting":{"urlCheck":true,"es6":true,"postcss":true,"minified":true,"newFeature":true,"autoCompile":true,"compileHotReLoad":true,"nativeCompile":true,"useCompilerPlugins":["typescript"]},"appid":"ttcad4bc6955e5062401","projectname":"miniapp-tt","douyinProjectType":"native"} diff --git a/examples/miniapp-tt/miniapp-tt/tsconfig.json b/examples/miniapp-tt/tsconfig.json similarity index 100% rename from examples/miniapp-tt/miniapp-tt/tsconfig.json rename to examples/miniapp-tt/tsconfig.json From 1d0cfdbf711dfe5e9d92c880ca6e63f9ba9876f9 Mon Sep 17 00:00:00 2001 From: dongfengtaoadmin Date: Wed, 13 Mar 2024 10:24:13 +0000 Subject: [PATCH 3/6] v5.1.16-alpha.3 --- lerna.json | 2 +- packages/miniapp-jsencrypt/package.json | 2 +- packages/miniapp-sm2encrypt/package-lock.json | 2 +- packages/miniapp-sm2encrypt/package.json | 2 +- packages/miniapp-taro/package.json | 2 +- packages/miniapp-tt/package.json | 2 +- packages/miniapp-uniapp/package.json | 2 +- packages/miniapp-wx/package.json | 2 +- packages/miniapp/package-lock.json | 2 +- packages/miniapp/package.json | 2 +- packages/web/package-lock.json | 2 +- packages/web/package.json | 2 +- packages/weixin-official-account/package-lock.json | 2 +- packages/weixin-official-account/package.json | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lerna.json b/lerna.json index f0cae58f4..61bd01b16 100644 --- a/lerna.json +++ b/lerna.json @@ -4,5 +4,5 @@ "packages/*" ], "useWorkspaces": true, - "version": "5.1.16-alpha.2" + "version": "5.1.16-alpha.3" } diff --git a/packages/miniapp-jsencrypt/package.json b/packages/miniapp-jsencrypt/package.json index f10892ef1..7e849fcac 100644 --- a/packages/miniapp-jsencrypt/package.json +++ b/packages/miniapp-jsencrypt/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-jsencrypt", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "JavaScript encrypt module for miniapp", "main": "lib/index.js", "module": "lib/index.js", diff --git a/packages/miniapp-sm2encrypt/package-lock.json b/packages/miniapp-sm2encrypt/package-lock.json index 99de8e5cb..4765a61c7 100644 --- a/packages/miniapp-sm2encrypt/package-lock.json +++ b/packages/miniapp-sm2encrypt/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-sm2encrypt", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/miniapp-sm2encrypt/package.json b/packages/miniapp-sm2encrypt/package.json index 91d4e5bf0..43de3a225 100644 --- a/packages/miniapp-sm2encrypt/package.json +++ b/packages/miniapp-sm2encrypt/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-sm2encrypt", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "JavaScript sm2 encrypt module for miniapp", "main": "lib/index.js", "module": "lib/index.js", diff --git a/packages/miniapp-taro/package.json b/packages/miniapp-taro/package.json index d80ae328c..fada084f5 100644 --- a/packages/miniapp-taro/package.json +++ b/packages/miniapp-taro/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-taro", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Authing miniapp JS SDK for Taro", "main": "dist/bundle-taro.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp-tt/package.json b/packages/miniapp-tt/package.json index 7e8966512..d319342dc 100644 --- a/packages/miniapp-tt/package.json +++ b/packages/miniapp-tt/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-tt", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Authing miniapp JS SDK for TT", "main": "dist/bundle-tt.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp-uniapp/package.json b/packages/miniapp-uniapp/package.json index 4aeb45928..5944de0c0 100644 --- a/packages/miniapp-uniapp/package.json +++ b/packages/miniapp-uniapp/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-uniapp", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Authing miniapp JS SDK for uniapp", "main": "dist/bundle-uniapp.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp-wx/package.json b/packages/miniapp-wx/package.json index f606264c3..3e647e911 100644 --- a/packages/miniapp-wx/package.json +++ b/packages/miniapp-wx/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-wx", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Authing miniapp JS SDK for WX", "main": "dist/bundle-wx.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp/package-lock.json b/packages/miniapp/package-lock.json index f9e80ceb3..36455ea11 100644 --- a/packages/miniapp/package-lock.json +++ b/packages/miniapp/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/miniapp/package.json b/packages/miniapp/package.json index f77c21ff7..918e414ce 100644 --- a/packages/miniapp/package.json +++ b/packages/miniapp/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Authing miniapp sdk source code", "main": "src/index.ts", "module": "src/index.ts", diff --git a/packages/web/package-lock.json b/packages/web/package-lock.json index d51b2cbd4..aeffb443c 100644 --- a/packages/web/package-lock.json +++ b/packages/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/web", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/web/package.json b/packages/web/package.json index 3bd22a3e9..3e0de3284 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@authing/web", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Official SDK of Authing for Browser", "main": "dist/global/index.global.js", "module": "dist/esm/index.esm.js", diff --git a/packages/weixin-official-account/package-lock.json b/packages/weixin-official-account/package-lock.json index 6ad270ab1..829da0aab 100644 --- a/packages/weixin-official-account/package-lock.json +++ b/packages/weixin-official-account/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/weixin-official-account", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/weixin-official-account/package.json b/packages/weixin-official-account/package.json index c4608610f..ec2c888f0 100644 --- a/packages/weixin-official-account/package.json +++ b/packages/weixin-official-account/package.json @@ -1,6 +1,6 @@ { "name": "@authing/weixin-official-account", - "version": "5.1.16-alpha.2", + "version": "5.1.16-alpha.3", "description": "Authing SDK for Weixin official account", "module": "dist/esm/weixin-official-account.min.js", "types": "dist/typings/index.d.ts", From 180d8149950382897b7abfa132eebf74d15e752f Mon Sep 17 00:00:00 2001 From: dongfengtao Date: Thu, 14 Mar 2024 11:18:04 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix:=E5=A2=9E=E5=8A=A0=20=E6=8A=96=E9=9F=B3?= =?UTF-8?q?=20=E5=8E=9F=E7=94=9F=20sdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- examples/miniapp-tt/package-lock.json | 99 ++++++++++++++++++++++ examples/miniapp-tt/package.json | 3 + examples/miniapp-tt/pages/index/index.ts | 22 ++++- examples/miniapp-tt/pages/index/index.ttml | 36 +++++++- examples/miniapp-tt/project.config.json | 20 ++++- packages/miniapp/scripts/build.js | 2 +- scripts/transfer-miniapp-libs.js | 2 +- 7 files changed, 179 insertions(+), 5 deletions(-) create mode 100644 examples/miniapp-tt/package-lock.json diff --git a/examples/miniapp-tt/package-lock.json b/examples/miniapp-tt/package-lock.json new file mode 100644 index 000000000..22912c842 --- /dev/null +++ b/examples/miniapp-tt/package-lock.json @@ -0,0 +1,99 @@ +{ + "name": "miniprogram-ts", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "miniprogram-ts", + "version": "1.0.0", + "devDependencies": { + "@authing/miniapp-jsencrypt": "^5.1.8", + "@authing/miniapp-sm2encrypt": "^5.1.8", + "@authing/miniapp-tt": "^5.1.16-alpha.3", + "@authing/miniapp-wx": "^5.1.16-alpha.3", + "@douyin-microapp/typings": "latest" + } + }, + "node_modules/@authing/miniapp-jsencrypt": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@authing/miniapp-jsencrypt/-/miniapp-jsencrypt-5.1.16.tgz", + "integrity": "sha512-ekj7GDuFSoNYiGLcyKPDLaXhBaqBJf8OSNVjK2pMgK0aEm11yOPqXMRlVuAjX6/CpgxrDzAwqi40Mm/fQDK20g==", + "dev": true + }, + "node_modules/@authing/miniapp-sm2encrypt": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@authing/miniapp-sm2encrypt/-/miniapp-sm2encrypt-5.1.16.tgz", + "integrity": "sha512-qc5X2Vat2BO+P+RrQkAv45BAucT2gMj7NwIx2pwaDj01eA6kd0AFwjvGyRNh1lOKYCWJ7/XqlgOA1HRvPqe85w==", + "dev": true, + "dependencies": { + "jsbn": "^1.1.0" + } + }, + "node_modules/@authing/miniapp-tt": { + "version": "5.1.16-alpha.3", + "resolved": "https://registry.npmjs.org/@authing/miniapp-tt/-/miniapp-tt-5.1.16-alpha.3.tgz", + "integrity": "sha512-mU3cJXG9I6lSxqHy0zIsMIfHTfyUnWhc8TlnanuFibvaFfMDw0bjvdLS6m88kxUowg+cMjYAatXxR9jIcTskug==", + "dev": true + }, + "node_modules/@authing/miniapp-wx": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@authing/miniapp-wx/-/miniapp-wx-5.1.16.tgz", + "integrity": "sha512-aSuGGSCUmARU1Suqj7oyUpJxHAmOJ0qqNdyLZf9EUjb3d1K7UXrZtz9kjPPc+HjHu84ViPoM/lgR5hpZcsWNpw==", + "dev": true + }, + "node_modules/@douyin-microapp/typings": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@douyin-microapp/typings/-/typings-1.2.2.tgz", + "integrity": "sha512-FiGQOn6zaxcx2NPP9qO/zJzpElO6Qazwe8OuDqJ7uBmwJj8M8rDA8pp1LQ9f9UOb5LNUyTTquVc3IqlSDk6hjw==", + "dev": true + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + } + }, + "dependencies": { + "@authing/miniapp-jsencrypt": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@authing/miniapp-jsencrypt/-/miniapp-jsencrypt-5.1.16.tgz", + "integrity": "sha512-ekj7GDuFSoNYiGLcyKPDLaXhBaqBJf8OSNVjK2pMgK0aEm11yOPqXMRlVuAjX6/CpgxrDzAwqi40Mm/fQDK20g==", + "dev": true + }, + "@authing/miniapp-sm2encrypt": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@authing/miniapp-sm2encrypt/-/miniapp-sm2encrypt-5.1.16.tgz", + "integrity": "sha512-qc5X2Vat2BO+P+RrQkAv45BAucT2gMj7NwIx2pwaDj01eA6kd0AFwjvGyRNh1lOKYCWJ7/XqlgOA1HRvPqe85w==", + "dev": true, + "requires": { + "jsbn": "^1.1.0" + } + }, + "@authing/miniapp-tt": { + "version": "5.1.16-alpha.3", + "resolved": "https://registry.npmjs.org/@authing/miniapp-tt/-/miniapp-tt-5.1.16-alpha.3.tgz", + "integrity": "sha512-mU3cJXG9I6lSxqHy0zIsMIfHTfyUnWhc8TlnanuFibvaFfMDw0bjvdLS6m88kxUowg+cMjYAatXxR9jIcTskug==", + "dev": true + }, + "@authing/miniapp-wx": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@authing/miniapp-wx/-/miniapp-wx-5.1.16.tgz", + "integrity": "sha512-aSuGGSCUmARU1Suqj7oyUpJxHAmOJ0qqNdyLZf9EUjb3d1K7UXrZtz9kjPPc+HjHu84ViPoM/lgR5hpZcsWNpw==", + "dev": true + }, + "@douyin-microapp/typings": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@douyin-microapp/typings/-/typings-1.2.2.tgz", + "integrity": "sha512-FiGQOn6zaxcx2NPP9qO/zJzpElO6Qazwe8OuDqJ7uBmwJj8M8rDA8pp1LQ9f9UOb5LNUyTTquVc3IqlSDk6hjw==", + "dev": true + }, + "jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + } + } +} diff --git a/examples/miniapp-tt/package.json b/examples/miniapp-tt/package.json index f8b7e342f..3d340d3d1 100644 --- a/examples/miniapp-tt/package.json +++ b/examples/miniapp-tt/package.json @@ -6,6 +6,9 @@ "author": "", "license": "", "devDependencies": { + "@authing/miniapp-jsencrypt": "^5.1.8", + "@authing/miniapp-sm2encrypt": "^5.1.8", + "@authing/miniapp-tt": "^5.1.16-alpha.3", "@douyin-microapp/typings": "latest" } } diff --git a/examples/miniapp-tt/pages/index/index.ts b/examples/miniapp-tt/pages/index/index.ts index 29b79b132..9b38bf722 100644 --- a/examples/miniapp-tt/pages/index/index.ts +++ b/examples/miniapp-tt/pages/index/index.ts @@ -1,4 +1,24 @@ -const app = getApp() +// index.ts +import { Authing } from '@authing/miniapp-tt' + +// // 按需使用,加密密码 +// // import { encryptFunction } from '@authing/miniapp-jsencrypt' + +// import { encryptFunction } from '@authing/miniapp-sm2encrypt' +// const AUTHING_EXT_IDP_CONN_IDENTIFIER = "douyin-mini2" + +// const APP_SECRET = '04093a8d20472bc1ea7d2207d69751ca99895d82'; +// const APP_ID = 'ttcad4bc6955e5062401'; +// const authing = new Authing({ +// appId: '65e817bc434b729d058140a0', +// host: 'https://minnappauthing.why.lixpng.top', +// userPoolId: '6321a29180d12ab3a3e35306', +// encryptFunction +// }) + +// const app = getApp() + +// console.log(Authing,'AuthingAuthingdfft') Page({ data: { diff --git a/examples/miniapp-tt/pages/index/index.ttml b/examples/miniapp-tt/pages/index/index.ttml index 94e6aca9c..8bd8c5ff7 100644 --- a/examples/miniapp-tt/pages/index/index.ttml +++ b/examples/miniapp-tt/pages/index/index.ttml @@ -1 +1,35 @@ -Welcome to Mini Program \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/miniapp-tt/project.config.json b/examples/miniapp-tt/project.config.json index a58f6d053..a4cf41ebf 100644 --- a/examples/miniapp-tt/project.config.json +++ b/examples/miniapp-tt/project.config.json @@ -1 +1,19 @@ -{"setting":{"urlCheck":true,"es6":true,"postcss":true,"minified":true,"newFeature":true,"autoCompile":true,"compileHotReLoad":true,"nativeCompile":true,"useCompilerPlugins":["typescript"]},"appid":"ttcad4bc6955e5062401","projectname":"miniapp-tt","douyinProjectType":"native"} +{ + "setting": { + "urlCheck": true, + "es6": true, + "postcss": true, + "minified": true, + "newFeature": true, + "autoCompile": true, + "compileHotReLoad": true, + "nativeCompile": true, + "useCompilerPlugins": ["typescript"] + }, + "packOptions": { + "npm": true + }, + "appid": "ttcad4bc6955e5062401", + "projectname": "miniapp-tt", + "douyinProjectType": "native" +} diff --git a/packages/miniapp/scripts/build.js b/packages/miniapp/scripts/build.js index fc9374b74..24c4b8881 100644 --- a/packages/miniapp/scripts/build.js +++ b/packages/miniapp/scripts/build.js @@ -6,7 +6,7 @@ */ // development mode: -// npm run dev modes=wx,ali,..... +// npm run dev modes=wx,Taro,uni,tt..... // production mode: // npm run prod modes=wx,ali,baidu,tt...... diff --git a/scripts/transfer-miniapp-libs.js b/scripts/transfer-miniapp-libs.js index e2849208b..d447c776b 100644 --- a/scripts/transfer-miniapp-libs.js +++ b/scripts/transfer-miniapp-libs.js @@ -6,7 +6,7 @@ const resolve = (dir, file = '') =>{ return path.resolve(__dirname, '../', dir, file) } -const platforms = ['taro', 'uni', 'wx'] +const platforms = ['taro', 'uni', 'wx', 'tt'] readyGo() From f5d58114109fe501ea3d8525a8fc49ce5cf3bfaa Mon Sep 17 00:00:00 2001 From: dongfengtaoadmin Date: Thu, 14 Mar 2024 03:20:37 +0000 Subject: [PATCH 5/6] v5.1.16-alpha.4 --- lerna.json | 2 +- packages/miniapp-jsencrypt/package.json | 2 +- packages/miniapp-sm2encrypt/package-lock.json | 2 +- packages/miniapp-sm2encrypt/package.json | 2 +- packages/miniapp-taro/package.json | 2 +- packages/miniapp-tt/package.json | 2 +- packages/miniapp-uniapp/package.json | 2 +- packages/miniapp-wx/package.json | 2 +- packages/miniapp/package-lock.json | 2 +- packages/miniapp/package.json | 2 +- packages/web/package-lock.json | 2 +- packages/web/package.json | 2 +- packages/weixin-official-account/package-lock.json | 2 +- packages/weixin-official-account/package.json | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lerna.json b/lerna.json index 61bd01b16..b965bf725 100644 --- a/lerna.json +++ b/lerna.json @@ -4,5 +4,5 @@ "packages/*" ], "useWorkspaces": true, - "version": "5.1.16-alpha.3" + "version": "5.1.16-alpha.4" } diff --git a/packages/miniapp-jsencrypt/package.json b/packages/miniapp-jsencrypt/package.json index 7e849fcac..9c9734fad 100644 --- a/packages/miniapp-jsencrypt/package.json +++ b/packages/miniapp-jsencrypt/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-jsencrypt", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "JavaScript encrypt module for miniapp", "main": "lib/index.js", "module": "lib/index.js", diff --git a/packages/miniapp-sm2encrypt/package-lock.json b/packages/miniapp-sm2encrypt/package-lock.json index 4765a61c7..aa6ee5850 100644 --- a/packages/miniapp-sm2encrypt/package-lock.json +++ b/packages/miniapp-sm2encrypt/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-sm2encrypt", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/miniapp-sm2encrypt/package.json b/packages/miniapp-sm2encrypt/package.json index 43de3a225..7a97e21c7 100644 --- a/packages/miniapp-sm2encrypt/package.json +++ b/packages/miniapp-sm2encrypt/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-sm2encrypt", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "JavaScript sm2 encrypt module for miniapp", "main": "lib/index.js", "module": "lib/index.js", diff --git a/packages/miniapp-taro/package.json b/packages/miniapp-taro/package.json index fada084f5..6bc7a0674 100644 --- a/packages/miniapp-taro/package.json +++ b/packages/miniapp-taro/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-taro", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Authing miniapp JS SDK for Taro", "main": "dist/bundle-taro.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp-tt/package.json b/packages/miniapp-tt/package.json index d319342dc..fafc48266 100644 --- a/packages/miniapp-tt/package.json +++ b/packages/miniapp-tt/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-tt", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Authing miniapp JS SDK for TT", "main": "dist/bundle-tt.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp-uniapp/package.json b/packages/miniapp-uniapp/package.json index 5944de0c0..0ddc858cd 100644 --- a/packages/miniapp-uniapp/package.json +++ b/packages/miniapp-uniapp/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-uniapp", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Authing miniapp JS SDK for uniapp", "main": "dist/bundle-uniapp.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp-wx/package.json b/packages/miniapp-wx/package.json index 3e647e911..3f91bed77 100644 --- a/packages/miniapp-wx/package.json +++ b/packages/miniapp-wx/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp-wx", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Authing miniapp JS SDK for WX", "main": "dist/bundle-wx.js", "types": "dist/typings/src/index.d.ts", diff --git a/packages/miniapp/package-lock.json b/packages/miniapp/package-lock.json index 36455ea11..ca73a972f 100644 --- a/packages/miniapp/package-lock.json +++ b/packages/miniapp/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/miniapp/package.json b/packages/miniapp/package.json index 918e414ce..68b4043b3 100644 --- a/packages/miniapp/package.json +++ b/packages/miniapp/package.json @@ -1,6 +1,6 @@ { "name": "@authing/miniapp", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Authing miniapp sdk source code", "main": "src/index.ts", "module": "src/index.ts", diff --git a/packages/web/package-lock.json b/packages/web/package-lock.json index aeffb443c..ce0de50d6 100644 --- a/packages/web/package-lock.json +++ b/packages/web/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/web", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/web/package.json b/packages/web/package.json index 3e0de3284..78e8d3826 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,6 +1,6 @@ { "name": "@authing/web", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Official SDK of Authing for Browser", "main": "dist/global/index.global.js", "module": "dist/esm/index.esm.js", diff --git a/packages/weixin-official-account/package-lock.json b/packages/weixin-official-account/package-lock.json index 829da0aab..520fc7891 100644 --- a/packages/weixin-official-account/package-lock.json +++ b/packages/weixin-official-account/package-lock.json @@ -1,6 +1,6 @@ { "name": "@authing/weixin-official-account", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "lockfileVersion": 2, "requires": true, "packages": { diff --git a/packages/weixin-official-account/package.json b/packages/weixin-official-account/package.json index ec2c888f0..29acffb00 100644 --- a/packages/weixin-official-account/package.json +++ b/packages/weixin-official-account/package.json @@ -1,6 +1,6 @@ { "name": "@authing/weixin-official-account", - "version": "5.1.16-alpha.3", + "version": "5.1.16-alpha.4", "description": "Authing SDK for Weixin official account", "module": "dist/esm/weixin-official-account.min.js", "types": "dist/typings/index.d.ts", From d8ee2c3d9f95d055a21658b04aa2848b744ec6d6 Mon Sep 17 00:00:00 2001 From: dongfengtao Date: Thu, 14 Mar 2024 13:59:19 +0800 Subject: [PATCH 6/6] =?UTF-8?q?fix:=E5=AE=8C=E5=96=84README=20=E5=92=8C=20?= =?UTF-8?q?examples?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-zh_CN.md | 1 + README.md | 1 + examples/miniapp-taro/package.json | 2 +- .../@authing/miniapp-jsencrypt/index.js | 1 + .../@authing/miniapp-jsencrypt/lib/index.js | 2 + .../miniapp-jsencrypt/lib/index.js.map | 1 + .../miniapp-jsencrypt/lib/jsencrypt.js | 28 ++ .../miniapp-jsencrypt/lib/jsencrypt.js.map | 1 + .../@authing/miniapp-jsencrypt/package.json | 21 ++ .../@authing/miniapp-sm2encrypt/index.js | 1 + .../@authing/miniapp-sm2encrypt/lib/ec.js | 2 + .../@authing/miniapp-sm2encrypt/lib/ec.js.map | 1 + .../@authing/miniapp-sm2encrypt/lib/index.js | 2 + .../miniapp-sm2encrypt/lib/index.js.map | 1 + .../@authing/miniapp-sm2encrypt/lib/sm2.js | 2 + .../miniapp-sm2encrypt/lib/sm2.js.map | 1 + .../@authing/miniapp-sm2encrypt/lib/sm3.js | 2 + .../miniapp-sm2encrypt/lib/sm3.js.map | 1 + .../@authing/miniapp-sm2encrypt/lib/utils.js | 2 + .../miniapp-sm2encrypt/lib/utils.js.map | 1 + .../@authing/miniapp-sm2encrypt/package.json | 25 ++ .../@authing/miniapp-tt/index.js | 1 + .../@authing/miniapp-tt/package.json | 27 ++ .../miniprogram_npm/jsbn/example.js | 2 + .../miniprogram_npm/jsbn/example.js.map | 1 + .../miniapp-tt/miniprogram_npm/jsbn/index.js | 2 + .../miniprogram_npm/jsbn/index.js.map | 1 + .../miniprogram_npm/jsbn/package.json | 21 ++ .../miniprogram_npm/jsbn/test/es6-import.js | 2 + .../jsbn/test/es6-import.js.map | 1 + examples/miniapp-tt/package-lock.json | 49 +-- examples/miniapp-tt/package.json | 8 +- examples/miniapp-tt/pages/index/index.ts | 357 +++++++++++++++++- examples/miniapp-tt/pages/index/index.ttml | 17 +- examples/miniapp-tt/project.config.json | 33 +- examples/miniapp-uniapp/package.json | 2 +- examples/miniapp-wx/miniapp/package.json | 2 +- .../miniapp-wx/miniapp/pages/index/index.ts | 8 +- 38 files changed, 547 insertions(+), 86 deletions(-) create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/index.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/jsencrypt.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/jsencrypt.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/package.json create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/index.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm2.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm2.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/utils.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/utils.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/package.json create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/index.js create mode 100644 examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/package.json create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/example.js create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/example.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/index.js create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/index.js.map create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/package.json create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js create mode 100644 examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js.map diff --git a/README-zh_CN.md b/README-zh_CN.md index 032116eb3..d52b61379 100644 --- a/README-zh_CN.md +++ b/README-zh_CN.md @@ -26,6 +26,7 @@ Authing 帮助您在几分钟内构建登录、注册、单点登录、用户身 |@authing/miniapp-taro|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-taro.svg)](https://www.npmjs.com/package/@authing/miniapp-taro)|适配小程序框架 Taro| |@authing/miniapp-uniapp|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-uniapp.svg)](https://www.npmjs.com/package/@authing/miniapp-uniapp)|适配小程序框架 uniapp| |@authing/miniapp-wx|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-wx.svg)](https://www.npmjs.com/package/@authing/miniapp-wx)|适配原生微信小程序| +|@authing/miniapp-tt|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-tt.svg)](https://www.npmjs.com/package/@authing/miniapp-tt)|适配原生抖音小程序| |@authing/web|[![npm version](https://badge.fury.io/js/@authing%2Fweb.svg)](https://www.npmjs.com/package/@authing/web)|快速为新开发的或已有的 Web 应用集成认证能力| |@authing/weixin-official-account|[![npm version](https://badge.fury.io/js/@authing%2Fweixin-official-account.svg)](https://www.npmjs.com/package/@authing/weixin-official-account)|适配微信公众号网页授权| diff --git a/README.md b/README.md index 883185e76..e69d7d6f2 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Authing helps you build the sign-in, sign-out, sso, auth, and user identity with |@authing/miniapp-taro|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-taro.svg)](https://www.npmjs.com/package/@authing/miniapp-taro)|Authing miniapp SDK for Taro| |@authing/miniapp-uniapp|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-uniapp.svg)](https://www.npmjs.com/package/@authing/miniapp-uniapp)|Authing miniapp SDK for uniapp| |@authing/miniapp-wx|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-wx.svg)](https://www.npmjs.com/package/@authing/miniapp-wx)|Authing miniapp SDK for Weixin| +|@authing/miniapp-tt|[![npm version](https://badge.fury.io/js/@authing%2Fminiapp-tt.svg)](https://www.npmjs.com/package/@authing/miniapp-tt)|Authing miniapp SDK for Douying| |@authing/web|[![npm version](https://badge.fury.io/js/@authing%2Fweb.svg)](https://www.npmjs.com/package/@authing/web)|Authing Browser SDK| |@authing/weixin-official-account|[![npm version](https://badge.fury.io/js/@authing%2Fweixin-official-account.svg)](https://www.npmjs.com/package/@authing/weixin-official-account)|Authing JS SDK for weixin official account| diff --git a/examples/miniapp-taro/package.json b/examples/miniapp-taro/package.json index 2c2366b54..34408ac76 100644 --- a/examples/miniapp-taro/package.json +++ b/examples/miniapp-taro/package.json @@ -37,7 +37,7 @@ "dependencies": { "@authing/miniapp-jsencrypt": "^5.1.0", "@authing/miniapp-sm2encrypt": "^5.1.0", - "@authing/miniapp-taro": "^5.1.5-alpha.2", + "@authing/miniapp-taro": "^5.1.16-alpha.4", "@authing/miniapp-wx": "^5.1.5-alpha.2", "@babel/runtime": "^7.7.7", "@tarojs/components": "3.5.4", diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/index.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/index.js new file mode 100644 index 000000000..6b1804c7d --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/index.js'); \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js new file mode 100644 index 000000000..7923f43fc --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js @@ -0,0 +1,2 @@ +import{JSEncrypt}from"./jsencrypt";export function encryptFunction(t,n){const r=new JSEncrypt({});r.setPublicKey(n);return r.encrypt(t).toString()} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js.map b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js.map new file mode 100644 index 000000000..91c850b20 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node_modules/@authing/miniapp-jsencrypt/lib/index.js","names":["JSEncrypt","encryptFunction","plainText","publicKey","encrypt","setPublicKey","toString"],"sources":["node_modules/@authing/miniapp-jsencrypt/lib/index.js"],"sourcesContent":["import { JSEncrypt } from './jsencrypt'\n\nexport function encryptFunction (plainText, publicKey) {\n const encrypt = new JSEncrypt({})\n\n encrypt.setPublicKey(publicKey)\n\n const encStr = encrypt.encrypt(plainText)\n\n return encStr.toString()\n}\n"],"mappings":"OAASA,cAAiB,qBAEnB,SAASC,gBAAiBC,EAAWC,GAC1C,MAAMC,EAAU,IAAIJ,UAAU,CAAC,GAE/BI,EAAQC,aAAaF,GAIrB,OAFeC,EAAQA,QAAQF,GAEjBI,UAChB"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/jsencrypt.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/jsencrypt.js new file mode 100644 index 000000000..0bb4b1a1d --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/lib/jsencrypt.js @@ -0,0 +1,28 @@ +var window={};!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.JSEncrypt={})}(this,(function(t){"use strict";var e="0123456789abcdefghijklmnopqrstuvwxyz";function i(t){return e.charAt(t)}function r(t,e){return t&e}function n(t,e){return t|e}function s(t,e){return t^e}function o(t,e){return t&~e}function h(t){if(0==t)return-1;var e=0;return 0==(65535&t)&&(t>>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function a(t){for(var e=0;0!=t;)t&=t-1,++e;return e}var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function c(t){var e,i,r="";for(e=0;e+3<=t.length;e+=3)i=parseInt(t.substring(e,e+3),16),r+=u.charAt(i>>6)+u.charAt(63&i);for(e+1==t.length?(i=parseInt(t.substring(e,e+1),16),r+=u.charAt(i<<2)):e+2==t.length&&(i=parseInt(t.substring(e,e+2),16),r+=u.charAt(i>>2)+u.charAt((3&i)<<4));(3&r.length)>0;)r+="=";return r}function f(t){var e,r="",n=0,s=0;for(e=0;e>2),s=3&o,n=1):1==n?(r+=i(s<<2|o>>4),s=15&o,n=2):2==n?(r+=i(s),r+=i(o>>2),s=3&o,n=3):(r+=i(s<<2|o>>4),r+=i(15&o),n=0))}return 1==n&&(r+=i(s<<2)),r} +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */var l,p=function(t,e){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i])},p(t,e)};var g,d=function(t){var e;if(void 0===l){var i="0123456789ABCDEF",r=" \f\n\r\t \u2028\u2029";for(l={},e=0;e<16;++e)l[i.charAt(e)]=e;for(i=i.toLowerCase(),e=10;e<16;++e)l[i.charAt(e)]=e;for(e=0;e<8;++e)l[r.charAt(e)]=-1}var n=[],s=0,o=0;for(e=0;e=2?(n[n.length]=s,s=0,o=0):s<<=4}}if(o)throw new Error("Hex encoding incomplete: 4 bits missing");return n},v={decode:function(t){var e;if(void 0===g){var i="= \f\n\r\t \u2028\u2029";for(g=Object.create(null),e=0;e<64;++e)g["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;for(e=0;e<9;++e)g[i.charAt(e)]=-1}var r=[],n=0,s=0;for(e=0;e=4?(r[r.length]=n>>16,r[r.length]=n>>8&255,r[r.length]=255&n,n=0,s=0):n<<=6}}switch(s){case 1:throw new Error("Base64 encoding incomplete: at least 2 bits missing");case 2:r[r.length]=n>>10;break;case 3:r[r.length]=n>>16,r[r.length]=n>>8&255}return r},re:/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,unarmor:function(t){var e=v.re.exec(t);if(e)if(e[1])t=e[1];else{if(!e[2])throw new Error("RegExp out of sync");t=e[2]}return v.decode(t)}},m=1e13,y=function(){function t(t){this.buf=[+t||0]}return t.prototype.mulAdd=function(t,e){var i,r,n=this.buf,s=n.length;for(i=0;i0&&(n[i]=e)},t.prototype.sub=function(t){var e,i,r=this.buf,n=r.length;for(e=0;e=0;--r)i+=(m+e[r]).toString().substring(1);return i},t.prototype.valueOf=function(){for(var t=this.buf,e=0,i=t.length-1;i>=0;--i)e=e*m+t[i];return e},t.prototype.simplify=function(){var t=this.buf;return 1==t.length?t[0]:this},t}(),b=/^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,T=/^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;function S(t,e){return t.length>e&&(t=t.substring(0,e)+"…"),t}var E=function(){function t(e,i){this.hexDigits="0123456789ABCDEF",e instanceof t?(this.enc=e.enc,this.pos=e.pos):(this.enc=e,this.pos=i)}return t.prototype.get=function(t){if(void 0===t&&(t=this.pos++),t>=this.enc.length)throw new Error("Requesting byte offset "+t+" on a stream of length "+this.enc.length);return"string"==typeof this.enc?this.enc.charCodeAt(t):this.enc[t]},t.prototype.hexByte=function(t){return this.hexDigits.charAt(t>>4&15)+this.hexDigits.charAt(15&t)},t.prototype.hexDump=function(t,e,i){for(var r="",n=t;n176)return!1}return!0},t.prototype.parseStringISO=function(t,e){for(var i="",r=t;r191&&n<224?String.fromCharCode((31&n)<<6|63&this.get(r++)):String.fromCharCode((15&n)<<12|(63&this.get(r++))<<6|63&this.get(r++))}return i},t.prototype.parseStringBMP=function(t,e){for(var i,r,n="",s=t;s127,s=n?255:0,o="";r==s&&++t4){for(o=r,i<<=3;0==(128&(+o^s));)o=+o<<1,--i;o="("+i+" bit)\n"}n&&(r-=256);for(var h=new y(r),a=t+1;a=a;--u)s+=h>>u&1?"1":"0";if(s.length>i)return n+S(s,i)}return n+s},t.prototype.parseOctetString=function(t,e,i){if(this.isASCII(t,e))return S(this.parseStringISO(t,e),i);var r=e-t,n="("+r+" byte)\n";r>(i/=2)&&(e=t+i);for(var s=t;si&&(n+="…"),n},t.prototype.parseOID=function(t,e,i){for(var r="",n=new y,s=0,o=t;oi)return S(r,i);n=new y,s=0}}return s>0&&(r+=".incomplete"),r},t}(),w=function(){function t(t,e,i,r,n){if(!(r instanceof D))throw new Error("Invalid tag value.");this.stream=t,this.header=e,this.length=i,this.tag=r,this.sub=n}return t.prototype.typeName=function(){switch(this.tag.tagClass){case 0:switch(this.tag.tagNumber){case 0:return"EOC";case 1:return"BOOLEAN";case 2:return"INTEGER";case 3:return"BIT_STRING";case 4:return"OCTET_STRING";case 5:return"NULL";case 6:return"OBJECT_IDENTIFIER";case 7:return"ObjectDescriptor";case 8:return"EXTERNAL";case 9:return"REAL";case 10:return"ENUMERATED";case 11:return"EMBEDDED_PDV";case 12:return"UTF8String";case 16:return"SEQUENCE";case 17:return"SET";case 18:return"NumericString";case 19:return"PrintableString";case 20:return"TeletexString";case 21:return"VideotexString";case 22:return"IA5String";case 23:return"UTCTime";case 24:return"GeneralizedTime";case 25:return"GraphicString";case 26:return"VisibleString";case 27:return"GeneralString";case 28:return"UniversalString";case 30:return"BMPString"}return"Universal_"+this.tag.tagNumber.toString();case 1:return"Application_"+this.tag.tagNumber.toString();case 2:return"["+this.tag.tagNumber.toString()+"]";case 3:return"Private_"+this.tag.tagNumber.toString()}},t.prototype.content=function(t){if(void 0===this.tag)return null;void 0===t&&(t=1/0);var e=this.posContent(),i=Math.abs(this.length);if(!this.tag.isUniversal())return null!==this.sub?"("+this.sub.length+" elem)":this.stream.parseOctetString(e,e+i,t);switch(this.tag.tagNumber){case 1:return 0===this.stream.get(e)?"false":"true";case 2:return this.stream.parseInteger(e,e+i);case 3:return this.sub?"("+this.sub.length+" elem)":this.stream.parseBitString(e,e+i,t);case 4:return this.sub?"("+this.sub.length+" elem)":this.stream.parseOctetString(e,e+i,t);case 6:return this.stream.parseOID(e,e+i,t);case 16:case 17:return null!==this.sub?"("+this.sub.length+" elem)":"(no elem)";case 12:return S(this.stream.parseStringUTF(e,e+i),t);case 18:case 19:case 20:case 21:case 22:case 26:return S(this.stream.parseStringISO(e,e+i),t);case 30:return S(this.stream.parseStringBMP(e,e+i),t);case 23:case 24:return this.stream.parseTime(e,e+i,23==this.tag.tagNumber)}return null},t.prototype.toString=function(){return this.typeName()+"@"+this.stream.pos+"[header:"+this.header+",length:"+this.length+",sub:"+(null===this.sub?"null":this.sub.length)+"]"},t.prototype.toPrettyString=function(t){void 0===t&&(t="");var e=t+this.typeName()+" @"+this.stream.pos;if(this.length>=0&&(e+="+"),e+=this.length,this.tag.tagConstructed?e+=" (constructed)":!this.tag.isUniversal()||3!=this.tag.tagNumber&&4!=this.tag.tagNumber||null===this.sub||(e+=" (encapsulates)"),e+="\n",null!==this.sub){t+=" ";for(var i=0,r=this.sub.length;i6)throw new Error("Length over 48 bits not supported at position "+(t.pos-1));if(0===i)return null;e=0;for(var r=0;r>6,this.tagConstructed=0!=(32&e),this.tagNumber=31&e,31==this.tagNumber){var i=new y;do{e=t.get(),i.mulAdd(128,127&e)}while(128&e);this.tagNumber=i.simplify()}}return t.prototype.isUniversal=function(){return 0===this.tagClass},t.prototype.isEOC=function(){return 0===this.tagClass&&0===this.tagNumber},t}(),x=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],R=(1<<26)/x[x.length-1],B=function(){function t(t,e,i){null!=t&&("number"==typeof t?this.fromNumber(t,e,i):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}return t.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<0)for(a>a)>0&&(s=!0,o=i(r));h>=0;)a>(a+=this.DB-e)):(r=this[h]>>(a-=e)&n,a<=0&&(a+=this.DB,--h)),r>0&&(s=!0),s&&(o+=i(r));return s?o:"0"},t.prototype.negate=function(){var e=N();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var i=this.t;if(0!=(e=i-t.t))return this.s<0?-e:e;for(;--i>=0;)if(0!=(e=this[i]-t[i]))return e;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+C(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=N();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(t,e){var i;return i=t<256||e.isEven()?new O(e):new V(e),this.exp(t,i)},t.prototype.clone=function(){var t=N();return this.copyTo(t),t},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var t=this.t,e=[];e[0]=this.s;var i,r=this.DB-t*this.DB%8,n=0;if(t-- >0)for(r>r)!=(this.s&this.DM)>>r&&(e[n++]=i|this.s<=0;)r<8?(i=(this[t]&(1<>(r+=this.DB-8)):(i=this[t]>>(r-=8)&255,r<=0&&(r+=this.DB,--t)),0!=(128&i)&&(i|=-256),0==n&&(128&this.s)!=(128&i)&&++n,(n>0||i!=this.s)&&(e[n++]=i);return e},t.prototype.equals=function(t){return 0==this.compareTo(t)},t.prototype.min=function(t){return this.compareTo(t)<0?this:t},t.prototype.max=function(t){return this.compareTo(t)>0?this:t},t.prototype.and=function(t){var e=N();return this.bitwiseTo(t,r,e),e},t.prototype.or=function(t){var e=N();return this.bitwiseTo(t,n,e),e},t.prototype.xor=function(t){var e=N();return this.bitwiseTo(t,s,e),e},t.prototype.andNot=function(t){var e=N();return this.bitwiseTo(t,o,e),e},t.prototype.not=function(){for(var t=N(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var c=N();for(r.sqrTo(o[1],c);h<=u;)o[h]=N(),r.mulTo(c,o[h-2],o[h]),h+=2}var f,l,p=t.t-1,g=!0,d=N();for(n=C(t[p])-1;p>=0;){for(n>=a?f=t[p]>>n-a&u:(f=(t[p]&(1<0&&(f|=t[p-1]>>this.DB+n-a)),h=i;0==(1&f);)f>>=1,--h;if((n-=h)<0&&(n+=this.DB,--p),g)o[f].copyTo(s),g=!1;else{for(;h>1;)r.sqrTo(s,d),r.sqrTo(d,s),h-=2;h>0?r.sqrTo(s,d):(l=s,s=d,d=l),r.mulTo(d,o[f],s)}for(;p>=0&&0==(t[p]&1<=0?(r.subTo(n,r),i&&s.subTo(h,s),o.subTo(a,o)):(n.subTo(r,n),i&&h.subTo(s,h),a.subTo(o,a))}return 0!=n.compareTo(t.ONE)?t.ZERO:a.compareTo(e)>=0?a.subtract(e):a.signum()<0?(a.addTo(e,a),a.signum()<0?a.add(e):a):a},t.prototype.pow=function(t){return this.exp(t,new A)},t.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),i=t.s<0?t.negate():t.clone();if(e.compareTo(i)<0){var r=e;e=i,i=r}var n=e.getLowestSetBit(),s=i.getLowestSetBit();if(s<0)return e;for(n0&&(e.rShiftTo(s,e),i.rShiftTo(s,i));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=i.getLowestSetBit())>0&&i.rShiftTo(n,i),e.compareTo(i)>=0?(e.subTo(i,e),e.rShiftTo(1,e)):(i.subTo(e,i),i.rShiftTo(1,i));return s>0&&i.lShiftTo(s,i),i},t.prototype.isProbablePrime=function(t){var e,i=this.abs();if(1==i.t&&i[0]<=x[x.length-1]){for(e=0;e=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},t.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},t.prototype.fromString=function(e,i){var r;if(16==i)r=4;else if(8==i)r=3;else if(256==i)r=8;else if(2==i)r=1;else if(32==i)r=5;else{if(4!=i)return void this.fromRadix(e,i);r=2}this.t=0,this.s=0;for(var n=e.length,s=!1,o=0;--n>=0;){var h=8==r?255&+e[n]:j(e,n);h<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==o?this[this.t++]=h:o+r>this.DB?(this[this.t-1]|=(h&(1<>this.DB-o):this[this.t-1]|=h<=this.DB&&(o-=this.DB))}8==r&&0!=(128&+e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},t.prototype.dlShiftTo=function(t,e){var i;for(i=this.t-1;i>=0;--i)e[i+t]=this[i];for(i=t-1;i>=0;--i)e[i]=0;e.t=this.t+t,e.s=this.s},t.prototype.drShiftTo=function(t,e){for(var i=t;i=0;--h)e[h+s+1]=this[h]>>r|o,o=(this[h]&n)<=0;--h)e[h]=0;e[s]=o,e.t=this.t+s+1,e.s=this.s,e.clamp()},t.prototype.rShiftTo=function(t,e){e.s=this.s;var i=Math.floor(t/this.DB);if(i>=this.t)e.t=0;else{var r=t%this.DB,n=this.DB-r,s=(1<>r;for(var o=i+1;o>r;r>0&&(e[this.t-i-1]|=(this.s&s)<>=this.DB;if(t.t>=this.DB;r+=this.s}else{for(r+=this.s;i>=this.DB;r-=t.s}e.s=r<0?-1:0,r<-1?e[i++]=this.DV+r:r>0&&(e[i++]=r),e.t=i,e.clamp()},t.prototype.multiplyTo=function(e,i){var r=this.abs(),n=e.abs(),s=r.t;for(i.t=s+n.t;--s>=0;)i[s]=0;for(s=0;s=0;)t[i]=0;for(i=0;i=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(i,e[i],t,2*i,0,1)),t.s=0,t.clamp()},t.prototype.divRemTo=function(e,i,r){var n=e.abs();if(!(n.t<=0)){var s=this.abs();if(s.t0?(n.lShiftTo(u,o),s.lShiftTo(u,r)):(n.copyTo(o),s.copyTo(r));var c=o.t,f=o[c-1];if(0!=f){var l=f*(1<1?o[c-2]>>this.F2:0),p=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(y,r)),t.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t=0;){var b=r[--v]==f?this.DM:Math.floor(r[v]*p+(r[v-1]+d)*g);if((r[v]+=o.am(0,b,r,m,0,c))0&&r.rShiftTo(u,r),h<0&&t.ZERO.subTo(r,r)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var r=N(),n=N(),s=i.convert(this),o=C(e)-1;for(s.copyTo(r);--o>=0;)if(i.sqrTo(r,n),(e&1<0)i.mulTo(n,s,r);else{var h=r;r=n,n=h}return i.revert(r)},t.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},t.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),i=Math.pow(t,e),r=H(i),n=N(),s=N(),o="";for(this.divRemTo(r,n,s);n.signum()>0;)o=(i+s.intValue()).toString(t).substr(1)+o,n.divRemTo(r,n,s);return s.intValue().toString(t)+o},t.prototype.fromRadix=function(e,i){this.fromInt(0),null==i&&(i=10);for(var r=this.chunkSize(i),n=Math.pow(i,r),s=!1,o=0,h=0,a=0;a=r&&(this.dMultiply(n),this.dAddOffset(h,0),o=0,h=0))}o>0&&(this.dMultiply(Math.pow(i,o)),this.dAddOffset(h,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,i,r){if("number"==typeof i)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),n,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(i);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var s=[],o=7&e;s.length=1+(e>>3),i.nextBytes(s),o>0?s[0]&=(1<>=this.DB;if(t.t>=this.DB;r+=this.s}else{for(r+=this.s;i>=this.DB;r+=t.s}e.s=r<0?-1:0,r>0?e[i++]=r:r<-1&&(e[i++]=this.DV+r),e.t=i,e.clamp()},t.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},t.prototype.multiplyLowerTo=function(t,e,i){var r=Math.min(this.t+t.t,e);for(i.s=0,i.t=r;r>0;)i[--r]=0;for(var n=i.t-this.t;r=0;)i[r]=0;for(r=Math.max(e-this.t,0);r0)if(0==e)i=this[0]%t;else for(var r=this.t-1;r>=0;--r)i=(e*i+this[r])%t;return i},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),r=i.getLowestSetBit();if(r<=0)return!1;var n=i.shiftRight(r);(e=e+1>>1)>x.length&&(e=x.length);for(var s=N(),o=0;o0&&(i.rShiftTo(o,i),r.rShiftTo(o,r));var h=function(){(s=i.getLowestSetBit())>0&&i.rShiftTo(s,i),(s=r.getLowestSetBit())>0&&r.rShiftTo(s,r),i.compareTo(r)>=0?(i.subTo(r,i),i.rShiftTo(1,i)):(r.subTo(i,r),r.rShiftTo(1,r)),i.signum()>0?setTimeout(h,0):(o>0&&r.lShiftTo(o,r),setTimeout((function(){e(r)}),0))};setTimeout(h,10)}},t.prototype.fromNumberAsync=function(e,i,r,s){if("number"==typeof i)if(e<2)this.fromInt(1);else{this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),n,this),this.isEven()&&this.dAddOffset(1,0);var o=this,h=function(){o.dAddOffset(2,0),o.bitLength()>e&&o.subTo(t.ONE.shiftLeft(e-1),o),o.isProbablePrime(i)?setTimeout((function(){s()}),0):setTimeout(h,0)};setTimeout(h,0)}else{var a=[],u=7&e;a.length=1+(e>>3),i.nextBytes(a),u>0?a[0]&=(1<=0?t.mod(this.m):t},t.prototype.revert=function(t){return t},t.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},t.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}(),V=function(){function t(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(e,e),e},t.prototype.revert=function(t){var e=N();return t.copyTo(e),this.reduce(e),e},t.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[i=e+this.m.t]+=this.m.am(0,r,t,e,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},t.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}(),I=function(){function t(t){this.m=t,this.r2=N(),this.q3=N(),B.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t)}return t.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=N();return t.copyTo(e),this.reduce(e),e},t.prototype.revert=function(t){return t},t.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},t.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}();function N(){return new B(null)}function P(t,e){return new B(t,e)}B.prototype.am=function(t,e,i,r,n,s){for(var o=16383&e,h=e>>14;--s>=0;){var a=16383&this[t],u=this[t++]>>14,c=h*a+u*o;n=((a=o*a+((16383&c)<<14)+i[r]+n)>>28)+(c>>14)+h*u,i[r++]=268435455&a}return n},B.prototype.DB=28,B.prototype.DM=268435455,B.prototype.DV=1<<28;B.prototype.FV=Math.pow(2,52),B.prototype.F1=24,B.prototype.F2=4;var M,q,L=[];for(M="0".charCodeAt(0),q=0;q<=9;++q)L[M++]=q;for(M="a".charCodeAt(0),q=10;q<36;++q)L[M++]=q;for(M="A".charCodeAt(0),q=10;q<36;++q)L[M++]=q;function j(t,e){var i=L[t.charCodeAt(e)];return null==i?-1:i}function H(t){var e=N();return e.fromInt(t),e}function C(t){var e,i=1;return 0!=(e=t>>>16)&&(t=e,i+=16),0!=(e=t>>8)&&(t=e,i+=8),0!=(e=t>>4)&&(t=e,i+=4),0!=(e=t>>2)&&(t=e,i+=2),0!=(e=t>>1)&&(t=e,i+=1),i}B.ZERO=H(0),B.ONE=H(1);var F=function(){function t(){this.i=0,this.j=0,this.S=[]}return t.prototype.init=function(t){var e,i,r;for(e=0;e<256;++e)this.S[e]=e;for(i=0,e=0;e<256;++e)i=i+this.S[e]+t[e%t.length]&255,r=this.S[e],this.S[e]=this.S[i],this.S[i]=r;this.i=0,this.j=0},t.prototype.next=function(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]},t}();var K,U,k=null;if(null==k){k=[],U=0;var _=void 0;if(window.crypto&&window.crypto.getRandomValues){var z=new Uint32Array(256);for(window.crypto.getRandomValues(z),_=0;_=256||U>=256)window.removeEventListener?window.removeEventListener("mousemove",Z,!1):window.detachEvent&&window.detachEvent("onmousemove",Z);else try{var e=t.x+t.y;k[U++]=255&e,this.count+=1}catch(t){}};window.addEventListener?window.addEventListener("mousemove",Z,!1):window.attachEvent&&window.attachEvent("onmousemove",Z)}function G(){if(null==K){for(K=new F;U<256;){var t=Math.floor(65536*Math.random());k[U++]=255&t}for(K.init(k),U=0;U0&&e.length>0?(this.n=P(t,16),this.e=parseInt(e,16)):console.error("Invalid RSA public key")},t.prototype.encrypt=function(t){var e=function(t,e){if(e=0&&e>0;){var n=t.charCodeAt(r--);n<128?i[--e]=n:n>127&&n<2048?(i[--e]=63&n|128,i[--e]=n>>6|192):(i[--e]=63&n|128,i[--e]=n>>6&63|128,i[--e]=n>>12|224)}i[--e]=0;for(var s=new $,o=[];e>2;){for(o[0]=0;0==o[0];)s.nextBytes(o);i[--e]=o[0]}return i[--e]=2,i[--e]=0,new B(i)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var i=this.doPublic(e);if(null==i)return null;var r=i.toString(16);return 0==(1&r.length)?r:"0"+r},t.prototype.setPrivate=function(t,e,i){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=P(t,16),this.e=parseInt(e,16),this.d=P(i,16)):console.error("Invalid RSA private key")},t.prototype.setPrivateEx=function(t,e,i,r,n,s,o,h){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=P(t,16),this.e=parseInt(e,16),this.d=P(i,16),this.p=P(r,16),this.q=P(n,16),this.dmp1=P(s,16),this.dmq1=P(o,16),this.coeff=P(h,16)):console.error("Invalid RSA private key")},t.prototype.generate=function(t,e){var i=new $,r=t>>1;this.e=parseInt(e,16);for(var n=new B(e,16);;){for(;this.p=new B(t-r,1,i),0!=this.p.subtract(B.ONE).gcd(n).compareTo(B.ONE)||!this.p.isProbablePrime(10););for(;this.q=new B(r,1,i),0!=this.q.subtract(B.ONE).gcd(n).compareTo(B.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var s=this.p;this.p=this.q,this.q=s}var o=this.p.subtract(B.ONE),h=this.q.subtract(B.ONE),a=o.multiply(h);if(0==a.gcd(n).compareTo(B.ONE)){this.n=this.p.multiply(this.q),this.d=n.modInverse(a),this.dmp1=this.d.mod(o),this.dmq1=this.d.mod(h),this.coeff=this.q.modInverse(this.p);break}}},t.prototype.decrypt=function(t){var e=P(t,16),i=this.doPrivate(e);return null==i?null:function(t,e){var i=t.toByteArray(),r=0;for(;r=i.length)return null;var n="";for(;++r191&&s<224?(n+=String.fromCharCode((31&s)<<6|63&i[r+1]),++r):(n+=String.fromCharCode((15&s)<<12|(63&i[r+1])<<6|63&i[r+2]),r+=2)}return n}(i,this.n.bitLength()+7>>3)},t.prototype.generateAsync=function(t,e,i){var r=new $,n=t>>1;this.e=parseInt(e,16);var s=new B(e,16),o=this,h=function(){var e=function(){if(o.p.compareTo(o.q)<=0){var t=o.p;o.p=o.q,o.q=t}var e=o.p.subtract(B.ONE),r=o.q.subtract(B.ONE),n=e.multiply(r);0==n.gcd(s).compareTo(B.ONE)?(o.n=o.p.multiply(o.q),o.d=s.modInverse(n),o.dmp1=o.d.mod(e),o.dmq1=o.d.mod(r),o.coeff=o.q.modInverse(o.p),setTimeout((function(){i()}),0)):setTimeout(h,0)},a=function(){o.q=N(),o.q.fromNumberAsync(n,1,r,(function(){o.q.subtract(B.ONE).gcda(s,(function(t){0==t.compareTo(B.ONE)&&o.q.isProbablePrime(10)?setTimeout(e,0):setTimeout(a,0)}))}))},u=function(){o.p=N(),o.p.fromNumberAsync(t-n,1,r,(function(){o.p.subtract(B.ONE).gcda(s,(function(t){0==t.compareTo(B.ONE)&&o.p.isProbablePrime(10)?setTimeout(a,0):setTimeout(u,0)}))}))};setTimeout(u,0)};setTimeout(h,0)},t.prototype.sign=function(t,e,i){var r=function(t,e){if(eMIT License + */;var Q={};void 0!==Q.asn1&&Q.asn1||(Q.asn1={}),Q.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e="0"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if("-"!=e.substr(0,1))e.length%2==1?e="0"+e:e.match(/^[0-7]/)||(e="00"+e);else{var i=e.substr(1).length;i%2==1?i+=1:e.match(/^[0-7]/)||(i+=2);for(var r="",n=0;n15)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+i).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return""}},Q.asn1.DERAbstractString=function(t){Q.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=stohex(this.s)},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&("string"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},X.lang.extend(Q.asn1.DERAbstractString,Q.asn1.ASN1Object),Q.asn1.DERAbstractTime=function(t){Q.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(t){return utc=t.getTime()+6e4*t.getTimezoneOffset(),new Date(utc)},this.formatDate=function(t,e,i){var r=this.zeroPadding,n=this.localDateToUTC(t),s=String(n.getFullYear());"utc"==e&&(s=s.substr(2,2));var o=s+r(String(n.getMonth()+1),2)+r(String(n.getDate()),2)+r(String(n.getHours()),2)+r(String(n.getMinutes()),2)+r(String(n.getSeconds()),2);if(!0===i){var h=n.getMilliseconds();if(0!=h){var a=r(String(h),3);o=o+"."+(a=a.replace(/[0]+$/,""))}}return o+"Z"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join("0")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=stohex(t)},this.setByDateValue=function(t,e,i,r,n,s){var o=new Date(Date.UTC(t,e-1,i,r,n,s,0));this.setByDate(o)},this.getFreshValueHex=function(){return this.hV}},X.lang.extend(Q.asn1.DERAbstractTime,Q.asn1.ASN1Object),Q.asn1.DERAbstractStructured=function(t){Q.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},X.lang.extend(Q.asn1.DERAbstractStructured,Q.asn1.ASN1Object),Q.asn1.DERBoolean=function(){Q.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV="0101ff"},X.lang.extend(Q.asn1.DERBoolean,Q.asn1.ASN1Object),Q.asn1.DERInteger=function(t){Q.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=Q.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new B(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):"number"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},X.lang.extend(Q.asn1.DERInteger,Q.asn1.ASN1Object),Q.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=Q.asn1.ASN1Util.newObject(t.obj);t.hex="00"+e.getEncodedHex()}Q.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7=65536&&s<=1114111?4:s>=2048&&s<=65535?3:s>=128&&s<=2047?2:1)%117>=114||o%117==0)&&o-h>=114&&(r.push(a),h=o);if(r.length>1){for(a=0;a>= 16\n r += 16\n }\n if ((x & 0xff) == 0) {\n x >>= 8\n r += 8\n }\n if ((x & 0xf) == 0) {\n x >>= 4\n r += 4\n }\n if ((x & 3) == 0) {\n x >>= 2\n r += 2\n }\n if ((x & 1) == 0) {\n ++r\n }\n return r\n }\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0\n while (x != 0) {\n x &= x - 1\n ++r\n }\n return r\n }\n //#endregion BIT_OPERATIONS\n\n var b64map =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\n var b64pad = \"=\"\n function hex2b64(h) {\n var i\n var c\n var ret = \"\"\n for (i = 0; i + 3 <= h.length; i += 3) {\n c = parseInt(h.substring(i, i + 3), 16)\n ret += b64map.charAt(c >> 6) + b64map.charAt(c & 63)\n }\n if (i + 1 == h.length) {\n c = parseInt(h.substring(i, i + 1), 16)\n ret += b64map.charAt(c << 2)\n } else if (i + 2 == h.length) {\n c = parseInt(h.substring(i, i + 2), 16)\n ret += b64map.charAt(c >> 2) + b64map.charAt((c & 3) << 4)\n }\n while ((ret.length & 3) > 0) {\n ret += b64pad\n }\n return ret\n }\n // convert a base64 string to hex\n function b64tohex(s) {\n var ret = \"\"\n var i\n var k = 0 // b64 state, 0-3\n var slop = 0\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break\n }\n var v = b64map.indexOf(s.charAt(i))\n if (v < 0) {\n continue\n }\n if (k == 0) {\n ret += int2char(v >> 2)\n slop = v & 3\n k = 1\n } else if (k == 1) {\n ret += int2char((slop << 2) | (v >> 4))\n slop = v & 0xf\n k = 2\n } else if (k == 2) {\n ret += int2char(slop)\n ret += int2char(v >> 2)\n slop = v & 3\n k = 3\n } else {\n ret += int2char((slop << 2) | (v >> 4))\n ret += int2char(v & 0xf)\n k = 0\n }\n }\n if (k == 1) {\n ret += int2char(slop << 2)\n }\n return ret\n }\n\n /*! *****************************************************************************\n Copyright (c) Microsoft Corporation. All rights reserved.\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\n this file except in compliance with the License. You may obtain a copy of the\n License at http://www.apache.org/licenses/LICENSE-2.0\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\n MERCHANTABLITY OR NON-INFRINGEMENT.\n See the Apache Version 2.0 License for specific language governing permissions\n and limitations under the License.\n ***************************************************************************** */\n /* global Reflect, Promise */\n\n var extendStatics = function (d, b) {\n extendStatics =\n Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array &&\n function (d, b) {\n d.__proto__ = b\n }) ||\n function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]\n }\n return extendStatics(d, b)\n }\n\n function __extends(d, b) {\n extendStatics(d, b)\n function __() {\n this.constructor = d\n }\n d.prototype =\n b === null ? Object.create(b) : ((__.prototype = b.prototype), new __())\n }\n\n // Hex JavaScript decoder\n // Copyright (c) 2008-2013 Lapo Luchini \n // Permission to use, copy, modify, and/or distribute this software for any\n // purpose with or without fee is hereby granted, provided that the above\n // copyright notice and this permission notice appear in all copies.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n /*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n var decoder\n var Hex = {\n decode: function (a) {\n var i\n if (decoder === undefined) {\n var hex = \"0123456789ABCDEF\"\n var ignore = \" \\f\\n\\r\\t\\u00A0\\u2028\\u2029\"\n decoder = {}\n for (i = 0; i < 16; ++i) {\n decoder[hex.charAt(i)] = i\n }\n hex = hex.toLowerCase()\n for (i = 10; i < 16; ++i) {\n decoder[hex.charAt(i)] = i\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder[ignore.charAt(i)] = -1\n }\n }\n var out = []\n var bits = 0\n var char_count = 0\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i)\n if (c == \"=\") {\n break\n }\n c = decoder[c]\n if (c == -1) {\n continue\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i)\n }\n bits |= c\n if (++char_count >= 2) {\n out[out.length] = bits\n bits = 0\n char_count = 0\n } else {\n bits <<= 4\n }\n }\n if (char_count) {\n throw new Error(\"Hex encoding incomplete: 4 bits missing\")\n }\n return out\n },\n }\n\n // Base64 JavaScript decoder\n // Copyright (c) 2008-2013 Lapo Luchini \n // Permission to use, copy, modify, and/or distribute this software for any\n // purpose with or without fee is hereby granted, provided that the above\n // copyright notice and this permission notice appear in all copies.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n /*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n var decoder$1\n var Base64 = {\n decode: function (a) {\n var i\n if (decoder$1 === undefined) {\n var b64 =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"\n var ignore = \"= \\f\\n\\r\\t\\u00A0\\u2028\\u2029\"\n decoder$1 = Object.create(null)\n for (i = 0; i < 64; ++i) {\n decoder$1[b64.charAt(i)] = i\n }\n for (i = 0; i < ignore.length; ++i) {\n decoder$1[ignore.charAt(i)] = -1\n }\n }\n var out = []\n var bits = 0\n var char_count = 0\n for (i = 0; i < a.length; ++i) {\n var c = a.charAt(i)\n if (c == \"=\") {\n break\n }\n c = decoder$1[c]\n if (c == -1) {\n continue\n }\n if (c === undefined) {\n throw new Error(\"Illegal character at offset \" + i)\n }\n bits |= c\n if (++char_count >= 4) {\n out[out.length] = bits >> 16\n out[out.length] = (bits >> 8) & 0xff\n out[out.length] = bits & 0xff\n bits = 0\n char_count = 0\n } else {\n bits <<= 6\n }\n }\n switch (char_count) {\n case 1:\n throw new Error(\"Base64 encoding incomplete: at least 2 bits missing\")\n case 2:\n out[out.length] = bits >> 10\n break\n case 3:\n out[out.length] = bits >> 16\n out[out.length] = (bits >> 8) & 0xff\n break\n }\n return out\n },\n re: /-----BEGIN [^-]+-----([A-Za-z0-9+\\/=\\s]+)-----END [^-]+-----|begin-base64[^\\n]+\\n([A-Za-z0-9+\\/=\\s]+)====/,\n unarmor: function (a) {\n var m = Base64.re.exec(a)\n if (m) {\n if (m[1]) {\n a = m[1]\n } else if (m[2]) {\n a = m[2]\n } else {\n throw new Error(\"RegExp out of sync\")\n }\n }\n return Base64.decode(a)\n },\n }\n\n // Big integer base-10 printing library\n // Copyright (c) 2014 Lapo Luchini \n // Permission to use, copy, modify, and/or distribute this software for any\n // purpose with or without fee is hereby granted, provided that the above\n // copyright notice and this permission notice appear in all copies.\n //\n // THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n /*jshint browser: true, strict: true, immed: true, latedef: true, undef: true, regexdash: false */\n var max = 10000000000000 // biggest integer that can still fit 2^53 when multiplied by 256\n var Int10 = /** @class */ (function () {\n function Int10(value) {\n this.buf = [+value || 0]\n }\n Int10.prototype.mulAdd = function (m, c) {\n // assert(m <= 256)\n var b = this.buf\n var l = b.length\n var i\n var t\n for (i = 0; i < l; ++i) {\n t = b[i] * m + c\n if (t < max) {\n c = 0\n } else {\n c = 0 | (t / max)\n t -= c * max\n }\n b[i] = t\n }\n if (c > 0) {\n b[i] = c\n }\n }\n Int10.prototype.sub = function (c) {\n // assert(m <= 256)\n var b = this.buf\n var l = b.length\n var i\n var t\n for (i = 0; i < l; ++i) {\n t = b[i] - c\n if (t < 0) {\n t += max\n c = 1\n } else {\n c = 0\n }\n b[i] = t\n }\n while (b[b.length - 1] === 0) {\n b.pop()\n }\n }\n Int10.prototype.toString = function (base) {\n if ((base || 10) != 10) {\n throw new Error(\"only base 10 is supported\")\n }\n var b = this.buf\n var s = b[b.length - 1].toString()\n for (var i = b.length - 2; i >= 0; --i) {\n s += (max + b[i]).toString().substring(1)\n }\n return s\n }\n Int10.prototype.valueOf = function () {\n var b = this.buf\n var v = 0\n for (var i = b.length - 1; i >= 0; --i) {\n v = v * max + b[i]\n }\n return v\n }\n Int10.prototype.simplify = function () {\n var b = this.buf\n return b.length == 1 ? b[0] : this\n }\n return Int10\n })()\n\n // ASN.1 JavaScript decoder\n var ellipsis = \"\\u2026\"\n var reTimeS = /^(\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/\n var reTimeL = /^(\\d\\d\\d\\d)(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])([01]\\d|2[0-3])(?:([0-5]\\d)(?:([0-5]\\d)(?:[.,](\\d{1,3}))?)?)?(Z|[-+](?:[0]\\d|1[0-2])([0-5]\\d)?)?$/\n function stringCut(str, len) {\n if (str.length > len) {\n str = str.substring(0, len) + ellipsis\n }\n return str\n }\n var Stream = /** @class */ (function () {\n function Stream(enc, pos) {\n this.hexDigits = \"0123456789ABCDEF\"\n if (enc instanceof Stream) {\n this.enc = enc.enc\n this.pos = enc.pos\n } else {\n // enc should be an array or a binary string\n this.enc = enc\n this.pos = pos\n }\n }\n Stream.prototype.get = function (pos) {\n if (pos === undefined) {\n pos = this.pos++\n }\n if (pos >= this.enc.length) {\n throw new Error(\n \"Requesting byte offset \" +\n pos +\n \" on a stream of length \" +\n this.enc.length\n )\n }\n return \"string\" === typeof this.enc\n ? this.enc.charCodeAt(pos)\n : this.enc[pos]\n }\n Stream.prototype.hexByte = function (b) {\n return (\n this.hexDigits.charAt((b >> 4) & 0xf) + this.hexDigits.charAt(b & 0xf)\n )\n }\n Stream.prototype.hexDump = function (start, end, raw) {\n var s = \"\"\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i))\n if (raw !== true) {\n switch (i & 0xf) {\n case 0x7:\n s += \" \"\n break\n case 0xf:\n s += \"\\n\"\n break\n default:\n s += \" \"\n }\n }\n }\n return s\n }\n Stream.prototype.isASCII = function (start, end) {\n for (var i = start; i < end; ++i) {\n var c = this.get(i)\n if (c < 32 || c > 176) {\n return false\n }\n }\n return true\n }\n Stream.prototype.parseStringISO = function (start, end) {\n var s = \"\"\n for (var i = start; i < end; ++i) {\n s += String.fromCharCode(this.get(i))\n }\n return s\n }\n Stream.prototype.parseStringUTF = function (start, end) {\n var s = \"\"\n for (var i = start; i < end;) {\n var c = this.get(i++)\n if (c < 128) {\n s += String.fromCharCode(c)\n } else if (c > 191 && c < 224) {\n s += String.fromCharCode(((c & 0x1f) << 6) | (this.get(i++) & 0x3f))\n } else {\n s += String.fromCharCode(\n ((c & 0x0f) << 12) |\n ((this.get(i++) & 0x3f) << 6) |\n (this.get(i++) & 0x3f)\n )\n }\n }\n return s\n }\n Stream.prototype.parseStringBMP = function (start, end) {\n var str = \"\"\n var hi\n var lo\n for (var i = start; i < end;) {\n hi = this.get(i++)\n lo = this.get(i++)\n str += String.fromCharCode((hi << 8) | lo)\n }\n return str\n }\n Stream.prototype.parseTime = function (start, end, shortYear) {\n var s = this.parseStringISO(start, end)\n var m = (shortYear ? reTimeS : reTimeL).exec(s)\n if (!m) {\n return \"Unrecognized time: \" + s\n }\n if (shortYear) {\n // to avoid querying the timer, use the fixed range [1970, 2069]\n // it will conform with ITU X.400 [-10, +40] sliding window until 2030\n m[1] = +m[1]\n m[1] += +m[1] < 70 ? 2000 : 1900\n }\n s = m[1] + \"-\" + m[2] + \"-\" + m[3] + \" \" + m[4]\n if (m[5]) {\n s += \":\" + m[5]\n if (m[6]) {\n s += \":\" + m[6]\n if (m[7]) {\n s += \".\" + m[7]\n }\n }\n }\n if (m[8]) {\n s += \" UTC\"\n if (m[8] != \"Z\") {\n s += m[8]\n if (m[9]) {\n s += \":\" + m[9]\n }\n }\n }\n return s\n }\n Stream.prototype.parseInteger = function (start, end) {\n var v = this.get(start)\n var neg = v > 127\n var pad = neg ? 255 : 0\n var len\n var s = \"\"\n // skip unuseful bits (not allowed in DER)\n while (v == pad && ++start < end) {\n v = this.get(start)\n }\n len = end - start\n if (len === 0) {\n return neg ? -1 : 0\n }\n // show bit length of huge integers\n if (len > 4) {\n s = v\n len <<= 3\n while (((+s ^ pad) & 0x80) == 0) {\n s = +s << 1\n --len\n }\n s = \"(\" + len + \" bit)\\n\"\n }\n // decode the integer\n if (neg) {\n v = v - 256\n }\n var n = new Int10(v)\n for (var i = start + 1; i < end; ++i) {\n n.mulAdd(256, this.get(i))\n }\n return s + n.toString()\n }\n Stream.prototype.parseBitString = function (start, end, maxLength) {\n var unusedBit = this.get(start)\n var lenBit = ((end - start - 1) << 3) - unusedBit\n var intro = \"(\" + lenBit + \" bit)\\n\"\n var s = \"\"\n for (var i = start + 1; i < end; ++i) {\n var b = this.get(i)\n var skip = i == end - 1 ? unusedBit : 0\n for (var j = 7; j >= skip; --j) {\n s += (b >> j) & 1 ? \"1\" : \"0\"\n }\n if (s.length > maxLength) {\n return intro + stringCut(s, maxLength)\n }\n }\n return intro + s\n }\n Stream.prototype.parseOctetString = function (start, end, maxLength) {\n if (this.isASCII(start, end)) {\n return stringCut(this.parseStringISO(start, end), maxLength)\n }\n var len = end - start\n var s = \"(\" + len + \" byte)\\n\"\n maxLength /= 2 // we work in bytes\n if (len > maxLength) {\n end = start + maxLength\n }\n for (var i = start; i < end; ++i) {\n s += this.hexByte(this.get(i))\n }\n if (len > maxLength) {\n s += ellipsis\n }\n return s\n }\n Stream.prototype.parseOID = function (start, end, maxLength) {\n var s = \"\"\n var n = new Int10()\n var bits = 0\n for (var i = start; i < end; ++i) {\n var v = this.get(i)\n n.mulAdd(128, v & 0x7f)\n bits += 7\n if (!(v & 0x80)) {\n // finished\n if (s === \"\") {\n n = n.simplify()\n if (n instanceof Int10) {\n n.sub(80)\n s = \"2.\" + n.toString()\n } else {\n var m = n < 80 ? (n < 40 ? 0 : 1) : 2\n s = m + \".\" + (n - m * 40)\n }\n } else {\n s += \".\" + n.toString()\n }\n if (s.length > maxLength) {\n return stringCut(s, maxLength)\n }\n n = new Int10()\n bits = 0\n }\n }\n if (bits > 0) {\n s += \".incomplete\"\n }\n return s\n }\n return Stream\n })()\n var ASN1 = /** @class */ (function () {\n function ASN1(stream, header, length, tag, sub) {\n if (!(tag instanceof ASN1Tag)) {\n throw new Error(\"Invalid tag value.\")\n }\n this.stream = stream\n this.header = header\n this.length = length\n this.tag = tag\n this.sub = sub\n }\n ASN1.prototype.typeName = function () {\n switch (this.tag.tagClass) {\n case 0: // universal\n switch (this.tag.tagNumber) {\n case 0x00:\n return \"EOC\"\n case 0x01:\n return \"BOOLEAN\"\n case 0x02:\n return \"INTEGER\"\n case 0x03:\n return \"BIT_STRING\"\n case 0x04:\n return \"OCTET_STRING\"\n case 0x05:\n return \"NULL\"\n case 0x06:\n return \"OBJECT_IDENTIFIER\"\n case 0x07:\n return \"ObjectDescriptor\"\n case 0x08:\n return \"EXTERNAL\"\n case 0x09:\n return \"REAL\"\n case 0x0a:\n return \"ENUMERATED\"\n case 0x0b:\n return \"EMBEDDED_PDV\"\n case 0x0c:\n return \"UTF8String\"\n case 0x10:\n return \"SEQUENCE\"\n case 0x11:\n return \"SET\"\n case 0x12:\n return \"NumericString\"\n case 0x13:\n return \"PrintableString\" // ASCII subset\n case 0x14:\n return \"TeletexString\" // aka T61String\n case 0x15:\n return \"VideotexString\"\n case 0x16:\n return \"IA5String\" // ASCII\n case 0x17:\n return \"UTCTime\"\n case 0x18:\n return \"GeneralizedTime\"\n case 0x19:\n return \"GraphicString\"\n case 0x1a:\n return \"VisibleString\" // ASCII subset\n case 0x1b:\n return \"GeneralString\"\n case 0x1c:\n return \"UniversalString\"\n case 0x1e:\n return \"BMPString\"\n }\n return \"Universal_\" + this.tag.tagNumber.toString()\n case 1:\n return \"Application_\" + this.tag.tagNumber.toString()\n case 2:\n return \"[\" + this.tag.tagNumber.toString() + \"]\" // Context\n case 3:\n return \"Private_\" + this.tag.tagNumber.toString()\n }\n }\n ASN1.prototype.content = function (maxLength) {\n if (this.tag === undefined) {\n return null\n }\n if (maxLength === undefined) {\n maxLength = Infinity\n }\n var content = this.posContent()\n var len = Math.abs(this.length)\n if (!this.tag.isUniversal()) {\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\"\n }\n return this.stream.parseOctetString(content, content + len, maxLength)\n }\n switch (this.tag.tagNumber) {\n case 0x01: // BOOLEAN\n return this.stream.get(content) === 0 ? \"false\" : \"true\"\n case 0x02: // INTEGER\n return this.stream.parseInteger(content, content + len)\n case 0x03: // BIT_STRING\n return this.sub\n ? \"(\" + this.sub.length + \" elem)\"\n : this.stream.parseBitString(content, content + len, maxLength)\n case 0x04: // OCTET_STRING\n return this.sub\n ? \"(\" + this.sub.length + \" elem)\"\n : this.stream.parseOctetString(content, content + len, maxLength)\n // case 0x05: // NULL\n case 0x06: // OBJECT_IDENTIFIER\n return this.stream.parseOID(content, content + len, maxLength)\n // case 0x07: // ObjectDescriptor\n // case 0x08: // EXTERNAL\n // case 0x09: // REAL\n // case 0x0A: // ENUMERATED\n // case 0x0B: // EMBEDDED_PDV\n case 0x10: // SEQUENCE\n case 0x11: // SET\n if (this.sub !== null) {\n return \"(\" + this.sub.length + \" elem)\"\n } else {\n return \"(no elem)\"\n }\n case 0x0c: // UTF8String\n return stringCut(\n this.stream.parseStringUTF(content, content + len),\n maxLength\n )\n case 0x12: // NumericString\n case 0x13: // PrintableString\n case 0x14: // TeletexString\n case 0x15: // VideotexString\n case 0x16: // IA5String\n // case 0x19: // GraphicString\n case 0x1a: // VisibleString\n // case 0x1B: // GeneralString\n // case 0x1C: // UniversalString\n return stringCut(\n this.stream.parseStringISO(content, content + len),\n maxLength\n )\n case 0x1e: // BMPString\n return stringCut(\n this.stream.parseStringBMP(content, content + len),\n maxLength\n )\n case 0x17: // UTCTime\n case 0x18: // GeneralizedTime\n return this.stream.parseTime(\n content,\n content + len,\n this.tag.tagNumber == 0x17\n )\n }\n return null\n }\n ASN1.prototype.toString = function () {\n return (\n this.typeName() +\n \"@\" +\n this.stream.pos +\n \"[header:\" +\n this.header +\n \",length:\" +\n this.length +\n \",sub:\" +\n (this.sub === null ? \"null\" : this.sub.length) +\n \"]\"\n )\n }\n ASN1.prototype.toPrettyString = function (indent) {\n if (indent === undefined) {\n indent = \"\"\n }\n var s = indent + this.typeName() + \" @\" + this.stream.pos\n if (this.length >= 0) {\n s += \"+\"\n }\n s += this.length\n if (this.tag.tagConstructed) {\n s += \" (constructed)\"\n } else if (\n this.tag.isUniversal() &&\n (this.tag.tagNumber == 0x03 || this.tag.tagNumber == 0x04) &&\n this.sub !== null\n ) {\n s += \" (encapsulates)\"\n }\n s += \"\\n\"\n if (this.sub !== null) {\n indent += \" \"\n for (var i = 0, max = this.sub.length; i < max; ++i) {\n s += this.sub[i].toPrettyString(indent)\n }\n }\n return s\n }\n ASN1.prototype.posStart = function () {\n return this.stream.pos\n }\n ASN1.prototype.posContent = function () {\n return this.stream.pos + this.header\n }\n ASN1.prototype.posEnd = function () {\n return this.stream.pos + this.header + Math.abs(this.length)\n }\n ASN1.prototype.toHexString = function () {\n return this.stream.hexDump(this.posStart(), this.posEnd(), true)\n }\n ASN1.decodeLength = function (stream) {\n var buf = stream.get()\n var len = buf & 0x7f\n if (len == buf) {\n return len\n }\n // no reason to use Int10, as it would be a huge buffer anyways\n if (len > 6) {\n throw new Error(\n \"Length over 48 bits not supported at position \" + (stream.pos - 1)\n )\n }\n if (len === 0) {\n return null\n } // undefined\n buf = 0\n for (var i = 0; i < len; ++i) {\n buf = buf * 256 + stream.get()\n }\n return buf\n }\n /**\n * Retrieve the hexadecimal value (as a string) of the current ASN.1 element\n * @returns {string}\n * @public\n */\n ASN1.prototype.getHexStringValue = function () {\n var hexString = this.toHexString()\n var offset = this.header * 2\n var length = this.length * 2\n return hexString.substr(offset, length)\n }\n ASN1.decode = function (str) {\n var stream\n if (!(str instanceof Stream)) {\n stream = new Stream(str, 0)\n } else {\n stream = str\n }\n var streamStart = new Stream(stream)\n var tag = new ASN1Tag(stream)\n var len = ASN1.decodeLength(stream)\n var start = stream.pos\n var header = start - streamStart.pos\n var sub = null\n var getSub = function () {\n var ret = []\n if (len !== null) {\n // definite length\n var end = start + len\n while (stream.pos < end) {\n ret[ret.length] = ASN1.decode(stream)\n }\n if (stream.pos != end) {\n throw new Error(\n \"Content size is not correct for container starting at offset \" +\n start\n )\n }\n } else {\n // undefined length\n try {\n for (; ;) {\n var s = ASN1.decode(stream)\n if (s.tag.isEOC()) {\n break\n }\n ret[ret.length] = s\n }\n len = start - stream.pos // undefined lengths are represented as negative values\n } catch (e) {\n throw new Error(\n \"Exception while decoding undefined length content: \" + e\n )\n }\n }\n return ret\n }\n if (tag.tagConstructed) {\n // must have valid content\n sub = getSub()\n } else if (\n tag.isUniversal() &&\n (tag.tagNumber == 0x03 || tag.tagNumber == 0x04)\n ) {\n // sometimes BitString and OctetString are used to encapsulate ASN.1\n try {\n if (tag.tagNumber == 0x03) {\n if (stream.get() != 0) {\n throw new Error(\n \"BIT STRINGs with unused bits cannot encapsulate.\"\n )\n }\n }\n sub = getSub()\n for (var i = 0; i < sub.length; ++i) {\n if (sub[i].tag.isEOC()) {\n throw new Error(\"EOC is not supposed to be actual content.\")\n }\n }\n } catch (e) {\n // but silently ignore when they don't\n sub = null\n }\n }\n if (sub === null) {\n if (len === null) {\n throw new Error(\n \"We can't skip over an invalid tag with undefined length at offset \" +\n start\n )\n }\n stream.pos = start + Math.abs(len)\n }\n return new ASN1(streamStart, header, len, tag, sub)\n }\n return ASN1\n })()\n var ASN1Tag = /** @class */ (function () {\n function ASN1Tag(stream) {\n var buf = stream.get()\n this.tagClass = buf >> 6\n this.tagConstructed = (buf & 0x20) !== 0\n this.tagNumber = buf & 0x1f\n if (this.tagNumber == 0x1f) {\n // long tag\n var n = new Int10()\n do {\n buf = stream.get()\n n.mulAdd(128, buf & 0x7f)\n } while (buf & 0x80)\n this.tagNumber = n.simplify()\n }\n }\n ASN1Tag.prototype.isUniversal = function () {\n return this.tagClass === 0x00\n }\n ASN1Tag.prototype.isEOC = function () {\n return this.tagClass === 0x00 && this.tagNumber === 0x00\n }\n return ASN1Tag\n })()\n\n // Copyright (c) 2005 Tom Wu\n // Bits per digit\n var dbits\n // JavaScript engine analysis\n var canary = 0xdeadbeefcafe\n var j_lm = (canary & 0xffffff) == 0xefcafe\n //#region\n var lowprimes = [\n 2,\n 3,\n 5,\n 7,\n 11,\n 13,\n 17,\n 19,\n 23,\n 29,\n 31,\n 37,\n 41,\n 43,\n 47,\n 53,\n 59,\n 61,\n 67,\n 71,\n 73,\n 79,\n 83,\n 89,\n 97,\n 101,\n 103,\n 107,\n 109,\n 113,\n 127,\n 131,\n 137,\n 139,\n 149,\n 151,\n 157,\n 163,\n 167,\n 173,\n 179,\n 181,\n 191,\n 193,\n 197,\n 199,\n 211,\n 223,\n 227,\n 229,\n 233,\n 239,\n 241,\n 251,\n 257,\n 263,\n 269,\n 271,\n 277,\n 281,\n 283,\n 293,\n 307,\n 311,\n 313,\n 317,\n 331,\n 337,\n 347,\n 349,\n 353,\n 359,\n 367,\n 373,\n 379,\n 383,\n 389,\n 397,\n 401,\n 409,\n 419,\n 421,\n 431,\n 433,\n 439,\n 443,\n 449,\n 457,\n 461,\n 463,\n 467,\n 479,\n 487,\n 491,\n 499,\n 503,\n 509,\n 521,\n 523,\n 541,\n 547,\n 557,\n 563,\n 569,\n 571,\n 577,\n 587,\n 593,\n 599,\n 601,\n 607,\n 613,\n 617,\n 619,\n 631,\n 641,\n 643,\n 647,\n 653,\n 659,\n 661,\n 673,\n 677,\n 683,\n 691,\n 701,\n 709,\n 719,\n 727,\n 733,\n 739,\n 743,\n 751,\n 757,\n 761,\n 769,\n 773,\n 787,\n 797,\n 809,\n 811,\n 821,\n 823,\n 827,\n 829,\n 839,\n 853,\n 857,\n 859,\n 863,\n 877,\n 881,\n 883,\n 887,\n 907,\n 911,\n 919,\n 929,\n 937,\n 941,\n 947,\n 953,\n 967,\n 971,\n 977,\n 983,\n 991,\n 997,\n ]\n var lplim = (1 << 26) / lowprimes[lowprimes.length - 1]\n //#endregion\n // (public) Constructor\n var BigInteger = /** @class */ (function () {\n function BigInteger(a, b, c) {\n if (a != null) {\n if (\"number\" == typeof a) {\n this.fromNumber(a, b, c)\n } else if (b == null && \"string\" != typeof a) {\n this.fromString(a, 256)\n } else {\n this.fromString(a, b)\n }\n }\n }\n //#region PUBLIC\n // BigInteger.prototype.toString = bnToString;\n // (public) return string representation in given radix\n BigInteger.prototype.toString = function (b) {\n if (this.s < 0) {\n return \"-\" + this.negate().toString(b)\n }\n var k\n if (b == 16) {\n k = 4\n } else if (b == 8) {\n k = 3\n } else if (b == 2) {\n k = 1\n } else if (b == 32) {\n k = 5\n } else if (b == 4) {\n k = 2\n } else {\n return this.toRadix(b)\n }\n var km = (1 << k) - 1\n var d\n var m = false\n var r = \"\"\n var i = this.t\n var p = this.DB - ((i * this.DB) % k)\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true\n r = int2char(d)\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p)\n d |= this[--i] >> (p += this.DB - k)\n } else {\n d = (this[i] >> (p -= k)) & km\n if (p <= 0) {\n p += this.DB\n --i\n }\n }\n if (d > 0) {\n m = true\n }\n if (m) {\n r += int2char(d)\n }\n }\n }\n return m ? r : \"0\"\n }\n // BigInteger.prototype.negate = bnNegate;\n // (public) -this\n BigInteger.prototype.negate = function () {\n var r = nbi()\n BigInteger.ZERO.subTo(this, r)\n return r\n }\n // BigInteger.prototype.abs = bnAbs;\n // (public) |this|\n BigInteger.prototype.abs = function () {\n return this.s < 0 ? this.negate() : this\n }\n // BigInteger.prototype.compareTo = bnCompareTo;\n // (public) return + if this > a, - if this < a, 0 if equal\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s\n if (r != 0) {\n return r\n }\n var i = this.t\n r = i - a.t\n if (r != 0) {\n return this.s < 0 ? -r : r\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r\n }\n }\n return 0\n }\n // BigInteger.prototype.bitLength = bnBitLength;\n // (public) return the number of bits in \"this\"\n BigInteger.prototype.bitLength = function () {\n if (this.t <= 0) {\n return 0\n }\n return (\n this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ (this.s & this.DM))\n )\n }\n // BigInteger.prototype.mod = bnMod;\n // (public) this mod a\n BigInteger.prototype.mod = function (a) {\n var r = nbi()\n this.abs().divRemTo(a, null, r)\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r)\n }\n return r\n }\n // BigInteger.prototype.modPowInt = bnModPowInt;\n // (public) this^e % m, 0 <= e < 2^32\n BigInteger.prototype.modPowInt = function (e, m) {\n var z\n if (e < 256 || m.isEven()) {\n z = new Classic(m)\n } else {\n z = new Montgomery(m)\n }\n return this.exp(e, z)\n }\n // BigInteger.prototype.clone = bnClone;\n // (public)\n BigInteger.prototype.clone = function () {\n var r = nbi()\n this.copyTo(r)\n return r\n }\n // BigInteger.prototype.intValue = bnIntValue;\n // (public) return value as integer\n BigInteger.prototype.intValue = function () {\n if (this.s < 0) {\n if (this.t == 1) {\n return this[0] - this.DV\n } else if (this.t == 0) {\n return -1\n }\n } else if (this.t == 1) {\n return this[0]\n } else if (this.t == 0) {\n return 0\n }\n // assumes 16 < DB < 32\n return ((this[1] & ((1 << (32 - this.DB)) - 1)) << this.DB) | this[0]\n }\n // BigInteger.prototype.byteValue = bnByteValue;\n // (public) return value as byte\n BigInteger.prototype.byteValue = function () {\n return this.t == 0 ? this.s : (this[0] << 24) >> 24\n }\n // BigInteger.prototype.shortValue = bnShortValue;\n // (public) return value as short (assumes DB>=16)\n BigInteger.prototype.shortValue = function () {\n return this.t == 0 ? this.s : (this[0] << 16) >> 16\n }\n // BigInteger.prototype.signum = bnSigNum;\n // (public) 0 if this == 0, 1 if this > 0\n BigInteger.prototype.signum = function () {\n if (this.s < 0) {\n return -1\n } else if (this.t <= 0 || (this.t == 1 && this[0] <= 0)) {\n return 0\n } else {\n return 1\n }\n }\n // BigInteger.prototype.toByteArray = bnToByteArray;\n // (public) convert to bigendian byte array\n BigInteger.prototype.toByteArray = function () {\n var i = this.t\n var r = []\n r[0] = this.s\n var p = this.DB - ((i * this.DB) % 8)\n var d\n var k = 0\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) != (this.s & this.DM) >> p) {\n r[k++] = d | (this.s << (this.DB - p))\n }\n while (i >= 0) {\n if (p < 8) {\n d = (this[i] & ((1 << p) - 1)) << (8 - p)\n d |= this[--i] >> (p += this.DB - 8)\n } else {\n d = (this[i] >> (p -= 8)) & 0xff\n if (p <= 0) {\n p += this.DB\n --i\n }\n }\n if ((d & 0x80) != 0) {\n d |= -256\n }\n if (k == 0 && (this.s & 0x80) != (d & 0x80)) {\n ++k\n }\n if (k > 0 || d != this.s) {\n r[k++] = d\n }\n }\n }\n return r\n }\n // BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.equals = function (a) {\n return this.compareTo(a) == 0\n }\n // BigInteger.prototype.min = bnMin;\n BigInteger.prototype.min = function (a) {\n return this.compareTo(a) < 0 ? this : a\n }\n // BigInteger.prototype.max = bnMax;\n BigInteger.prototype.max = function (a) {\n return this.compareTo(a) > 0 ? this : a\n }\n // BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.and = function (a) {\n var r = nbi()\n this.bitwiseTo(a, op_and, r)\n return r\n }\n // BigInteger.prototype.or = bnOr;\n BigInteger.prototype.or = function (a) {\n var r = nbi()\n this.bitwiseTo(a, op_or, r)\n return r\n }\n // BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.xor = function (a) {\n var r = nbi()\n this.bitwiseTo(a, op_xor, r)\n return r\n }\n // BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.andNot = function (a) {\n var r = nbi()\n this.bitwiseTo(a, op_andnot, r)\n return r\n }\n // BigInteger.prototype.not = bnNot;\n // (public) ~this\n BigInteger.prototype.not = function () {\n var r = nbi()\n for (var i = 0; i < this.t; ++i) {\n r[i] = this.DM & ~this[i]\n }\n r.t = this.t\n r.s = ~this.s\n return r\n }\n // BigInteger.prototype.shiftLeft = bnShiftLeft;\n // (public) this << n\n BigInteger.prototype.shiftLeft = function (n) {\n var r = nbi()\n if (n < 0) {\n this.rShiftTo(-n, r)\n } else {\n this.lShiftTo(n, r)\n }\n return r\n }\n // BigInteger.prototype.shiftRight = bnShiftRight;\n // (public) this >> n\n BigInteger.prototype.shiftRight = function (n) {\n var r = nbi()\n if (n < 0) {\n this.lShiftTo(-n, r)\n } else {\n this.rShiftTo(n, r)\n }\n return r\n }\n // BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n // (public) returns index of lowest 1-bit (or -1 if none)\n BigInteger.prototype.getLowestSetBit = function () {\n for (var i = 0; i < this.t; ++i) {\n if (this[i] != 0) {\n return i * this.DB + lbit(this[i])\n }\n }\n if (this.s < 0) {\n return this.t * this.DB\n }\n return -1\n }\n // BigInteger.prototype.bitCount = bnBitCount;\n // (public) return number of set bits\n BigInteger.prototype.bitCount = function () {\n var r = 0\n var x = this.s & this.DM\n for (var i = 0; i < this.t; ++i) {\n r += cbit(this[i] ^ x)\n }\n return r\n }\n // BigInteger.prototype.testBit = bnTestBit;\n // (public) true iff nth bit is set\n BigInteger.prototype.testBit = function (n) {\n var j = Math.floor(n / this.DB)\n if (j >= this.t) {\n return this.s != 0\n }\n return (this[j] & (1 << n % this.DB)) != 0\n }\n // BigInteger.prototype.setBit = bnSetBit;\n // (public) this | (1< 1) {\n var g2 = nbi()\n z.sqrTo(g[1], g2)\n while (n <= km) {\n g[n] = nbi()\n z.mulTo(g2, g[n - 2], g[n])\n n += 2\n }\n }\n var j = e.t - 1\n var w\n var is1 = true\n var r2 = nbi()\n var t\n i = nbits(e[j]) - 1\n while (j >= 0) {\n if (i >= k1) {\n w = (e[j] >> (i - k1)) & km\n } else {\n w = (e[j] & ((1 << (i + 1)) - 1)) << (k1 - i)\n if (j > 0) {\n w |= e[j - 1] >> (this.DB + i - k1)\n }\n }\n n = k\n while ((w & 1) == 0) {\n w >>= 1\n --n\n }\n if ((i -= n) < 0) {\n i += this.DB\n --j\n }\n if (is1) {\n // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r)\n is1 = false\n } else {\n while (n > 1) {\n z.sqrTo(r, r2)\n z.sqrTo(r2, r)\n n -= 2\n }\n if (n > 0) {\n z.sqrTo(r, r2)\n } else {\n t = r\n r = r2\n r2 = t\n }\n z.mulTo(r2, g[w], r)\n }\n while (j >= 0 && (e[j] & (1 << i)) == 0) {\n z.sqrTo(r, r2)\n t = r\n r = r2\n r2 = t\n if (--i < 0) {\n i = this.DB - 1\n --j\n }\n }\n }\n return z.revert(r)\n }\n // BigInteger.prototype.modInverse = bnModInverse;\n // (public) 1/this % m (HAC 14.61)\n BigInteger.prototype.modInverse = function (m) {\n var ac = m.isEven()\n if ((this.isEven() && ac) || m.signum() == 0) {\n return BigInteger.ZERO\n }\n var u = m.clone()\n var v = this.clone()\n var a = nbv(1)\n var b = nbv(0)\n var c = nbv(0)\n var d = nbv(1)\n while (u.signum() != 0) {\n while (u.isEven()) {\n u.rShiftTo(1, u)\n if (ac) {\n if (!a.isEven() || !b.isEven()) {\n a.addTo(this, a)\n b.subTo(m, b)\n }\n a.rShiftTo(1, a)\n } else if (!b.isEven()) {\n b.subTo(m, b)\n }\n b.rShiftTo(1, b)\n }\n while (v.isEven()) {\n v.rShiftTo(1, v)\n if (ac) {\n if (!c.isEven() || !d.isEven()) {\n c.addTo(this, c)\n d.subTo(m, d)\n }\n c.rShiftTo(1, c)\n } else if (!d.isEven()) {\n d.subTo(m, d)\n }\n d.rShiftTo(1, d)\n }\n if (u.compareTo(v) >= 0) {\n u.subTo(v, u)\n if (ac) {\n a.subTo(c, a)\n }\n b.subTo(d, b)\n } else {\n v.subTo(u, v)\n if (ac) {\n c.subTo(a, c)\n }\n d.subTo(b, d)\n }\n }\n if (v.compareTo(BigInteger.ONE) != 0) {\n return BigInteger.ZERO\n }\n if (d.compareTo(m) >= 0) {\n return d.subtract(m)\n }\n if (d.signum() < 0) {\n d.addTo(m, d)\n } else {\n return d\n }\n if (d.signum() < 0) {\n return d.add(m)\n } else {\n return d\n }\n }\n // BigInteger.prototype.pow = bnPow;\n // (public) this^e\n BigInteger.prototype.pow = function (e) {\n return this.exp(e, new NullExp())\n }\n // BigInteger.prototype.gcd = bnGCD;\n // (public) gcd(this,a) (HAC 14.54)\n BigInteger.prototype.gcd = function (a) {\n var x = this.s < 0 ? this.negate() : this.clone()\n var y = a.s < 0 ? a.negate() : a.clone()\n if (x.compareTo(y) < 0) {\n var t = x\n x = y\n y = t\n }\n var i = x.getLowestSetBit()\n var g = y.getLowestSetBit()\n if (g < 0) {\n return x\n }\n if (i < g) {\n g = i\n }\n if (g > 0) {\n x.rShiftTo(g, x)\n y.rShiftTo(g, y)\n }\n while (x.signum() > 0) {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x)\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y)\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x)\n x.rShiftTo(1, x)\n } else {\n y.subTo(x, y)\n y.rShiftTo(1, y)\n }\n }\n if (g > 0) {\n y.lShiftTo(g, y)\n }\n return y\n }\n // BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n // (public) test primality with certainty >= 1-.5^t\n BigInteger.prototype.isProbablePrime = function (t) {\n var i\n var x = this.abs()\n if (x.t == 1 && x[0] <= lowprimes[lowprimes.length - 1]) {\n for (i = 0; i < lowprimes.length; ++i) {\n if (x[0] == lowprimes[i]) {\n return true\n }\n }\n return false\n }\n if (x.isEven()) {\n return false\n }\n i = 1\n while (i < lowprimes.length) {\n var m = lowprimes[i]\n var j = i + 1\n while (j < lowprimes.length && m < lplim) {\n m *= lowprimes[j++]\n }\n m = x.modInt(m)\n while (i < j) {\n if (m % lowprimes[i++] == 0) {\n return false\n }\n }\n }\n return x.millerRabin(t)\n }\n //#endregion PUBLIC\n //#region PROTECTED\n // BigInteger.prototype.copyTo = bnpCopyTo;\n // (protected) copy this to r\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i]\n }\n r.t = this.t\n r.s = this.s\n }\n // BigInteger.prototype.fromInt = bnpFromInt;\n // (protected) set from integer value x, -DV <= x < DV\n BigInteger.prototype.fromInt = function (x) {\n this.t = 1\n this.s = x < 0 ? -1 : 0\n if (x > 0) {\n this[0] = x\n } else if (x < -1) {\n this[0] = x + this.DV\n } else {\n this.t = 0\n }\n }\n // BigInteger.prototype.fromString = bnpFromString;\n // (protected) set from string and radix\n BigInteger.prototype.fromString = function (s, b) {\n var k\n if (b == 16) {\n k = 4\n } else if (b == 8) {\n k = 3\n } else if (b == 256) {\n k = 8\n /* byte array */\n } else if (b == 2) {\n k = 1\n } else if (b == 32) {\n k = 5\n } else if (b == 4) {\n k = 2\n } else {\n this.fromRadix(s, b)\n return\n }\n this.t = 0\n this.s = 0\n var i = s.length\n var mi = false\n var sh = 0\n while (--i >= 0) {\n var x = k == 8 ? +s[i] & 0xff : intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true\n }\n continue\n }\n mi = false\n if (sh == 0) {\n this[this.t++] = x\n } else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh\n this[this.t++] = x >> (this.DB - sh)\n } else {\n this[this.t - 1] |= x << sh\n }\n sh += k\n if (sh >= this.DB) {\n sh -= this.DB\n }\n }\n if (k == 8 && (+s[0] & 0x80) != 0) {\n this.s = -1\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh\n }\n }\n this.clamp()\n if (mi) {\n BigInteger.ZERO.subTo(this, this)\n }\n }\n // BigInteger.prototype.clamp = bnpClamp;\n // (protected) clamp off excess high words\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t\n }\n }\n // BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n // (protected) r = this << n*DB\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i]\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0\n }\n r.t = this.t + n\n r.s = this.s\n }\n // BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n // (protected) r = this >> n*DB\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i]\n }\n r.t = Math.max(this.t - n, 0)\n r.s = this.s\n }\n // BigInteger.prototype.lShiftTo = bnpLShiftTo;\n // (protected) r = this << n\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB\n var cbs = this.DB - bs\n var bm = (1 << cbs) - 1\n var ds = Math.floor(n / this.DB)\n var c = (this.s << bs) & this.DM\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c\n c = (this[i] & bm) << bs\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0\n }\n r[ds] = c\n r.t = this.t + ds + 1\n r.s = this.s\n r.clamp()\n }\n // BigInteger.prototype.rShiftTo = bnpRShiftTo;\n // (protected) r = this >> n\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s\n var ds = Math.floor(n / this.DB)\n if (ds >= this.t) {\n r.t = 0\n return\n }\n var bs = n % this.DB\n var cbs = this.DB - bs\n var bm = (1 << bs) - 1\n r[0] = this[ds] >> bs\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs\n r[i - ds] = this[i] >> bs\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs\n }\n r.t = this.t - ds\n r.clamp()\n }\n // BigInteger.prototype.subTo = bnpSubTo;\n // (protected) r = this - a\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0\n var c = 0\n var m = Math.min(a.t, this.t)\n while (i < m) {\n c += this[i] - a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n if (a.t < this.t) {\n c -= a.s\n while (i < this.t) {\n c += this[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c += this.s\n } else {\n c += this.s\n while (i < a.t) {\n c -= a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c -= a.s\n }\n r.s = c < 0 ? -1 : 0\n if (c < -1) {\n r[i++] = this.DV + c\n } else if (c > 0) {\n r[i++] = c\n }\n r.t = i\n r.clamp()\n }\n // BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs()\n var y = a.abs()\n var i = x.t\n r.t = i + y.t\n while (--i >= 0) {\n r[i] = 0\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t)\n }\n r.s = 0\n r.clamp()\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r)\n }\n }\n // BigInteger.prototype.squareTo = bnpSquareTo;\n // (protected) r = this^2, r != this (HAC 14.16)\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs()\n var i = (r.t = 2 * x.t)\n while (--i >= 0) {\n r[i] = 0\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1)\n if (\n (r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >=\n x.DV\n ) {\n r[i + x.t] -= x.DV\n r[i + x.t + 1] = 1\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1)\n }\n r.s = 0\n r.clamp()\n }\n // BigInteger.prototype.divRemTo = bnpDivRemTo;\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs()\n if (pm.t <= 0) {\n return\n }\n var pt = this.abs()\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromInt(0)\n }\n if (r != null) {\n this.copyTo(r)\n }\n return\n }\n if (r == null) {\n r = nbi()\n }\n var y = nbi()\n var ts = this.s\n var ms = m.s\n var nsh = this.DB - nbits(pm[pm.t - 1]) // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y)\n pt.lShiftTo(nsh, r)\n } else {\n pm.copyTo(y)\n pt.copyTo(r)\n }\n var ys = y.t\n var y0 = y[ys - 1]\n if (y0 == 0) {\n return\n }\n var yt = y0 * (1 << this.F1) + (ys > 1 ? y[ys - 2] >> this.F2 : 0)\n var d1 = this.FV / yt\n var d2 = (1 << this.F1) / yt\n var e = 1 << this.F2\n var i = r.t\n var j = i - ys\n var t = q == null ? nbi() : q\n y.dlShiftTo(j, t)\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1\n r.subTo(t, r)\n }\n BigInteger.ONE.dlShiftTo(ys, t)\n t.subTo(y, y) // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd =\n r[--i] == y0 ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2)\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) {\n // Try it out\n y.dlShiftTo(j, t)\n r.subTo(t, r)\n while (r[i] < --qd) {\n r.subTo(t, r)\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q)\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q)\n }\n }\n r.t = ys\n r.clamp()\n if (nsh > 0) {\n r.rShiftTo(nsh, r)\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r)\n }\n }\n // BigInteger.prototype.invDigit = bnpInvDigit;\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0\n }\n var x = this[0]\n if ((x & 1) == 0) {\n return 0\n }\n var y = x & 3 // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - ((x * y) % this.DV))) % this.DV // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return y > 0 ? this.DV - y : -y\n }\n // BigInteger.prototype.isEven = bnpIsEven;\n // (protected) true iff this is even\n BigInteger.prototype.isEven = function () {\n return (this.t > 0 ? this[0] & 1 : this.s) == 0\n }\n // BigInteger.prototype.exp = bnpExp;\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE\n }\n var r = nbi()\n var r2 = nbi()\n var g = z.convert(this)\n var i = nbits(e) - 1\n g.copyTo(r)\n while (--i >= 0) {\n z.sqrTo(r, r2)\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r)\n } else {\n var t = r\n r = r2\n r2 = t\n }\n }\n return z.revert(r)\n }\n // BigInteger.prototype.chunkSize = bnpChunkSize;\n // (protected) return x s.t. r^x < DV\n BigInteger.prototype.chunkSize = function (r) {\n return Math.floor((Math.LN2 * this.DB) / Math.log(r))\n }\n // BigInteger.prototype.toRadix = bnpToRadix;\n // (protected) convert to radix string\n BigInteger.prototype.toRadix = function (b) {\n if (b == null) {\n b = 10\n }\n if (this.signum() == 0 || b < 2 || b > 36) {\n return \"0\"\n }\n var cs = this.chunkSize(b)\n var a = Math.pow(b, cs)\n var d = nbv(a)\n var y = nbi()\n var z = nbi()\n var r = \"\"\n this.divRemTo(d, y, z)\n while (y.signum() > 0) {\n r = (a + z.intValue()).toString(b).substr(1) + r\n y.divRemTo(d, y, z)\n }\n return z.intValue().toString(b) + r\n }\n // BigInteger.prototype.fromRadix = bnpFromRadix;\n // (protected) convert from radix string\n BigInteger.prototype.fromRadix = function (s, b) {\n this.fromInt(0)\n if (b == null) {\n b = 10\n }\n var cs = this.chunkSize(b)\n var d = Math.pow(b, cs)\n var mi = false\n var j = 0\n var w = 0\n for (var i = 0; i < s.length; ++i) {\n var x = intAt(s, i)\n if (x < 0) {\n if (s.charAt(i) == \"-\" && this.signum() == 0) {\n mi = true\n }\n continue\n }\n w = b * w + x\n if (++j >= cs) {\n this.dMultiply(d)\n this.dAddOffset(w, 0)\n j = 0\n w = 0\n }\n }\n if (j > 0) {\n this.dMultiply(Math.pow(b, j))\n this.dAddOffset(w, 0)\n }\n if (mi) {\n BigInteger.ZERO.subTo(this, this)\n }\n }\n // BigInteger.prototype.fromNumber = bnpFromNumber;\n // (protected) alternate constructor\n BigInteger.prototype.fromNumber = function (a, b, c) {\n if (\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if (a < 2) {\n this.fromInt(1)\n } else {\n this.fromNumber(a, c)\n if (!this.testBit(a - 1)) {\n // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this)\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0)\n } // force odd\n while (!this.isProbablePrime(b)) {\n this.dAddOffset(2, 0)\n if (this.bitLength() > a) {\n this.subTo(BigInteger.ONE.shiftLeft(a - 1), this)\n }\n }\n }\n } else {\n // new BigInteger(int,RNG)\n var x = []\n var t = a & 7\n x.length = (a >> 3) + 1\n b.nextBytes(x)\n if (t > 0) {\n x[0] &= (1 << t) - 1\n } else {\n x[0] = 0\n }\n this.fromString(x, 256)\n }\n }\n // BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n // (protected) r = this op a (bitwise)\n BigInteger.prototype.bitwiseTo = function (a, op, r) {\n var i\n var f\n var m = Math.min(a.t, this.t)\n for (i = 0; i < m; ++i) {\n r[i] = op(this[i], a[i])\n }\n if (a.t < this.t) {\n f = a.s & this.DM\n for (i = m; i < this.t; ++i) {\n r[i] = op(this[i], f)\n }\n r.t = this.t\n } else {\n f = this.s & this.DM\n for (i = m; i < a.t; ++i) {\n r[i] = op(f, a[i])\n }\n r.t = a.t\n }\n r.s = op(this.s, a.s)\n r.clamp()\n }\n // BigInteger.prototype.changeBit = bnpChangeBit;\n // (protected) this op (1<>= this.DB\n }\n if (a.t < this.t) {\n c += a.s\n while (i < this.t) {\n c += this[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c += this.s\n } else {\n c += this.s\n while (i < a.t) {\n c += a[i]\n r[i++] = c & this.DM\n c >>= this.DB\n }\n c += a.s\n }\n r.s = c < 0 ? -1 : 0\n if (c > 0) {\n r[i++] = c\n } else if (c < -1) {\n r[i++] = this.DV + c\n }\n r.t = i\n r.clamp()\n }\n // BigInteger.prototype.dMultiply = bnpDMultiply;\n // (protected) this *= n, this >= 0, 1 < n < DV\n BigInteger.prototype.dMultiply = function (n) {\n this[this.t] = this.am(0, n - 1, this, 0, 0, this.t)\n ++this.t\n this.clamp()\n }\n // BigInteger.prototype.dAddOffset = bnpDAddOffset;\n // (protected) this += n << w words, this >= 0\n BigInteger.prototype.dAddOffset = function (n, w) {\n if (n == 0) {\n return\n }\n while (this.t <= w) {\n this[this.t++] = 0\n }\n this[w] += n\n while (this[w] >= this.DV) {\n this[w] -= this.DV\n if (++w >= this.t) {\n this[this.t++] = 0\n }\n ++this[w]\n }\n }\n // BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyLowerTo = function (a, n, r) {\n var i = Math.min(this.t + a.t, n)\n r.s = 0 // assumes a,this >= 0\n r.t = i\n while (i > 0) {\n r[--i] = 0\n }\n for (var j = r.t - this.t; i < j; ++i) {\n r[i + this.t] = this.am(0, a[i], r, i, 0, this.t)\n }\n for (var j = Math.min(a.t, n); i < j; ++i) {\n this.am(0, a[i], r, i, 0, n - i)\n }\n r.clamp()\n }\n // BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n BigInteger.prototype.multiplyUpperTo = function (a, n, r) {\n --n\n var i = (r.t = this.t + a.t - n)\n r.s = 0 // assumes a,this >= 0\n while (--i >= 0) {\n r[i] = 0\n }\n for (i = Math.max(n - this.t, 0); i < a.t; ++i) {\n r[this.t + i - n] = this.am(n - i, a[i], r, 0, 0, this.t + i - n)\n }\n r.clamp()\n r.drShiftTo(1, r)\n }\n // BigInteger.prototype.modInt = bnpModInt;\n // (protected) this % n, n < 2^26\n BigInteger.prototype.modInt = function (n) {\n if (n <= 0) {\n return 0\n }\n var d = this.DV % n\n var r = this.s < 0 ? n - 1 : 0\n if (this.t > 0) {\n if (d == 0) {\n r = this[0] % n\n } else {\n for (var i = this.t - 1; i >= 0; --i) {\n r = (d * r + this[i]) % n\n }\n }\n }\n return r\n }\n // BigInteger.prototype.millerRabin = bnpMillerRabin;\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n BigInteger.prototype.millerRabin = function (t) {\n var n1 = this.subtract(BigInteger.ONE)\n var k = n1.getLowestSetBit()\n if (k <= 0) {\n return false\n }\n var r = n1.shiftRight(k)\n t = (t + 1) >> 1\n if (t > lowprimes.length) {\n t = lowprimes.length\n }\n var a = nbi()\n for (var i = 0; i < t; ++i) {\n // Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random() * lowprimes.length)])\n var y = a.modPow(r, this)\n if (y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1\n while (j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2, this)\n if (y.compareTo(BigInteger.ONE) == 0) {\n return false\n }\n }\n if (y.compareTo(n1) != 0) {\n return false\n }\n }\n }\n return true\n }\n // BigInteger.prototype.square = bnSquare;\n // (public) this^2\n BigInteger.prototype.square = function () {\n var r = nbi()\n this.squareTo(r)\n return r\n }\n //#region ASYNC\n // Public API method\n BigInteger.prototype.gcda = function (a, callback) {\n var x = this.s < 0 ? this.negate() : this.clone()\n var y = a.s < 0 ? a.negate() : a.clone()\n if (x.compareTo(y) < 0) {\n var t = x\n x = y\n y = t\n }\n var i = x.getLowestSetBit()\n var g = y.getLowestSetBit()\n if (g < 0) {\n callback(x)\n return\n }\n if (i < g) {\n g = i\n }\n if (g > 0) {\n x.rShiftTo(g, x)\n y.rShiftTo(g, y)\n }\n // Workhorse of the algorithm, gets called 200 - 800 times per 512 bit keygen.\n var gcda1 = function () {\n if ((i = x.getLowestSetBit()) > 0) {\n x.rShiftTo(i, x)\n }\n if ((i = y.getLowestSetBit()) > 0) {\n y.rShiftTo(i, y)\n }\n if (x.compareTo(y) >= 0) {\n x.subTo(y, x)\n x.rShiftTo(1, x)\n } else {\n y.subTo(x, y)\n y.rShiftTo(1, y)\n }\n if (!(x.signum() > 0)) {\n if (g > 0) {\n y.lShiftTo(g, y)\n }\n setTimeout(function () {\n callback(y)\n }, 0) // escape\n } else {\n setTimeout(gcda1, 0)\n }\n }\n setTimeout(gcda1, 10)\n }\n // (protected) alternate constructor\n BigInteger.prototype.fromNumberAsync = function (a, b, c, callback) {\n if (\"number\" == typeof b) {\n if (a < 2) {\n this.fromInt(1)\n } else {\n this.fromNumber(a, c)\n if (!this.testBit(a - 1)) {\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a - 1), op_or, this)\n }\n if (this.isEven()) {\n this.dAddOffset(1, 0)\n }\n var bnp_1 = this\n var bnpfn1_1 = function () {\n bnp_1.dAddOffset(2, 0)\n if (bnp_1.bitLength() > a) {\n bnp_1.subTo(BigInteger.ONE.shiftLeft(a - 1), bnp_1)\n }\n if (bnp_1.isProbablePrime(b)) {\n setTimeout(function () {\n callback()\n }, 0) // escape\n } else {\n setTimeout(bnpfn1_1, 0)\n }\n }\n setTimeout(bnpfn1_1, 0)\n }\n } else {\n var x = []\n var t = a & 7\n x.length = (a >> 3) + 1\n b.nextBytes(x)\n if (t > 0) {\n x[0] &= (1 << t) - 1\n } else {\n x[0] = 0\n }\n this.fromString(x, 256)\n }\n }\n return BigInteger\n })()\n //#region REDUCERS\n //#region NullExp\n var NullExp = /** @class */ (function () {\n function NullExp() { }\n // NullExp.prototype.convert = nNop;\n NullExp.prototype.convert = function (x) {\n return x\n }\n // NullExp.prototype.revert = nNop;\n NullExp.prototype.revert = function (x) {\n return x\n }\n // NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n }\n // NullExp.prototype.sqrTo = nSqrTo;\n NullExp.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n }\n return NullExp\n })()\n // Modular reduction using \"classic\" algorithm\n var Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m)\n } else {\n return x\n }\n }\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x\n }\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x)\n }\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n }\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n this.reduce(r)\n }\n return Classic\n })()\n //#endregion\n //#region Montgomery\n // Montgomery reduction\n var Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m\n this.mp = m.invDigit()\n this.mpl = this.mp & 0x7fff\n this.mph = this.mp >> 15\n this.um = (1 << (m.DB - 15)) - 1\n this.mt2 = 2 * m.t\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi()\n x.abs().dlShiftTo(this.m.t, r)\n r.divRemTo(this.m, null, r)\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r)\n }\n return r\n }\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi()\n x.copyTo(r)\n this.reduce(r)\n return r\n }\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff\n var u0 =\n (j * this.mpl +\n (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) &\n x.DM\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t)\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV\n x[++j]++\n }\n }\n x.clamp()\n x.drShiftTo(this.m.t, x)\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x)\n }\n }\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n }\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n this.reduce(r)\n }\n return Montgomery\n })()\n //#endregion Montgomery\n //#region Barrett\n // Barrett modular reduction\n var Barrett = /** @class */ (function () {\n function Barrett(m) {\n this.m = m\n // setup Barrett\n this.r2 = nbi()\n this.q3 = nbi()\n BigInteger.ONE.dlShiftTo(2 * m.t, this.r2)\n this.mu = this.r2.divide(m)\n }\n // Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.convert = function (x) {\n if (x.s < 0 || x.t > 2 * this.m.t) {\n return x.mod(this.m)\n } else if (x.compareTo(this.m) < 0) {\n return x\n } else {\n var r = nbi()\n x.copyTo(r)\n this.reduce(r)\n return r\n }\n }\n // Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.revert = function (x) {\n return x\n }\n // Barrett.prototype.reduce = barrettReduce;\n // x = x mod m (HAC 14.42)\n Barrett.prototype.reduce = function (x) {\n x.drShiftTo(this.m.t - 1, this.r2)\n if (x.t > this.m.t + 1) {\n x.t = this.m.t + 1\n x.clamp()\n }\n this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3)\n this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2)\n while (x.compareTo(this.r2) < 0) {\n x.dAddOffset(1, this.m.t + 1)\n }\n x.subTo(this.r2, x)\n while (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x)\n }\n }\n // Barrett.prototype.mulTo = barrettMulTo;\n // r = x*y mod m; x,y != r\n Barrett.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r)\n this.reduce(r)\n }\n // Barrett.prototype.sqrTo = barrettSqrTo;\n // r = x^2 mod m; x != r\n Barrett.prototype.sqrTo = function (x, r) {\n x.squareTo(r)\n this.reduce(r)\n }\n return Barrett\n })()\n //#endregion\n //#endregion REDUCERS\n // return new, unset BigInteger\n function nbi() {\n return new BigInteger(null)\n }\n function parseBigInt(str, r) {\n return new BigInteger(str, r)\n }\n // am: Compute w_j += (x*this_i), propagate carries,\n // c is initial carry, returns final carry.\n // c < 3*dvalue, x < 2*dvalue, this_i < dvalue\n // We need to select the fastest one that works in this environment.\n // am1: use a single mult and divide to get the high bits,\n // max digit bits should be 26 because\n // max internal value = 2*dvalue^2-2*dvalue (< 2^53)\n function am1(i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c\n c = Math.floor(v / 0x4000000)\n w[j++] = v & 0x3ffffff\n }\n return c\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i, x, w, j, c, n) {\n var xl = x & 0x7fff\n var xh = x >> 15\n while (--n >= 0) {\n var l = this[i] & 0x7fff\n var h = this[i++] >> 15\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff)\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30)\n w[j++] = l & 0x3fffffff\n }\n return c\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i, x, w, j, c, n) {\n var xl = x & 0x3fff\n var xh = x >> 14\n while (--n >= 0) {\n var l = this[i] & 0x3fff\n var h = this[i++] >> 14\n var m = xh * l + h * xl\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c\n c = (l >> 28) + (m >> 14) + xh * h\n w[j++] = l & 0xfffffff\n }\n return c\n }\n /* if (j_lm && navigator.appName == 'Microsoft Internet Explorer') {\n BigInteger.prototype.am = am2\n dbits = 30\n } else if (j_lm && navigator.appName != 'Netscape') {\n BigInteger.prototype.am = am1\n dbits = 26\n } else {\n // Mozilla/Netscape seems to prefer am3\n } */\n BigInteger.prototype.am = am3\n dbits = 28\n BigInteger.prototype.DB = dbits\n BigInteger.prototype.DM = (1 << dbits) - 1\n BigInteger.prototype.DV = 1 << dbits\n var BI_FP = 52\n BigInteger.prototype.FV = Math.pow(2, BI_FP)\n BigInteger.prototype.F1 = BI_FP - dbits\n BigInteger.prototype.F2 = 2 * dbits - BI_FP\n // Digit conversions\n var BI_RC = []\n var rr\n var vv\n rr = \"0\".charCodeAt(0)\n for (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv\n }\n rr = \"a\".charCodeAt(0)\n for (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv\n }\n rr = \"A\".charCodeAt(0)\n for (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv\n }\n function intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)]\n return c == null ? -1 : c\n }\n // return bigint initialized to value\n function nbv(i) {\n var r = nbi()\n r.fromInt(i)\n return r\n }\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1\n var t\n if ((t = x >>> 16) != 0) {\n x = t\n r += 16\n }\n if ((t = x >> 8) != 0) {\n x = t\n r += 8\n }\n if ((t = x >> 4) != 0) {\n x = t\n r += 4\n }\n if ((t = x >> 2) != 0) {\n x = t\n r += 2\n }\n if ((t = x >> 1) != 0) {\n x = t\n r += 1\n }\n return r\n }\n // \"constants\"\n BigInteger.ZERO = nbv(0)\n BigInteger.ONE = nbv(1)\n\n // prng4.js - uses Arcfour as a PRNG\n var Arcfour = /** @class */ (function () {\n function Arcfour() {\n this.i = 0\n this.j = 0\n this.S = []\n }\n // Arcfour.prototype.init = ARC4init;\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n Arcfour.prototype.init = function (key) {\n var i\n var j\n var t\n for (i = 0; i < 256; ++i) {\n this.S[i] = i\n }\n j = 0\n for (i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255\n t = this.S[i]\n this.S[i] = this.S[j]\n this.S[j] = t\n }\n this.i = 0\n this.j = 0\n }\n // Arcfour.prototype.next = ARC4next;\n Arcfour.prototype.next = function () {\n var t\n this.i = (this.i + 1) & 255\n this.j = (this.j + this.S[this.i]) & 255\n t = this.S[this.i]\n this.S[this.i] = this.S[this.j]\n this.S[this.j] = t\n return this.S[(t + this.S[this.i]) & 255]\n }\n return Arcfour\n })()\n // Plug in your RNG constructor here\n function prng_newstate() {\n return new Arcfour()\n }\n // Pool size must be a multiple of 4 and greater than 32.\n // An array of bytes the size of the pool will be passed to init()\n var rng_psize = 256\n\n // Random number generator - requires a PRNG backend, e.g. prng4.js\n var rng_state\n var rng_pool = null\n var rng_pptr\n // Initialize the pool with junk if needed.\n if (rng_pool == null) {\n rng_pool = []\n rng_pptr = 0\n var t = void 0\n if (window.crypto && window.crypto.getRandomValues) {\n // Extract entropy (2048 bits) from RNG if available\n var z = new Uint32Array(256)\n window.crypto.getRandomValues(z)\n for (t = 0; t < z.length; ++t) {\n rng_pool[rng_pptr++] = z[t] & 255\n }\n }\n // Use mouse events for entropy, if we do not have enough entropy by the time\n // we need it, entropy will be generated by Math.random.\n var onMouseMoveListener_1 = function (ev) {\n this.count = this.count || 0\n if (this.count >= 256 || rng_pptr >= rng_psize) {\n if (window.removeEventListener) {\n window.removeEventListener(\"mousemove\", onMouseMoveListener_1, false)\n } else if (window.detachEvent) {\n window.detachEvent(\"onmousemove\", onMouseMoveListener_1)\n }\n return\n }\n try {\n var mouseCoordinates = ev.x + ev.y\n rng_pool[rng_pptr++] = mouseCoordinates & 255\n this.count += 1\n } catch (e) {\n // Sometimes Firefox will deny permission to access event properties for some reason. Ignore.\n }\n }\n if (window.addEventListener) {\n window.addEventListener(\"mousemove\", onMouseMoveListener_1, false)\n } else if (window.attachEvent) {\n window.attachEvent(\"onmousemove\", onMouseMoveListener_1)\n }\n }\n function rng_get_byte() {\n if (rng_state == null) {\n rng_state = prng_newstate()\n // At this point, we may not have collected enough entropy. If not, fall back to Math.random\n while (rng_pptr < rng_psize) {\n var random = Math.floor(65536 * Math.random())\n rng_pool[rng_pptr++] = random & 255\n }\n rng_state.init(rng_pool)\n for (rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr) {\n rng_pool[rng_pptr] = 0\n }\n rng_pptr = 0\n }\n // TODO: allow reseeding after first request\n return rng_state.next()\n }\n var SecureRandom = /** @class */ (function () {\n function SecureRandom() { }\n SecureRandom.prototype.nextBytes = function (ba) {\n for (var i = 0; i < ba.length; ++i) {\n ba[i] = rng_get_byte()\n }\n }\n return SecureRandom\n })()\n\n // Depends on jsbn.js and rng.js\n // function linebrk(s,n) {\n // var ret = \"\";\n // var i = 0;\n // while(i + n < s.length) {\n // ret += s.substring(i,i+n) + \"\\n\";\n // i += n;\n // }\n // return ret + s.substring(i,s.length);\n // }\n // function byte2Hex(b) {\n // if(b < 0x10)\n // return \"0\" + b.toString(16);\n // else\n // return b.toString(16);\n // }\n function pkcs1pad1(s, n) {\n if (n < s.length + 22) {\n console.error(\"Message too long for RSA\")\n return null\n }\n var len = n - s.length - 6\n var filler = \"\"\n for (var f = 0; f < len; f += 2) {\n filler += \"ff\"\n }\n var m = \"0001\" + filler + \"00\" + s\n return parseBigInt(m, 16)\n }\n // PKCS#1 (type 2, random) pad input string s to n bytes, and return a bigint\n function pkcs1pad2(s, n) {\n if (n < s.length + 11) {\n // TODO: fix for utf-8\n console.error(\"Message too long for RSA\")\n return null\n }\n var ba = []\n var i = s.length - 1\n while (i >= 0 && n > 0) {\n var c = s.charCodeAt(i--)\n if (c < 128) {\n // encode using utf-8\n ba[--n] = c\n } else if (c > 127 && c < 2048) {\n ba[--n] = (c & 63) | 128\n ba[--n] = (c >> 6) | 192\n } else {\n ba[--n] = (c & 63) | 128\n ba[--n] = ((c >> 6) & 63) | 128\n ba[--n] = (c >> 12) | 224\n }\n }\n ba[--n] = 0\n var rng = new SecureRandom()\n var x = []\n while (n > 2) {\n // random non-zero pad\n x[0] = 0\n while (x[0] == 0) {\n rng.nextBytes(x)\n }\n ba[--n] = x[0]\n }\n ba[--n] = 2\n ba[--n] = 0\n return new BigInteger(ba)\n }\n // \"empty\" RSA key constructor\n var RSAKey = /** @class */ (function () {\n function RSAKey() {\n this.n = null\n this.e = 0\n this.d = null\n this.p = null\n this.q = null\n this.dmp1 = null\n this.dmq1 = null\n this.coeff = null\n }\n //#region PROTECTED\n // protected\n // RSAKey.prototype.doPublic = RSADoPublic;\n // Perform raw public operation on \"x\": return x^e (mod n)\n RSAKey.prototype.doPublic = function (x) {\n return x.modPowInt(this.e, this.n)\n }\n // RSAKey.prototype.doPrivate = RSADoPrivate;\n // Perform raw private operation on \"x\": return x^d (mod n)\n RSAKey.prototype.doPrivate = function (x) {\n if (this.p == null || this.q == null) {\n return x.modPow(this.d, this.n)\n }\n // TODO: re-calculate any missing CRT params\n var xp = x.mod(this.p).modPow(this.dmp1, this.p)\n var xq = x.mod(this.q).modPow(this.dmq1, this.q)\n while (xp.compareTo(xq) < 0) {\n xp = xp.add(this.p)\n }\n return xp\n .subtract(xq)\n .multiply(this.coeff)\n .mod(this.p)\n .multiply(this.q)\n .add(xq)\n }\n //#endregion PROTECTED\n //#region PUBLIC\n // RSAKey.prototype.setPublic = RSASetPublic;\n // Set the public key fields N and e from hex strings\n RSAKey.prototype.setPublic = function (N, E) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16)\n this.e = parseInt(E, 16)\n } else {\n console.error(\"Invalid RSA public key\")\n }\n }\n // RSAKey.prototype.encrypt = RSAEncrypt;\n // Return the PKCS#1 RSA encryption of \"text\" as an even-length hex string\n RSAKey.prototype.encrypt = function (text) {\n var m = pkcs1pad2(text, (this.n.bitLength() + 7) >> 3)\n if (m == null) {\n return null\n }\n var c = this.doPublic(m)\n if (c == null) {\n return null\n }\n var h = c.toString(16)\n if ((h.length & 1) == 0) {\n return h\n } else {\n return \"0\" + h\n }\n }\n // RSAKey.prototype.setPrivate = RSASetPrivate;\n // Set the private key fields N, e, and d from hex strings\n RSAKey.prototype.setPrivate = function (N, E, D) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16)\n this.e = parseInt(E, 16)\n this.d = parseBigInt(D, 16)\n } else {\n console.error(\"Invalid RSA private key\")\n }\n }\n // RSAKey.prototype.setPrivateEx = RSASetPrivateEx;\n // Set the private key fields N, e, d and CRT params from hex strings\n RSAKey.prototype.setPrivateEx = function (N, E, D, P, Q, DP, DQ, C) {\n if (N != null && E != null && N.length > 0 && E.length > 0) {\n this.n = parseBigInt(N, 16)\n this.e = parseInt(E, 16)\n this.d = parseBigInt(D, 16)\n this.p = parseBigInt(P, 16)\n this.q = parseBigInt(Q, 16)\n this.dmp1 = parseBigInt(DP, 16)\n this.dmq1 = parseBigInt(DQ, 16)\n this.coeff = parseBigInt(C, 16)\n } else {\n console.error(\"Invalid RSA private key\")\n }\n }\n // RSAKey.prototype.generate = RSAGenerate;\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generate = function (B, E) {\n var rng = new SecureRandom()\n var qs = B >> 1\n this.e = parseInt(E, 16)\n var ee = new BigInteger(E, 16)\n for (; ;) {\n for (; ;) {\n this.p = new BigInteger(B - qs, 1, rng)\n if (\n this.p.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) ==\n 0 &&\n this.p.isProbablePrime(10)\n ) {\n break\n }\n }\n for (; ;) {\n this.q = new BigInteger(qs, 1, rng)\n if (\n this.q.subtract(BigInteger.ONE).gcd(ee).compareTo(BigInteger.ONE) ==\n 0 &&\n this.q.isProbablePrime(10)\n ) {\n break\n }\n }\n if (this.p.compareTo(this.q) <= 0) {\n var t = this.p\n this.p = this.q\n this.q = t\n }\n var p1 = this.p.subtract(BigInteger.ONE)\n var q1 = this.q.subtract(BigInteger.ONE)\n var phi = p1.multiply(q1)\n if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\n this.n = this.p.multiply(this.q)\n this.d = ee.modInverse(phi)\n this.dmp1 = this.d.mod(p1)\n this.dmq1 = this.d.mod(q1)\n this.coeff = this.q.modInverse(this.p)\n break\n }\n }\n }\n // RSAKey.prototype.decrypt = RSADecrypt;\n // Return the PKCS#1 RSA decryption of \"ctext\".\n // \"ctext\" is an even-length hex string and the output is a plain string.\n RSAKey.prototype.decrypt = function (ctext) {\n var c = parseBigInt(ctext, 16)\n var m = this.doPrivate(c)\n if (m == null) {\n return null\n }\n return pkcs1unpad2(m, (this.n.bitLength() + 7) >> 3)\n }\n // Generate a new random private key B bits long, using public expt E\n RSAKey.prototype.generateAsync = function (B, E, callback) {\n var rng = new SecureRandom()\n var qs = B >> 1\n this.e = parseInt(E, 16)\n var ee = new BigInteger(E, 16)\n var rsa = this\n // These functions have non-descript names because they were originally for(;;) loops.\n // I don't know about cryptography to give them better names than loop1-4.\n var loop1 = function () {\n var loop4 = function () {\n if (rsa.p.compareTo(rsa.q) <= 0) {\n var t = rsa.p\n rsa.p = rsa.q\n rsa.q = t\n }\n var p1 = rsa.p.subtract(BigInteger.ONE)\n var q1 = rsa.q.subtract(BigInteger.ONE)\n var phi = p1.multiply(q1)\n if (phi.gcd(ee).compareTo(BigInteger.ONE) == 0) {\n rsa.n = rsa.p.multiply(rsa.q)\n rsa.d = ee.modInverse(phi)\n rsa.dmp1 = rsa.d.mod(p1)\n rsa.dmq1 = rsa.d.mod(q1)\n rsa.coeff = rsa.q.modInverse(rsa.p)\n setTimeout(function () {\n callback()\n }, 0) // escape\n } else {\n setTimeout(loop1, 0)\n }\n }\n var loop3 = function () {\n rsa.q = nbi()\n rsa.q.fromNumberAsync(qs, 1, rng, function () {\n rsa.q.subtract(BigInteger.ONE).gcda(ee, function (r) {\n if (\n r.compareTo(BigInteger.ONE) == 0 &&\n rsa.q.isProbablePrime(10)\n ) {\n setTimeout(loop4, 0)\n } else {\n setTimeout(loop3, 0)\n }\n })\n })\n }\n var loop2 = function () {\n rsa.p = nbi()\n rsa.p.fromNumberAsync(B - qs, 1, rng, function () {\n rsa.p.subtract(BigInteger.ONE).gcda(ee, function (r) {\n if (\n r.compareTo(BigInteger.ONE) == 0 &&\n rsa.p.isProbablePrime(10)\n ) {\n setTimeout(loop3, 0)\n } else {\n setTimeout(loop2, 0)\n }\n })\n })\n }\n setTimeout(loop2, 0)\n }\n setTimeout(loop1, 0)\n }\n RSAKey.prototype.sign = function (text, digestMethod, digestName) {\n var header = getDigestHeader(digestName)\n var digest = header + digestMethod(text).toString()\n var m = pkcs1pad1(digest, this.n.bitLength() / 4)\n if (m == null) {\n return null\n }\n var c = this.doPrivate(m)\n if (c == null) {\n return null\n }\n var h = c.toString(16)\n if ((h.length & 1) == 0) {\n return h\n } else {\n return \"0\" + h\n }\n }\n RSAKey.prototype.verify = function (text, signature, digestMethod) {\n var c = parseBigInt(signature, 16)\n var m = this.doPublic(c)\n if (m == null) {\n return null\n }\n var unpadded = m.toString(16).replace(/^1f+00/, \"\")\n var digest = removeDigestHeader(unpadded)\n return digest == digestMethod(text).toString()\n }\n return RSAKey\n })()\n // Undo PKCS#1 (type 2, random) padding and, if valid, return the plaintext\n function pkcs1unpad2(d, n) {\n var b = d.toByteArray()\n var i = 0\n while (i < b.length && b[i] == 0) {\n ++i\n }\n if (b.length - i != n - 1 || b[i] != 2) {\n return null\n }\n ++i\n while (b[i] != 0) {\n if (++i >= b.length) {\n return null\n }\n }\n var ret = \"\"\n while (++i < b.length) {\n var c = b[i] & 255\n if (c < 128) {\n // utf-8 decode\n ret += String.fromCharCode(c)\n } else if (c > 191 && c < 224) {\n ret += String.fromCharCode(((c & 31) << 6) | (b[i + 1] & 63))\n ++i\n } else {\n ret += String.fromCharCode(\n ((c & 15) << 12) | ((b[i + 1] & 63) << 6) | (b[i + 2] & 63)\n )\n i += 2\n }\n }\n return ret\n }\n // https://tools.ietf.org/html/rfc3447#page-43\n var DIGEST_HEADERS = {\n md2: \"3020300c06082a864886f70d020205000410\",\n md5: \"3020300c06082a864886f70d020505000410\",\n sha1: \"3021300906052b0e03021a05000414\",\n sha224: \"302d300d06096086480165030402040500041c\",\n sha256: \"3031300d060960864801650304020105000420\",\n sha384: \"3041300d060960864801650304020205000430\",\n sha512: \"3051300d060960864801650304020305000440\",\n ripemd160: \"3021300906052b2403020105000414\",\n }\n function getDigestHeader(name) {\n return DIGEST_HEADERS[name] || \"\"\n }\n function removeDigestHeader(str) {\n for (var name_1 in DIGEST_HEADERS) {\n if (DIGEST_HEADERS.hasOwnProperty(name_1)) {\n var header = DIGEST_HEADERS[name_1]\n var len = header.length\n if (str.substr(0, len) == header) {\n return str.substr(len)\n }\n }\n }\n return str\n }\n // Return the PKCS#1 RSA encryption of \"text\" as a Base64-encoded string\n // function RSAEncryptB64(text) {\n // var h = this.encrypt(text);\n // if(h) return hex2b64(h); else return null;\n // }\n // public\n // RSAKey.prototype.encrypt_b64 = RSAEncryptB64;\n\n /*!\n Copyright (c) 2011, Yahoo! Inc. All rights reserved.\n Code licensed under the BSD License:\n http://developer.yahoo.com/yui/license.html\n version: 2.9.0\n */\n var YAHOO = {}\n YAHOO.lang = {\n /**\n * Utility to set up the prototype, constructor and superclass properties to\n * support an inheritance strategy that can chain constructors and methods.\n * Static members will not be inherited.\n *\n * @method extend\n * @static\n * @param {Function} subc the object to modify\n * @param {Function} superc the object to inherit\n * @param {Object} overrides additional properties/methods to add to the\n * subclass prototype. These will override the\n * matching items obtained from the superclass\n * if present.\n */\n extend: function (subc, superc, overrides) {\n if (!superc || !subc) {\n throw new Error(\n \"YAHOO.lang.extend failed, please check that \" +\n \"all dependencies are included.\"\n )\n }\n\n var F = function () { }\n F.prototype = superc.prototype\n subc.prototype = new F()\n subc.prototype.constructor = subc\n subc.superclass = superc.prototype\n\n if (superc.prototype.constructor == Object.prototype.constructor) {\n superc.prototype.constructor = superc\n }\n\n if (overrides) {\n var i\n for (i in overrides) {\n subc.prototype[i] = overrides[i]\n }\n\n /*\n * IE will not enumerate native functions in a derived object even if the\n * function was overridden. This is a workaround for specific functions\n * we care about on the Object prototype.\n * @property _IEEnumFix\n * @param {Function} r the object to receive the augmentation\n * @param {Function} s the object that supplies the properties to augment\n * @static\n * @private\n */\n var _IEEnumFix = function () { },\n ADD = [\"toString\", \"valueOf\"]\n try {\n if (/MSIE/.test(navigator.userAgent)) {\n _IEEnumFix = function (r, s) {\n for (i = 0; i < ADD.length; i = i + 1) {\n var fname = ADD[i],\n f = s[fname]\n if (typeof f === \"function\" && f != Object.prototype[fname]) {\n r[fname] = f\n }\n }\n }\n }\n } catch (ex) { }\n _IEEnumFix(subc.prototype, overrides)\n }\n },\n }\n\n /* asn1-1.0.13.js (c) 2013-2017 Kenji Urushima | kjur.github.com/jsrsasign/license\n */\n\n /**\n * @fileOverview\n * @name asn1-1.0.js\n * @author Kenji Urushima kenji.urushima@gmail.com\n * @version asn1 1.0.13 (2017-Jun-02)\n * @since jsrsasign 2.1\n * @license MIT License\n */\n\n /**\n * kjur's class library name space\n *

\n * This name space provides following name spaces:\n *

    \n *
  • {@link KJUR.asn1} - ASN.1 primitive hexadecimal encoder
  • \n *
  • {@link KJUR.asn1.x509} - ASN.1 structure for X.509 certificate and CRL
  • \n *
  • {@link KJUR.crypto} - Java Cryptographic Extension(JCE) style MessageDigest/Signature\n * class and utilities
  • \n *
\n *

\n * NOTE: Please ignore method summary and document of this namespace. This caused by a bug of jsdoc2.\n * @name KJUR\n * @namespace kjur's class library name space\n */\n var KJUR = {}\n\n /**\n * kjur's ASN.1 class library name space\n *

\n * This is ITU-T X.690 ASN.1 DER encoder class library and\n * class structure and methods is very similar to\n * org.bouncycastle.asn1 package of\n * well known BouncyCaslte Cryptography Library.\n *

PROVIDING ASN.1 PRIMITIVES

\n * Here are ASN.1 DER primitive classes.\n *
    \n *
  • 0x01 {@link KJUR.asn1.DERBoolean}
  • \n *
  • 0x02 {@link KJUR.asn1.DERInteger}
  • \n *
  • 0x03 {@link KJUR.asn1.DERBitString}
  • \n *
  • 0x04 {@link KJUR.asn1.DEROctetString}
  • \n *
  • 0x05 {@link KJUR.asn1.DERNull}
  • \n *
  • 0x06 {@link KJUR.asn1.DERObjectIdentifier}
  • \n *
  • 0x0a {@link KJUR.asn1.DEREnumerated}
  • \n *
  • 0x0c {@link KJUR.asn1.DERUTF8String}
  • \n *
  • 0x12 {@link KJUR.asn1.DERNumericString}
  • \n *
  • 0x13 {@link KJUR.asn1.DERPrintableString}
  • \n *
  • 0x14 {@link KJUR.asn1.DERTeletexString}
  • \n *
  • 0x16 {@link KJUR.asn1.DERIA5String}
  • \n *
  • 0x17 {@link KJUR.asn1.DERUTCTime}
  • \n *
  • 0x18 {@link KJUR.asn1.DERGeneralizedTime}
  • \n *
  • 0x30 {@link KJUR.asn1.DERSequence}
  • \n *
  • 0x31 {@link KJUR.asn1.DERSet}
  • \n *
\n *

OTHER ASN.1 CLASSES

\n *
    \n *
  • {@link KJUR.asn1.ASN1Object}
  • \n *
  • {@link KJUR.asn1.DERAbstractString}
  • \n *
  • {@link KJUR.asn1.DERAbstractTime}
  • \n *
  • {@link KJUR.asn1.DERAbstractStructured}
  • \n *
  • {@link KJUR.asn1.DERTaggedObject}
  • \n *
\n *

SUB NAME SPACES

\n *
    \n *
  • {@link KJUR.asn1.cades} - CAdES long term signature format
  • \n *
  • {@link KJUR.asn1.cms} - Cryptographic Message Syntax
  • \n *
  • {@link KJUR.asn1.csr} - Certificate Signing Request (CSR/PKCS#10)
  • \n *
  • {@link KJUR.asn1.tsp} - RFC 3161 Timestamping Protocol Format
  • \n *
  • {@link KJUR.asn1.x509} - RFC 5280 X.509 certificate and CRL
  • \n *
\n *

\n * NOTE: Please ignore method summary and document of this namespace.\n * This caused by a bug of jsdoc2.\n * @name KJUR.asn1\n * @namespace\n */\n if (typeof KJUR.asn1 == \"undefined\" || !KJUR.asn1) KJUR.asn1 = {}\n\n /**\n * ASN1 utilities class\n * @name KJUR.asn1.ASN1Util\n * @class ASN1 utilities class\n * @since asn1 1.0.2\n */\n KJUR.asn1.ASN1Util = new (function () {\n this.integerToByteHex = function (i) {\n var h = i.toString(16)\n if (h.length % 2 == 1) h = \"0\" + h\n return h\n }\n this.bigIntToMinTwosComplementsHex = function (bigIntegerValue) {\n var h = bigIntegerValue.toString(16)\n if (h.substr(0, 1) != \"-\") {\n if (h.length % 2 == 1) {\n h = \"0\" + h\n } else {\n if (!h.match(/^[0-7]/)) {\n h = \"00\" + h\n }\n }\n } else {\n var hPos = h.substr(1)\n var xorLen = hPos.length\n if (xorLen % 2 == 1) {\n xorLen += 1\n } else {\n if (!h.match(/^[0-7]/)) {\n xorLen += 2\n }\n }\n var hMask = \"\"\n for (var i = 0; i < xorLen; i++) {\n hMask += \"f\"\n }\n var biMask = new BigInteger(hMask, 16)\n var biNeg = biMask.xor(bigIntegerValue).add(BigInteger.ONE)\n h = biNeg.toString(16).replace(/^-/, \"\")\n }\n return h\n }\n /**\n * get PEM string from hexadecimal data and header string\n * @name getPEMStringFromHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} dataHex hexadecimal string of PEM body\n * @param {String} pemHeader PEM header string (ex. 'RSA PRIVATE KEY')\n * @return {String} PEM formatted string of input data\n * @description\n * This method converts a hexadecimal string to a PEM string with\n * a specified header. Its line break will be CRLF(\"\\r\\n\").\n * @example\n * var pem = KJUR.asn1.ASN1Util.getPEMStringFromHex('616161', 'RSA PRIVATE KEY');\n * // value of pem will be:\n * -----BEGIN PRIVATE KEY-----\n * YWFh\n * -----END PRIVATE KEY-----\n */\n this.getPEMStringFromHex = function (dataHex, pemHeader) {\n return hextopem(dataHex, pemHeader)\n }\n\n /**\n * generate ASN1Object specifed by JSON parameters\n * @name newObject\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return {KJUR.asn1.ASN1Object} generated object\n * @since asn1 1.0.3\n * @description\n * generate any ASN1Object specified by JSON param\n * including ASN.1 primitive or structured.\n * Generally 'param' can be described as follows:\n *
\n * {TYPE-OF-ASNOBJ: ASN1OBJ-PARAMETER}\n *
\n * 'TYPE-OF-ASN1OBJ' can be one of following symbols:\n *
    \n *
  • 'bool' - DERBoolean
  • \n *
  • 'int' - DERInteger
  • \n *
  • 'bitstr' - DERBitString
  • \n *
  • 'octstr' - DEROctetString
  • \n *
  • 'null' - DERNull
  • \n *
  • 'oid' - DERObjectIdentifier
  • \n *
  • 'enum' - DEREnumerated
  • \n *
  • 'utf8str' - DERUTF8String
  • \n *
  • 'numstr' - DERNumericString
  • \n *
  • 'prnstr' - DERPrintableString
  • \n *
  • 'telstr' - DERTeletexString
  • \n *
  • 'ia5str' - DERIA5String
  • \n *
  • 'utctime' - DERUTCTime
  • \n *
  • 'gentime' - DERGeneralizedTime
  • \n *
  • 'seq' - DERSequence
  • \n *
  • 'set' - DERSet
  • \n *
  • 'tag' - DERTaggedObject
  • \n *
\n * @example\n * newObject({'prnstr': 'aaa'});\n * newObject({'seq': [{'int': 3}, {'prnstr': 'aaa'}]})\n * // ASN.1 Tagged Object\n * newObject({'tag': {'tag': 'a1',\n * 'explicit': true,\n * 'obj': {'seq': [{'int': 3}, {'prnstr': 'aaa'}]}}});\n * // more simple representation of ASN.1 Tagged Object\n * newObject({'tag': ['a1',\n * true,\n * {'seq': [\n * {'int': 3},\n * {'prnstr': 'aaa'}]}\n * ]});\n */\n this.newObject = function (param) {\n var _KJUR = KJUR,\n _KJUR_asn1 = _KJUR.asn1,\n _DERBoolean = _KJUR_asn1.DERBoolean,\n _DERInteger = _KJUR_asn1.DERInteger,\n _DERBitString = _KJUR_asn1.DERBitString,\n _DEROctetString = _KJUR_asn1.DEROctetString,\n _DERNull = _KJUR_asn1.DERNull,\n _DERObjectIdentifier = _KJUR_asn1.DERObjectIdentifier,\n _DEREnumerated = _KJUR_asn1.DEREnumerated,\n _DERUTF8String = _KJUR_asn1.DERUTF8String,\n _DERNumericString = _KJUR_asn1.DERNumericString,\n _DERPrintableString = _KJUR_asn1.DERPrintableString,\n _DERTeletexString = _KJUR_asn1.DERTeletexString,\n _DERIA5String = _KJUR_asn1.DERIA5String,\n _DERUTCTime = _KJUR_asn1.DERUTCTime,\n _DERGeneralizedTime = _KJUR_asn1.DERGeneralizedTime,\n _DERSequence = _KJUR_asn1.DERSequence,\n _DERSet = _KJUR_asn1.DERSet,\n _DERTaggedObject = _KJUR_asn1.DERTaggedObject,\n _newObject = _KJUR_asn1.ASN1Util.newObject\n\n var keys = Object.keys(param)\n if (keys.length != 1) throw \"key of param shall be only one.\"\n var key = keys[0]\n\n if (\n \":bool:int:bitstr:octstr:null:oid:enum:utf8str:numstr:prnstr:telstr:ia5str:utctime:gentime:seq:set:tag:\".indexOf(\n \":\" + key + \":\"\n ) == -1\n )\n throw \"undefined key: \" + key\n\n if (key == \"bool\") return new _DERBoolean(param[key])\n if (key == \"int\") return new _DERInteger(param[key])\n if (key == \"bitstr\") return new _DERBitString(param[key])\n if (key == \"octstr\") return new _DEROctetString(param[key])\n if (key == \"null\") return new _DERNull(param[key])\n if (key == \"oid\") return new _DERObjectIdentifier(param[key])\n if (key == \"enum\") return new _DEREnumerated(param[key])\n if (key == \"utf8str\") return new _DERUTF8String(param[key])\n if (key == \"numstr\") return new _DERNumericString(param[key])\n if (key == \"prnstr\") return new _DERPrintableString(param[key])\n if (key == \"telstr\") return new _DERTeletexString(param[key])\n if (key == \"ia5str\") return new _DERIA5String(param[key])\n if (key == \"utctime\") return new _DERUTCTime(param[key])\n if (key == \"gentime\") return new _DERGeneralizedTime(param[key])\n\n if (key == \"seq\") {\n var paramList = param[key]\n var a = []\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i])\n a.push(asn1Obj)\n }\n return new _DERSequence({ array: a })\n }\n\n if (key == \"set\") {\n var paramList = param[key]\n var a = []\n for (var i = 0; i < paramList.length; i++) {\n var asn1Obj = _newObject(paramList[i])\n a.push(asn1Obj)\n }\n return new _DERSet({ array: a })\n }\n\n if (key == \"tag\") {\n var tagParam = param[key]\n if (\n Object.prototype.toString.call(tagParam) === \"[object Array]\" &&\n tagParam.length == 3\n ) {\n var obj = _newObject(tagParam[2])\n return new _DERTaggedObject({\n tag: tagParam[0],\n explicit: tagParam[1],\n obj: obj,\n })\n } else {\n var newParam = {}\n if (tagParam.explicit !== undefined)\n newParam.explicit = tagParam.explicit\n if (tagParam.tag !== undefined) newParam.tag = tagParam.tag\n if (tagParam.obj === undefined)\n throw \"obj shall be specified for 'tag'.\"\n newParam.obj = _newObject(tagParam.obj)\n return new _DERTaggedObject(newParam)\n }\n }\n }\n\n /**\n * get encoded hexadecimal string of ASN1Object specifed by JSON parameters\n * @name jsonToASN1HEX\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {Array} param JSON parameter to generate ASN1Object\n * @return hexadecimal string of ASN1Object\n * @since asn1 1.0.4\n * @description\n * As for ASN.1 object representation of JSON object,\n * please see {@link newObject}.\n * @example\n * jsonToASN1HEX({'prnstr': 'aaa'});\n */\n this.jsonToASN1HEX = function (param) {\n var asn1Obj = this.newObject(param)\n return asn1Obj.getEncodedHex()\n }\n })()\n\n /**\n * get dot noted oid number string from hexadecimal value of OID\n * @name oidHexToInt\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} hex hexadecimal value of object identifier\n * @return {String} dot noted string of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from hexadecimal string representation of\n * ASN.1 value of object identifier to oid number string.\n * @example\n * KJUR.asn1.ASN1Util.oidHexToInt('550406') → \"2.5.4.6\"\n */\n KJUR.asn1.ASN1Util.oidHexToInt = function (hex) {\n var s = \"\"\n var i01 = parseInt(hex.substr(0, 2), 16)\n var i0 = Math.floor(i01 / 40)\n var i1 = i01 % 40\n var s = i0 + \".\" + i1\n\n var binbuf = \"\"\n for (var i = 2; i < hex.length; i += 2) {\n var value = parseInt(hex.substr(i, 2), 16)\n var bin = (\"00000000\" + value.toString(2)).slice(-8)\n binbuf = binbuf + bin.substr(1, 7)\n if (bin.substr(0, 1) == \"0\") {\n var bi = new BigInteger(binbuf, 2)\n s = s + \".\" + bi.toString(10)\n binbuf = \"\"\n }\n }\n return s\n }\n\n /**\n * get hexadecimal value of object identifier from dot noted oid value\n * @name oidIntToHex\n * @memberOf KJUR.asn1.ASN1Util\n * @function\n * @param {String} oidString dot noted string of object identifier\n * @return {String} hexadecimal value of object identifier\n * @since jsrsasign 4.8.3 asn1 1.0.7\n * @description\n * This static method converts from object identifier value string.\n * to hexadecimal string representation of it.\n * @example\n * KJUR.asn1.ASN1Util.oidIntToHex(\"2.5.4.6\") → \"550406\"\n */\n KJUR.asn1.ASN1Util.oidIntToHex = function (oidString) {\n var itox = function (i) {\n var h = i.toString(16)\n if (h.length == 1) h = \"0\" + h\n return h\n }\n\n var roidtox = function (roid) {\n var h = \"\"\n var bi = new BigInteger(roid, 10)\n var b = bi.toString(2)\n var padLen = 7 - (b.length % 7)\n if (padLen == 7) padLen = 0\n var bPad = \"\"\n for (var i = 0; i < padLen; i++) bPad += \"0\"\n b = bPad + b\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7)\n if (i != b.length - 7) b8 = \"1\" + b8\n h += itox(parseInt(b8, 2))\n }\n return h\n }\n\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString\n }\n var h = \"\"\n var a = oidString.split(\".\")\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1])\n h += itox(i0)\n a.splice(0, 2)\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i])\n }\n return h\n }\n\n // ********************************************************************\n // Abstract ASN.1 Classes\n // ********************************************************************\n\n // ********************************************************************\n\n /**\n * base class for ASN.1 DER encoder object\n * @name KJUR.asn1.ASN1Object\n * @class base class for ASN.1 DER encoder object\n * @property {Boolean} isModified flag whether internal data was changed\n * @property {String} hTLV hexadecimal string of ASN.1 TLV\n * @property {String} hT hexadecimal string of ASN.1 TLV tag(T)\n * @property {String} hL hexadecimal string of ASN.1 TLV length(L)\n * @property {String} hV hexadecimal string of ASN.1 TLV value(V)\n * @description\n */\n KJUR.asn1.ASN1Object = function () {\n var hV = \"\"\n\n /**\n * get hexadecimal ASN.1 TLV length(L) bytes from TLV value(V)\n * @name getLengthHexFromValue\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV length(L)\n */\n this.getLengthHexFromValue = function () {\n if (typeof this.hV == \"undefined\" || this.hV == null) {\n throw \"this.hV is null or undefined.\"\n }\n if (this.hV.length % 2 == 1) {\n throw \"value hex must be even length: n=\" + hV.length + \",v=\" + this.hV\n }\n var n = this.hV.length / 2\n var hN = n.toString(16)\n if (hN.length % 2 == 1) {\n hN = \"0\" + hN\n }\n if (n < 128) {\n return hN\n } else {\n var hNlen = hN.length / 2\n if (hNlen > 15) {\n throw (\n \"ASN.1 length too long to represent by 8x: n = \" + n.toString(16)\n )\n }\n var head = 128 + hNlen\n return head.toString(16) + hN\n }\n }\n\n /**\n * get hexadecimal string of ASN.1 TLV bytes\n * @name getEncodedHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV\n */\n this.getEncodedHex = function () {\n if (this.hTLV == null || this.isModified) {\n this.hV = this.getFreshValueHex()\n this.hL = this.getLengthHexFromValue()\n this.hTLV = this.hT + this.hL + this.hV\n this.isModified = false\n //alert(\"first time: \" + this.hTLV);\n }\n return this.hTLV\n }\n\n /**\n * get hexadecimal string of ASN.1 TLV value(V) bytes\n * @name getValueHex\n * @memberOf KJUR.asn1.ASN1Object#\n * @function\n * @return {String} hexadecimal string of ASN.1 TLV value(V) bytes\n */\n this.getValueHex = function () {\n this.getEncodedHex()\n return this.hV\n }\n\n this.getFreshValueHex = function () {\n return \"\"\n }\n }\n\n // == BEGIN DERAbstractString ================================================\n /**\n * base class for ASN.1 DER string classes\n * @name KJUR.asn1.DERAbstractString\n * @class base class for ASN.1 DER string classes\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @property {String} s internal string of value\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\n KJUR.asn1.DERAbstractString = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this)\n\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @return {String} string value of this string object\n */\n this.getString = function () {\n return this.s\n }\n\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newS value by a string to set\n */\n this.setString = function (newS) {\n this.hTLV = null\n this.isModified = true\n this.s = newS\n this.hV = stohex(this.s)\n }\n\n /**\n * set value by a hexadecimal string\n * @name setStringHex\n * @memberOf KJUR.asn1.DERAbstractString#\n * @function\n * @param {String} newHexString value by a hexadecimal string to set\n */\n this.setStringHex = function (newHexString) {\n this.hTLV = null\n this.isModified = true\n this.s = null\n this.hV = newHexString\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n\n if (typeof params != \"undefined\") {\n if (typeof params == \"string\") {\n this.setString(params)\n } else if (typeof params[\"str\"] != \"undefined\") {\n this.setString(params[\"str\"])\n } else if (typeof params[\"hex\"] != \"undefined\") {\n this.setStringHex(params[\"hex\"])\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object)\n // == END DERAbstractString ================================================\n\n // == BEGIN DERAbstractTime ==================================================\n /**\n * base class for ASN.1 DER Generalized/UTCTime class\n * @name KJUR.asn1.DERAbstractTime\n * @class base class for ASN.1 DER Generalized/UTCTime class\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\n KJUR.asn1.DERAbstractTime = function (params) {\n KJUR.asn1.DERAbstractTime.superclass.constructor.call(this)\n\n // --- PRIVATE METHODS --------------------\n this.localDateToUTC = function (d) {\n utc = d.getTime() + d.getTimezoneOffset() * 60000\n var utcDate = new Date(utc)\n return utcDate\n }\n\n /*\n * format date string by Data object\n * @name formatDate\n * @memberOf KJUR.asn1.AbstractTime;\n * @param {Date} dateObject\n * @param {string} type 'utc' or 'gen'\n * @param {boolean} withMillis flag for with millisections or not\n * @description\n * 'withMillis' flag is supported from asn1 1.0.6.\n */\n this.formatDate = function (dateObject, type, withMillis) {\n var pad = this.zeroPadding\n var d = this.localDateToUTC(dateObject)\n var year = String(d.getFullYear())\n if (type == \"utc\") year = year.substr(2, 2)\n var month = pad(String(d.getMonth() + 1), 2)\n var day = pad(String(d.getDate()), 2)\n var hour = pad(String(d.getHours()), 2)\n var min = pad(String(d.getMinutes()), 2)\n var sec = pad(String(d.getSeconds()), 2)\n var s = year + month + day + hour + min + sec\n if (withMillis === true) {\n var millis = d.getMilliseconds()\n if (millis != 0) {\n var sMillis = pad(String(millis), 3)\n sMillis = sMillis.replace(/[0]+$/, \"\")\n s = s + \".\" + sMillis\n }\n }\n return s + \"Z\"\n }\n\n this.zeroPadding = function (s, len) {\n if (s.length >= len) return s\n return new Array(len - s.length + 1).join(\"0\") + s\n }\n\n // --- PUBLIC METHODS --------------------\n /**\n * get string value of this string object\n * @name getString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @return {String} string value of this time object\n */\n this.getString = function () {\n return this.s\n }\n\n /**\n * set value by a string\n * @name setString\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {String} newS value by a string to set such like \"130430235959Z\"\n */\n this.setString = function (newS) {\n this.hTLV = null\n this.isModified = true\n this.s = newS\n this.hV = stohex(newS)\n }\n\n /**\n * set value by a Date object\n * @name setByDateValue\n * @memberOf KJUR.asn1.DERAbstractTime#\n * @function\n * @param {Integer} year year of date (ex. 2013)\n * @param {Integer} month month of date between 1 and 12 (ex. 12)\n * @param {Integer} day day of month\n * @param {Integer} hour hours of date\n * @param {Integer} min minutes of date\n * @param {Integer} sec seconds of date\n */\n this.setByDateValue = function (year, month, day, hour, min, sec) {\n var dateObject = new Date(\n Date.UTC(year, month - 1, day, hour, min, sec, 0)\n )\n this.setByDate(dateObject)\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object)\n // == END DERAbstractTime ==================================================\n\n // == BEGIN DERAbstractStructured ============================================\n /**\n * base class for ASN.1 DER structured class\n * @name KJUR.asn1.DERAbstractStructured\n * @class base class for ASN.1 DER structured class\n * @property {Array} asn1Array internal array of ASN1Object\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\n KJUR.asn1.DERAbstractStructured = function (params) {\n KJUR.asn1.DERAbstractString.superclass.constructor.call(this)\n\n /**\n * set value by array of ASN1Object\n * @name setByASN1ObjectArray\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {array} asn1ObjectArray array of ASN1Object to set\n */\n this.setByASN1ObjectArray = function (asn1ObjectArray) {\n this.hTLV = null\n this.isModified = true\n this.asn1Array = asn1ObjectArray\n }\n\n /**\n * append an ASN1Object to internal array\n * @name appendASN1Object\n * @memberOf KJUR.asn1.DERAbstractStructured#\n * @function\n * @param {ASN1Object} asn1Object to add\n */\n this.appendASN1Object = function (asn1Object) {\n this.hTLV = null\n this.isModified = true\n this.asn1Array.push(asn1Object)\n }\n\n this.asn1Array = new Array()\n if (typeof params != \"undefined\") {\n if (typeof params[\"array\"] != \"undefined\") {\n this.asn1Array = params[\"array\"]\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n // ASN.1 Object Classes\n // ********************************************************************\n\n // ********************************************************************\n /**\n * class for ASN.1 DER Boolean\n * @name KJUR.asn1.DERBoolean\n * @class class for ASN.1 DER Boolean\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\n KJUR.asn1.DERBoolean = function () {\n KJUR.asn1.DERBoolean.superclass.constructor.call(this)\n this.hT = \"01\"\n this.hTLV = \"0101ff\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER Integer\n * @name KJUR.asn1.DERInteger\n * @class class for ASN.1 DER Integer\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • int - specify initial ASN.1 value(V) by integer value
  • \n *
  • bigint - specify initial ASN.1 value(V) by BigInteger object
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\n KJUR.asn1.DERInteger = function (params) {\n KJUR.asn1.DERInteger.superclass.constructor.call(this)\n this.hT = \"02\"\n\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null\n this.isModified = true\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(\n bigIntegerValue\n )\n }\n\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DERInteger\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new BigInteger(String(intValue), 10)\n this.setByBigInteger(bi)\n }\n\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DERInteger#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n * @example\n * new KJUR.asn1.DERInteger(123);\n * new KJUR.asn1.DERInteger({'int': 123});\n * new KJUR.asn1.DERInteger({'hex': '1fad'});\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n\n if (typeof params != \"undefined\") {\n if (typeof params[\"bigint\"] != \"undefined\") {\n this.setByBigInteger(params[\"bigint\"])\n } else if (typeof params[\"int\"] != \"undefined\") {\n this.setByInteger(params[\"int\"])\n } else if (typeof params == \"number\") {\n this.setByInteger(params)\n } else if (typeof params[\"hex\"] != \"undefined\") {\n this.setValueHex(params[\"hex\"])\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER encoded BitString primitive\n * @name KJUR.asn1.DERBitString\n * @class class for ASN.1 DER encoded BitString primitive\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • bin - specify binary string (ex. '10111')
  • \n *
  • array - specify array of boolean (ex. [true,false,true,true])
  • \n *
  • hex - specify hexadecimal string of ASN.1 value(V) including unused bits
  • \n *
  • obj - specify {@link KJUR.asn1.ASN1Util.newObject}\n * argument for \"BitString encapsulates\" structure.
  • \n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: 'obj' parameter have been supported since\n * asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).
\n * @example\n * // default constructor\n * o = new KJUR.asn1.DERBitString();\n * // initialize with binary string\n * o = new KJUR.asn1.DERBitString({bin: \"1011\"});\n * // initialize with boolean array\n * o = new KJUR.asn1.DERBitString({array: [true,false,true,true]});\n * // initialize with hexadecimal string (04 is unused bits)\n * o = new KJUR.asn1.DEROctetString({hex: \"04bac0\"});\n * // initialize with ASN1Util.newObject argument for encapsulated\n * o = new KJUR.asn1.DERBitString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // BIT STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\n KJUR.asn1.DERBitString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj)\n params.hex = \"00\" + o.getEncodedHex()\n }\n KJUR.asn1.DERBitString.superclass.constructor.call(this)\n this.hT = \"03\"\n\n /**\n * set ASN.1 value(V) by a hexadecimal string including unused bits\n * @name setHexValueIncludingUnusedBits\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} newHexStringIncludingUnusedBits\n */\n this.setHexValueIncludingUnusedBits = function (\n newHexStringIncludingUnusedBits\n ) {\n this.hTLV = null\n this.isModified = true\n this.hV = newHexStringIncludingUnusedBits\n }\n\n /**\n * set ASN.1 value(V) by unused bit and hexadecimal string of value\n * @name setUnusedBitsAndHexValue\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {Integer} unusedBits\n * @param {String} hValue\n */\n this.setUnusedBitsAndHexValue = function (unusedBits, hValue) {\n if (unusedBits < 0 || 7 < unusedBits) {\n throw \"unused bits shall be from 0 to 7: u = \" + unusedBits\n }\n var hUnusedBits = \"0\" + unusedBits\n this.hTLV = null\n this.isModified = true\n this.hV = hUnusedBits + hValue\n }\n\n /**\n * set ASN.1 DER BitString by binary string
\n * @name setByBinaryString\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {String} binaryString binary value string (i.e. '10111')\n * @description\n * Its unused bits will be calculated automatically by length of\n * 'binaryValue'.
\n * NOTE: Trailing zeros '0' will be ignored.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray(\"01011\");\n */\n this.setByBinaryString = function (binaryString) {\n binaryString = binaryString.replace(/0+$/, \"\")\n var unusedBits = 8 - (binaryString.length % 8)\n if (unusedBits == 8) unusedBits = 0\n for (var i = 0; i <= unusedBits; i++) {\n binaryString += \"0\"\n }\n var h = \"\"\n for (var i = 0; i < binaryString.length - 1; i += 8) {\n var b = binaryString.substr(i, 8)\n var x = parseInt(b, 2).toString(16)\n if (x.length == 1) x = \"0\" + x\n h += x\n }\n this.hTLV = null\n this.isModified = true\n this.hV = \"0\" + unusedBits + h\n }\n\n /**\n * set ASN.1 TLV value(V) by an array of boolean
\n * @name setByBooleanArray\n * @memberOf KJUR.asn1.DERBitString#\n * @function\n * @param {array} booleanArray array of boolean (ex. [true, false, true])\n * @description\n * NOTE: Trailing falses will be ignored in the ASN.1 DER Object.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.setByBooleanArray([false, true, false, true, true]);\n */\n this.setByBooleanArray = function (booleanArray) {\n var s = \"\"\n for (var i = 0; i < booleanArray.length; i++) {\n if (booleanArray[i] == true) {\n s += \"1\"\n } else {\n s += \"0\"\n }\n }\n this.setByBinaryString(s)\n }\n\n /**\n * generate an array of falses with specified length
\n * @name newFalseArray\n * @memberOf KJUR.asn1.DERBitString\n * @function\n * @param {Integer} nLength length of array to generate\n * @return {array} array of boolean falses\n * @description\n * This static method may be useful to initialize boolean array.\n * @example\n * o = new KJUR.asn1.DERBitString();\n * o.newFalseArray(3) → [false, false, false]\n */\n this.newFalseArray = function (nLength) {\n var a = new Array(nLength)\n for (var i = 0; i < nLength; i++) {\n a[i] = false\n }\n return a\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n\n if (typeof params != \"undefined\") {\n if (\n typeof params == \"string\" &&\n params.toLowerCase().match(/^[0-9a-f]+$/)\n ) {\n this.setHexValueIncludingUnusedBits(params)\n } else if (typeof params[\"hex\"] != \"undefined\") {\n this.setHexValueIncludingUnusedBits(params[\"hex\"])\n } else if (typeof params[\"bin\"] != \"undefined\") {\n this.setByBinaryString(params[\"bin\"])\n } else if (typeof params[\"array\"] != \"undefined\") {\n this.setByBooleanArray(params[\"array\"])\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER OctetString
\n * @name KJUR.asn1.DEROctetString\n * @class class for ASN.1 DER OctetString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * This class provides ASN.1 OctetString simple type.
\n * Supported \"params\" attributes are:\n *
    \n *
  • str - to set a string as a value
  • \n *
  • hex - to set a hexadecimal string as a value
  • \n *
  • obj - to set a encapsulated ASN.1 value by JSON object\n * which is defined in {@link KJUR.asn1.ASN1Util.newObject}
  • \n *
\n * NOTE: A parameter 'obj' have been supported\n * for \"OCTET STRING, encapsulates\" structure.\n * since asn1 1.0.11, jsrsasign 6.1.1 (2016-Sep-25).\n * @see KJUR.asn1.DERAbstractString - superclass\n * @example\n * // default constructor\n * o = new KJUR.asn1.DEROctetString();\n * // initialize with string\n * o = new KJUR.asn1.DEROctetString({str: \"aaa\"});\n * // initialize with hexadecimal string\n * o = new KJUR.asn1.DEROctetString({hex: \"616161\"});\n * // initialize with ASN1Util.newObject argument\n * o = new KJUR.asn1.DEROctetString({obj: {seq: [{int: 3}, {prnstr: 'aaa'}]}});\n * // above generates a ASN.1 data like this:\n * // OCTET STRING, encapsulates {\n * // SEQUENCE {\n * // INTEGER 3\n * // PrintableString 'aaa'\n * // }\n * // }\n */\n KJUR.asn1.DEROctetString = function (params) {\n if (params !== undefined && typeof params.obj !== \"undefined\") {\n var o = KJUR.asn1.ASN1Util.newObject(params.obj)\n params.hex = o.getEncodedHex()\n }\n KJUR.asn1.DEROctetString.superclass.constructor.call(this, params)\n this.hT = \"04\"\n }\n YAHOO.lang.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER Null\n * @name KJUR.asn1.DERNull\n * @class class for ASN.1 DER Null\n * @extends KJUR.asn1.ASN1Object\n * @description\n * @see KJUR.asn1.ASN1Object - superclass\n */\n KJUR.asn1.DERNull = function () {\n KJUR.asn1.DERNull.superclass.constructor.call(this)\n this.hT = \"05\"\n this.hTLV = \"0500\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER ObjectIdentifier\n * @name KJUR.asn1.DERObjectIdentifier\n * @class class for ASN.1 DER ObjectIdentifier\n * @param {Array} params associative array of parameters (ex. {'oid': '2.5.4.5'})\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • oid - specify initial ASN.1 value(V) by a oid string (ex. 2.5.4.13)
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n */\n KJUR.asn1.DERObjectIdentifier = function (params) {\n var itox = function (i) {\n var h = i.toString(16)\n if (h.length == 1) h = \"0\" + h\n return h\n }\n var roidtox = function (roid) {\n var h = \"\"\n var bi = new BigInteger(roid, 10)\n var b = bi.toString(2)\n var padLen = 7 - (b.length % 7)\n if (padLen == 7) padLen = 0\n var bPad = \"\"\n for (var i = 0; i < padLen; i++) bPad += \"0\"\n b = bPad + b\n for (var i = 0; i < b.length - 1; i += 7) {\n var b8 = b.substr(i, 7)\n if (i != b.length - 7) b8 = \"1\" + b8\n h += itox(parseInt(b8, 2))\n }\n return h\n }\n\n KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this)\n this.hT = \"06\"\n\n /**\n * set value by a hexadecimal string\n * @name setValueHex\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} newHexString hexadecimal value of OID bytes\n */\n this.setValueHex = function (newHexString) {\n this.hTLV = null\n this.isModified = true\n this.s = null\n this.hV = newHexString\n }\n\n /**\n * set value by a OID string
\n * @name setValueOidString\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidString OID string (ex. 2.5.4.13)\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueOidString(\"2.5.4.13\");\n */\n this.setValueOidString = function (oidString) {\n if (!oidString.match(/^[0-9.]+$/)) {\n throw \"malformed oid string: \" + oidString\n }\n var h = \"\"\n var a = oidString.split(\".\")\n var i0 = parseInt(a[0]) * 40 + parseInt(a[1])\n h += itox(i0)\n a.splice(0, 2)\n for (var i = 0; i < a.length; i++) {\n h += roidtox(a[i])\n }\n this.hTLV = null\n this.isModified = true\n this.s = null\n this.hV = h\n }\n\n /**\n * set value by a OID name\n * @name setValueName\n * @memberOf KJUR.asn1.DERObjectIdentifier#\n * @function\n * @param {String} oidName OID name (ex. 'serverAuth')\n * @since 1.0.1\n * @description\n * OID name shall be defined in 'KJUR.asn1.x509.OID.name2oidList'.\n * Otherwise raise error.\n * @example\n * o = new KJUR.asn1.DERObjectIdentifier();\n * o.setValueName(\"serverAuth\");\n */\n this.setValueName = function (oidName) {\n var oid = KJUR.asn1.x509.OID.name2oid(oidName)\n if (oid !== \"\") {\n this.setValueOidString(oid)\n } else {\n throw \"DERObjectIdentifier oidName undefined: \" + oidName\n }\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n\n if (params !== undefined) {\n if (typeof params === \"string\") {\n if (params.match(/^[0-2].[0-9.]+$/)) {\n this.setValueOidString(params)\n } else {\n this.setValueName(params)\n }\n } else if (params.oid !== undefined) {\n this.setValueOidString(params.oid)\n } else if (params.hex !== undefined) {\n this.setValueHex(params.hex)\n } else if (params.name !== undefined) {\n this.setValueName(params.name)\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER Enumerated\n * @name KJUR.asn1.DEREnumerated\n * @class class for ASN.1 DER Enumerated\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • int - specify initial ASN.1 value(V) by integer value
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
\n * NOTE: 'params' can be omitted.\n * @example\n * new KJUR.asn1.DEREnumerated(123);\n * new KJUR.asn1.DEREnumerated({int: 123});\n * new KJUR.asn1.DEREnumerated({hex: '1fad'});\n */\n KJUR.asn1.DEREnumerated = function (params) {\n KJUR.asn1.DEREnumerated.superclass.constructor.call(this)\n this.hT = \"0a\"\n\n /**\n * set value by Tom Wu's BigInteger object\n * @name setByBigInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {BigInteger} bigIntegerValue to set\n */\n this.setByBigInteger = function (bigIntegerValue) {\n this.hTLV = null\n this.isModified = true\n this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(\n bigIntegerValue\n )\n }\n\n /**\n * set value by integer value\n * @name setByInteger\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {Integer} integer value to set\n */\n this.setByInteger = function (intValue) {\n var bi = new BigInteger(String(intValue), 10)\n this.setByBigInteger(bi)\n }\n\n /**\n * set value by integer value\n * @name setValueHex\n * @memberOf KJUR.asn1.DEREnumerated#\n * @function\n * @param {String} hexadecimal string of integer value\n * @description\n *
\n * NOTE: Value shall be represented by minimum octet length of\n * two's complement representation.\n */\n this.setValueHex = function (newHexString) {\n this.hV = newHexString\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n\n if (typeof params != \"undefined\") {\n if (typeof params[\"int\"] != \"undefined\") {\n this.setByInteger(params[\"int\"])\n } else if (typeof params == \"number\") {\n this.setByInteger(params)\n } else if (typeof params[\"hex\"] != \"undefined\") {\n this.setValueHex(params[\"hex\"])\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DEREnumerated, KJUR.asn1.ASN1Object)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER UTF8String\n * @name KJUR.asn1.DERUTF8String\n * @class class for ASN.1 DER UTF8String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\n KJUR.asn1.DERUTF8String = function (params) {\n KJUR.asn1.DERUTF8String.superclass.constructor.call(this, params)\n this.hT = \"0c\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER NumericString\n * @name KJUR.asn1.DERNumericString\n * @class class for ASN.1 DER NumericString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\n KJUR.asn1.DERNumericString = function (params) {\n KJUR.asn1.DERNumericString.superclass.constructor.call(this, params)\n this.hT = \"12\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER PrintableString\n * @name KJUR.asn1.DERPrintableString\n * @class class for ASN.1 DER PrintableString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\n KJUR.asn1.DERPrintableString = function (params) {\n KJUR.asn1.DERPrintableString.superclass.constructor.call(this, params)\n this.hT = \"13\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER TeletexString\n * @name KJUR.asn1.DERTeletexString\n * @class class for ASN.1 DER TeletexString\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\n KJUR.asn1.DERTeletexString = function (params) {\n KJUR.asn1.DERTeletexString.superclass.constructor.call(this, params)\n this.hT = \"14\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER IA5String\n * @name KJUR.asn1.DERIA5String\n * @class class for ASN.1 DER IA5String\n * @param {Array} params associative array of parameters (ex. {'str': 'aaa'})\n * @extends KJUR.asn1.DERAbstractString\n * @description\n * @see KJUR.asn1.DERAbstractString - superclass\n */\n KJUR.asn1.DERIA5String = function (params) {\n KJUR.asn1.DERIA5String.superclass.constructor.call(this, params)\n this.hT = \"16\"\n }\n YAHOO.lang.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER UTCTime\n * @name KJUR.asn1.DERUTCTime\n * @class class for ASN.1 DER UTCTime\n * @param {Array} params associative array of parameters (ex. {'str': '130430235959Z'})\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string (ex.'130430235959Z')
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
  • date - specify Date object.
  • \n *
\n * NOTE: 'params' can be omitted.\n *

EXAMPLES

\n * @example\n * d1 = new KJUR.asn1.DERUTCTime();\n * d1.setString('130430125959Z');\n *\n * d2 = new KJUR.asn1.DERUTCTime({'str': '130430125959Z'});\n * d3 = new KJUR.asn1.DERUTCTime({'date': new Date(Date.UTC(2015, 0, 31, 0, 0, 0, 0))});\n * d4 = new KJUR.asn1.DERUTCTime('130430125959Z');\n */\n KJUR.asn1.DERUTCTime = function (params) {\n KJUR.asn1.DERUTCTime.superclass.constructor.call(this, params)\n this.hT = \"17\"\n\n /**\n * set value by a Date object
\n * @name setByDate\n * @memberOf KJUR.asn1.DERUTCTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * o = new KJUR.asn1.DERUTCTime();\n * o.setByDate(new Date(\"2016/12/31\"));\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null\n this.isModified = true\n this.date = dateObject\n this.s = this.formatDate(this.date, \"utc\")\n this.hV = stohex(this.s)\n }\n\n this.getFreshValueHex = function () {\n if (typeof this.date == \"undefined\" && typeof this.s == \"undefined\") {\n this.date = new Date()\n this.s = this.formatDate(this.date, \"utc\")\n this.hV = stohex(this.s)\n }\n return this.hV\n }\n\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str)\n } else if (typeof params == \"string\" && params.match(/^[0-9]{12}Z$/)) {\n this.setString(params)\n } else if (params.hex !== undefined) {\n this.setStringHex(params.hex)\n } else if (params.date !== undefined) {\n this.setByDate(params.date)\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER GeneralizedTime\n * @name KJUR.asn1.DERGeneralizedTime\n * @class class for ASN.1 DER GeneralizedTime\n * @param {Array} params associative array of parameters (ex. {'str': '20130430235959Z'})\n * @property {Boolean} withMillis flag to show milliseconds or not\n * @extends KJUR.asn1.DERAbstractTime\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • str - specify initial ASN.1 value(V) by a string (ex.'20130430235959Z')
  • \n *
  • hex - specify initial ASN.1 value(V) by a hexadecimal string
  • \n *
  • date - specify Date object.
  • \n *
  • millis - specify flag to show milliseconds (from 1.0.6)
  • \n *
\n * NOTE1: 'params' can be omitted.\n * NOTE2: 'withMillis' property is supported from asn1 1.0.6.\n */\n KJUR.asn1.DERGeneralizedTime = function (params) {\n KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, params)\n this.hT = \"18\"\n this.withMillis = false\n\n /**\n * set value by a Date object\n * @name setByDate\n * @memberOf KJUR.asn1.DERGeneralizedTime#\n * @function\n * @param {Date} dateObject Date object to set ASN.1 value(V)\n * @example\n * When you specify UTC time, use 'Date.UTC' method like this:
\n * o1 = new DERUTCTime();\n * o1.setByDate(date);\n *\n * date = new Date(Date.UTC(2015, 0, 31, 23, 59, 59, 0)); #2015JAN31 23:59:59\n */\n this.setByDate = function (dateObject) {\n this.hTLV = null\n this.isModified = true\n this.date = dateObject\n this.s = this.formatDate(this.date, \"gen\", this.withMillis)\n this.hV = stohex(this.s)\n }\n\n this.getFreshValueHex = function () {\n if (this.date === undefined && this.s === undefined) {\n this.date = new Date()\n this.s = this.formatDate(this.date, \"gen\", this.withMillis)\n this.hV = stohex(this.s)\n }\n return this.hV\n }\n\n if (params !== undefined) {\n if (params.str !== undefined) {\n this.setString(params.str)\n } else if (typeof params == \"string\" && params.match(/^[0-9]{14}Z$/)) {\n this.setString(params)\n } else if (params.hex !== undefined) {\n this.setStringHex(params.hex)\n } else if (params.date !== undefined) {\n this.setByDate(params.date)\n }\n if (params.millis === true) {\n this.withMillis = true\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER Sequence\n * @name KJUR.asn1.DERSequence\n * @class class for ASN.1 DER Sequence\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • array - specify array of ASN1Object to set elements of content
  • \n *
\n * NOTE: 'params' can be omitted.\n */\n KJUR.asn1.DERSequence = function (params) {\n KJUR.asn1.DERSequence.superclass.constructor.call(this, params)\n this.hT = \"30\"\n this.getFreshValueHex = function () {\n var h = \"\"\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i]\n h += asn1Obj.getEncodedHex()\n }\n this.hV = h\n return this.hV\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER Set\n * @name KJUR.asn1.DERSet\n * @class class for ASN.1 DER Set\n * @extends KJUR.asn1.DERAbstractStructured\n * @description\n *
\n * As for argument 'params' for constructor, you can specify one of\n * following properties:\n *
    \n *
  • array - specify array of ASN1Object to set elements of content
  • \n *
  • sortflag - flag for sort (default: true). ASN.1 BER is not sorted in 'SET OF'.
  • \n *
\n * NOTE1: 'params' can be omitted.
\n * NOTE2: sortflag is supported since 1.0.5.\n */\n KJUR.asn1.DERSet = function (params) {\n KJUR.asn1.DERSet.superclass.constructor.call(this, params)\n this.hT = \"31\"\n this.sortFlag = true // item shall be sorted only in ASN.1 DER\n this.getFreshValueHex = function () {\n var a = new Array()\n for (var i = 0; i < this.asn1Array.length; i++) {\n var asn1Obj = this.asn1Array[i]\n a.push(asn1Obj.getEncodedHex())\n }\n if (this.sortFlag == true) a.sort()\n this.hV = a.join(\"\")\n return this.hV\n }\n\n if (typeof params != \"undefined\") {\n if (typeof params.sortflag != \"undefined\" && params.sortflag == false)\n this.sortFlag = false\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured)\n\n // ********************************************************************\n /**\n * class for ASN.1 DER TaggedObject\n * @name KJUR.asn1.DERTaggedObject\n * @class class for ASN.1 DER TaggedObject\n * @extends KJUR.asn1.ASN1Object\n * @description\n *
\n * Parameter 'tagNoNex' is ASN.1 tag(T) value for this object.\n * For example, if you find '[1]' tag in a ASN.1 dump,\n * 'tagNoHex' will be 'a1'.\n *
\n * As for optional argument 'params' for constructor, you can specify *ANY* of\n * following properties:\n *
    \n *
  • explicit - specify true if this is explicit tag otherwise false\n * (default is 'true').
  • \n *
  • tag - specify tag (default is 'a0' which means [0])
  • \n *
  • obj - specify ASN1Object which is tagged
  • \n *
\n * @example\n * d1 = new KJUR.asn1.DERUTF8String({'str':'a'});\n * d2 = new KJUR.asn1.DERTaggedObject({'obj': d1});\n * hex = d2.getEncodedHex();\n */\n KJUR.asn1.DERTaggedObject = function (params) {\n KJUR.asn1.DERTaggedObject.superclass.constructor.call(this)\n this.hT = \"a0\"\n this.hV = \"\"\n this.isExplicit = true\n this.asn1Object = null\n\n /**\n * set value by an ASN1Object\n * @name setString\n * @memberOf KJUR.asn1.DERTaggedObject#\n * @function\n * @param {Boolean} isExplicitFlag flag for explicit/implicit tag\n * @param {Integer} tagNoHex hexadecimal string of ASN.1 tag\n * @param {ASN1Object} asn1Object ASN.1 to encapsulate\n */\n this.setASN1Object = function (isExplicitFlag, tagNoHex, asn1Object) {\n this.hT = tagNoHex\n this.isExplicit = isExplicitFlag\n this.asn1Object = asn1Object\n if (this.isExplicit) {\n this.hV = this.asn1Object.getEncodedHex()\n this.hTLV = null\n this.isModified = true\n } else {\n this.hV = null\n this.hTLV = asn1Object.getEncodedHex()\n this.hTLV = this.hTLV.replace(/^../, tagNoHex)\n this.isModified = false\n }\n }\n\n this.getFreshValueHex = function () {\n return this.hV\n }\n\n if (typeof params != \"undefined\") {\n if (typeof params[\"tag\"] != \"undefined\") {\n this.hT = params[\"tag\"]\n }\n if (typeof params[\"explicit\"] != \"undefined\") {\n this.isExplicit = params[\"explicit\"]\n }\n if (typeof params[\"obj\"] != \"undefined\") {\n this.asn1Object = params[\"obj\"]\n this.setASN1Object(this.isExplicit, this.hT, this.asn1Object)\n }\n }\n }\n YAHOO.lang.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object)\n\n /**\n * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object.\n * This object is just a decorator for parsing the key parameter\n * @param {string|Object} key - The key in string format, or an object containing\n * the parameters needed to build a RSAKey object.\n * @constructor\n */\n var JSEncryptRSAKey = /** @class */ (function (_super) {\n __extends(JSEncryptRSAKey, _super)\n function JSEncryptRSAKey(key) {\n var _this = _super.call(this) || this\n // Call the super constructor.\n // RSAKey.call(this);\n // If a key key was provided.\n if (key) {\n // If this is a string...\n if (typeof key === \"string\") {\n _this.parseKey(key)\n } else if (\n JSEncryptRSAKey.hasPrivateKeyProperty(key) ||\n JSEncryptRSAKey.hasPublicKeyProperty(key)\n ) {\n // Set the values for the key.\n _this.parsePropertiesFrom(key)\n }\n }\n return _this\n }\n /**\n * Method to parse a pem encoded string containing both a public or private key.\n * The method will translate the pem encoded string in a der encoded string and\n * will parse private key and public key parameters. This method accepts public key\n * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1).\n *\n * @todo Check how many rsa formats use the same format of pkcs #1.\n *\n * The format is defined as:\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * it's possible to examine the structure of the keys obtained from openssl using\n * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/\n * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer\n * @private\n */\n JSEncryptRSAKey.prototype.parseKey = function (pem) {\n try {\n var modulus = 0\n var public_exponent = 0\n var reHex = /^\\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\\s*)+$/\n var der = reHex.test(pem) ? Hex.decode(pem) : Base64.unarmor(pem)\n var asn1 = ASN1.decode(der)\n // Fixes a bug with OpenSSL 1.0+ private keys\n if (asn1.sub.length === 3) {\n asn1 = asn1.sub[2].sub[0]\n }\n if (asn1.sub.length === 9) {\n // Parse the private key.\n modulus = asn1.sub[1].getHexStringValue() // bigint\n this.n = parseBigInt(modulus, 16)\n public_exponent = asn1.sub[2].getHexStringValue() // int\n this.e = parseInt(public_exponent, 16)\n var private_exponent = asn1.sub[3].getHexStringValue() // bigint\n this.d = parseBigInt(private_exponent, 16)\n var prime1 = asn1.sub[4].getHexStringValue() // bigint\n this.p = parseBigInt(prime1, 16)\n var prime2 = asn1.sub[5].getHexStringValue() // bigint\n this.q = parseBigInt(prime2, 16)\n var exponent1 = asn1.sub[6].getHexStringValue() // bigint\n this.dmp1 = parseBigInt(exponent1, 16)\n var exponent2 = asn1.sub[7].getHexStringValue() // bigint\n this.dmq1 = parseBigInt(exponent2, 16)\n var coefficient = asn1.sub[8].getHexStringValue() // bigint\n this.coeff = parseBigInt(coefficient, 16)\n } else if (asn1.sub.length === 2) {\n // Parse the public key.\n var bit_string = asn1.sub[1]\n var sequence = bit_string.sub[0]\n modulus = sequence.sub[0].getHexStringValue()\n this.n = parseBigInt(modulus, 16)\n public_exponent = sequence.sub[1].getHexStringValue()\n this.e = parseInt(public_exponent, 16)\n } else {\n return false\n }\n return true\n } catch (ex) {\n return false\n }\n }\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa key.\n *\n * The translation follow the ASN.1 notation :\n * RSAPrivateKey ::= SEQUENCE {\n * version Version,\n * modulus INTEGER, -- n\n * publicExponent INTEGER, -- e\n * privateExponent INTEGER, -- d\n * prime1 INTEGER, -- p\n * prime2 INTEGER, -- q\n * exponent1 INTEGER, -- d mod (p1)\n * exponent2 INTEGER, -- d mod (q-1)\n * coefficient INTEGER, -- (inverse of q) mod p\n * }\n * @returns {string} DER Encoded String representing the rsa private key\n * @private\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKey = function () {\n var options = {\n array: [\n new KJUR.asn1.DERInteger({ int: 0 }),\n new KJUR.asn1.DERInteger({ bigint: this.n }),\n new KJUR.asn1.DERInteger({ int: this.e }),\n new KJUR.asn1.DERInteger({ bigint: this.d }),\n new KJUR.asn1.DERInteger({ bigint: this.p }),\n new KJUR.asn1.DERInteger({ bigint: this.q }),\n new KJUR.asn1.DERInteger({ bigint: this.dmp1 }),\n new KJUR.asn1.DERInteger({ bigint: this.dmq1 }),\n new KJUR.asn1.DERInteger({ bigint: this.coeff }),\n ],\n }\n var seq = new KJUR.asn1.DERSequence(options)\n return seq.getEncodedHex()\n }\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateBaseKeyB64 = function () {\n return hex2b64(this.getPrivateBaseKey())\n }\n /**\n * Translate rsa parameters in a hex encoded string representing the rsa public key.\n * The representation follow the ASN.1 notation :\n * PublicKeyInfo ::= SEQUENCE {\n * algorithm AlgorithmIdentifier,\n * PublicKey BIT STRING\n * }\n * Where AlgorithmIdentifier is:\n * AlgorithmIdentifier ::= SEQUENCE {\n * algorithm OBJECT IDENTIFIER, the OID of the enc algorithm\n * parameters ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1)\n * }\n * and PublicKey is a SEQUENCE encapsulated in a BIT STRING\n * RSAPublicKey ::= SEQUENCE {\n * modulus INTEGER, -- n\n * publicExponent INTEGER -- e\n * }\n * @returns {string} DER Encoded String representing the rsa public key\n * @private\n */\n JSEncryptRSAKey.prototype.getPublicBaseKey = function () {\n var first_sequence = new KJUR.asn1.DERSequence({\n array: [\n new KJUR.asn1.DERObjectIdentifier({ oid: \"1.2.840.113549.1.1.1\" }),\n new KJUR.asn1.DERNull(),\n ],\n })\n var second_sequence = new KJUR.asn1.DERSequence({\n array: [\n new KJUR.asn1.DERInteger({ bigint: this.n }),\n new KJUR.asn1.DERInteger({ int: this.e }),\n ],\n })\n var bit_string = new KJUR.asn1.DERBitString({\n hex: \"00\" + second_sequence.getEncodedHex(),\n })\n var seq = new KJUR.asn1.DERSequence({\n array: [first_sequence, bit_string],\n })\n return seq.getEncodedHex()\n }\n /**\n * base64 (pem) encoded version of the DER encoded representation\n * @returns {string} pem encoded representation without header and footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicBaseKeyB64 = function () {\n return hex2b64(this.getPublicBaseKey())\n }\n /**\n * wrap the string in block of width chars. The default value for rsa keys is 64\n * characters.\n * @param {string} str the pem encoded string without header and footer\n * @param {Number} [width=64] - the length the string has to be wrapped at\n * @returns {string}\n * @private\n */\n JSEncryptRSAKey.wordwrap = function (str, width) {\n width = width || 64\n if (!str) {\n return str\n }\n var regex = \"(.{1,\" + width + \"})( +|$\\n?)|(.{1,\" + width + \"})\"\n return str.match(RegExp(regex, \"g\")).join(\"\\n\")\n }\n /**\n * Retrieve the pem encoded private key\n * @returns {string} the pem encoded private key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPrivateKey = function () {\n var key = \"-----BEGIN RSA PRIVATE KEY-----\\n\"\n key += JSEncryptRSAKey.wordwrap(this.getPrivateBaseKeyB64()) + \"\\n\"\n key += \"-----END RSA PRIVATE KEY-----\"\n return key\n }\n /**\n * Retrieve the pem encoded public key\n * @returns {string} the pem encoded public key with header/footer\n * @public\n */\n JSEncryptRSAKey.prototype.getPublicKey = function () {\n var key = \"-----BEGIN PUBLIC KEY-----\\n\"\n key += JSEncryptRSAKey.wordwrap(this.getPublicBaseKeyB64()) + \"\\n\"\n key += \"-----END PUBLIC KEY-----\"\n return key\n }\n /**\n * Check if the object contains the necessary parameters to populate the rsa modulus\n * and public exponent parameters.\n * @param {Object} [obj={}] - An object that may contain the two public key\n * parameters\n * @returns {boolean} true if the object contains both the modulus and the public exponent\n * properties (n and e)\n * @todo check for types of n and e. N should be a parseable bigInt object, E should\n * be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPublicKeyProperty = function (obj) {\n obj = obj || {}\n return obj.hasOwnProperty(\"n\") && obj.hasOwnProperty(\"e\")\n }\n /**\n * Check if the object contains ALL the parameters of an RSA key.\n * @param {Object} [obj={}] - An object that may contain nine rsa key\n * parameters\n * @returns {boolean} true if the object contains all the parameters needed\n * @todo check for types of the parameters all the parameters but the public exponent\n * should be parseable bigint objects, the public exponent should be a parseable integer number\n * @private\n */\n JSEncryptRSAKey.hasPrivateKeyProperty = function (obj) {\n obj = obj || {}\n return (\n obj.hasOwnProperty(\"n\") &&\n obj.hasOwnProperty(\"e\") &&\n obj.hasOwnProperty(\"d\") &&\n obj.hasOwnProperty(\"p\") &&\n obj.hasOwnProperty(\"q\") &&\n obj.hasOwnProperty(\"dmp1\") &&\n obj.hasOwnProperty(\"dmq1\") &&\n obj.hasOwnProperty(\"coeff\")\n )\n }\n /**\n * Parse the properties of obj in the current rsa object. Obj should AT LEAST\n * include the modulus and public exponent (n, e) parameters.\n * @param {Object} obj - the object containing rsa parameters\n * @private\n */\n JSEncryptRSAKey.prototype.parsePropertiesFrom = function (obj) {\n this.n = obj.n\n this.e = obj.e\n if (obj.hasOwnProperty(\"d\")) {\n this.d = obj.d\n this.p = obj.p\n this.q = obj.q\n this.dmp1 = obj.dmp1\n this.dmq1 = obj.dmq1\n this.coeff = obj.coeff\n }\n }\n return JSEncryptRSAKey\n })(RSAKey)\n\n /**\n *\n * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour\n * possible parameters are:\n * - default_key_size {number} default: 1024 the key size in bit\n * - default_public_exponent {string} default: '010001' the hexadecimal representation of the public exponent\n * - log {boolean} default: false whether log warn/error or not\n * @constructor\n */\n var JSEncrypt = /** @class */ (function () {\n function JSEncrypt(options) {\n options = options || {}\n this.default_key_size = parseInt(options.default_key_size, 10) || 1024\n this.default_public_exponent = options.default_public_exponent || \"010001\" // 65537 default openssl public exponent for rsa key type\n this.log = options.log || false\n // The private and public key.\n this.key = null\n }\n /**\n * Method to set the rsa key parameter (one method is enough to set both the public\n * and the private key, since the private key contains the public key paramenters)\n * Log a warning if logs are enabled\n * @param {Object|string} key the pem encoded string or an object (with or without header/footer)\n * @public\n */\n JSEncrypt.prototype.setKey = function (key) {\n if (this.log && this.key) {\n console.warn(\"A key was already set, overriding existing.\")\n }\n this.key = new JSEncryptRSAKey(key)\n }\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPrivateKey = function (privkey) {\n // Create the key.\n this.setKey(privkey)\n }\n /**\n * Proxy method for setKey, for api compatibility\n * @see setKey\n * @public\n */\n JSEncrypt.prototype.setPublicKey = function (pubkey) {\n // Sets the public key.\n this.setKey(pubkey)\n }\n /**\n * Proxy method for RSAKey object's decrypt, decrypt the string using the private\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str base64 encoded crypted string to decrypt\n * @return {string} the decrypted string\n * @public\n */\n JSEncrypt.prototype.decrypt = function (str) {\n // Return the decrypted string.\n try {\n return this.getKey().decrypt(b64tohex(str))\n } catch (ex) {\n return false\n }\n }\n /**\n * Proxy method for RSAKey object's encrypt, encrypt the string using the public\n * components of the rsa key object. Note that if the object was not set will be created\n * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor\n * @param {string} str the string to encrypt\n * @return {string} the encrypted string encoded in base64\n * @public\n */\n JSEncrypt.prototype.encrypt = function (str) {\n // Return the encrypted string.\n try {\n return hex2b64(this.getKey().encrypt(str))\n } catch (ex) {\n return false\n }\n }\n /**\n * Proxy method for RSAKey object's sign.\n * @param {string} str the string to sign\n * @param {function} digestMethod hash method\n * @param {string} digestName the name of the hash algorithm\n * @return {string} the signature encoded in base64\n * @public\n */\n JSEncrypt.prototype.sign = function (str, digestMethod, digestName) {\n // return the RSA signature of 'str' in 'hex' format.\n try {\n return hex2b64(this.getKey().sign(str, digestMethod, digestName))\n } catch (ex) {\n return false\n }\n }\n /**\n * Proxy method for RSAKey object's verify.\n * @param {string} str the string to verify\n * @param {string} signature the signature encoded in base64 to compare the string to\n * @param {function} digestMethod hash method\n * @return {boolean} whether the data and signature match\n * @public\n */\n JSEncrypt.prototype.verify = function (str, signature, digestMethod) {\n // Return the decrypted 'digest' of the signature.\n try {\n return this.getKey().verify(str, b64tohex(signature), digestMethod)\n } catch (ex) {\n return false\n }\n }\n /**\n * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object\n * will be created and returned\n * @param {callback} [cb] the callback to be called if we want the key to be generated\n * in an async fashion\n * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object\n * @public\n */\n JSEncrypt.prototype.getKey = function (cb) {\n // Only create new if it does not exist.\n if (!this.key) {\n // Get a new private key.\n this.key = new JSEncryptRSAKey()\n if (cb && {}.toString.call(cb) === \"[object Function]\") {\n this.key.generateAsync(\n this.default_key_size,\n this.default_public_exponent,\n cb\n )\n return\n }\n // Generate the key.\n this.key.generate(this.default_key_size, this.default_public_exponent)\n }\n return this.key\n }\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateKey()\n }\n /**\n * Returns the pem encoded representation of the private key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the private key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPrivateKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPrivateBaseKeyB64()\n }\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITH header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKey = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicKey()\n }\n /**\n * Returns the pem encoded representation of the public key\n * If the key doesn't exists a new key will be created\n * @returns {string} pem encoded representation of the public key WITHOUT header and footer\n * @public\n */\n JSEncrypt.prototype.getPublicKeyB64 = function () {\n // Return the private representation of this key.\n return this.getKey().getPublicBaseKeyB64()\n }\n JSEncrypt.version = \"3.0.0-rc.1\"\n return JSEncrypt\n })()\n\n window.JSEncrypt = JSEncrypt\n\n JSEncrypt.prototype.encryptLong = function (string) {\n var k = this.getKey()\n try {\n var lt = \"\"\n var ct = \"\"\n //RSA每次加密117bytes,需要辅助方法判断字符串截取位置\n //1.获取字符串截取点\n var bytes = new Array()\n bytes.push(0)\n var byteNo = 0\n var len, c\n len = string.length\n var temp = 0\n for (var i = 0; i < len; i++) {\n c = string.charCodeAt(i)\n if (c >= 0x010000 && c <= 0x10ffff) {\n byteNo += 4\n } else if (c >= 0x000800 && c <= 0x00ffff) {\n byteNo += 3\n } else if (c >= 0x000080 && c <= 0x0007ff) {\n byteNo += 2\n } else {\n byteNo += 1\n }\n if (byteNo % 117 >= 114 || byteNo % 117 == 0) {\n if (byteNo - temp >= 114) {\n bytes.push(i)\n temp = byteNo\n }\n }\n }\n //2.截取字符串并分段加密\n if (bytes.length > 1) {\n for (var i = 0; i < bytes.length - 1; i++) {\n var str\n if (i == 0) {\n str = string.substring(0, bytes[i + 1] + 1)\n } else {\n str = string.substring(bytes[i] + 1, bytes[i + 1] + 1)\n }\n var t1 = k.encrypt(str)\n ct += t1\n }\n if (bytes[bytes.length - 1] != string.length - 1) {\n var lastStr = string.substring(bytes[bytes.length - 1] + 1)\n ct += k.encrypt(lastStr)\n }\n return hex2b64(ct)\n }\n var t = k.encrypt(string)\n var y = hex2b64(t)\n return y\n } catch (ex) {\n return false\n }\n }\n\n exports.JSEncrypt = JSEncrypt\n exports.default = JSEncrypt\n\n Object.defineProperty(exports, \"__esModule\", { value: true })\n })"],"mappings":"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AwC,IAAnBlH,KAAKmH,SACxC,EACOH,CACR,CAvB2B,GAgCxByB,EAAY,CACd,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEEC,GAAS,GAAK,IAAMD,EAAUA,EAAUrH,OAAS,GAGjDuH,EAA2B,WAC7B,SAASA,EAAWlG,EAAGT,EAAGd,GACf,MAALuB,IACE,iBAAmBA,EACrBzC,KAAK4I,WAAWnG,EAAGT,EAAGd,GACR,MAALc,GAAa,iBAAmBS,EACzCzC,KAAK6I,WAAWpG,EAAG,KAEnBzC,KAAK6I,WAAWpG,EAAGT,GAGzB,CAi1CA,OA70CA2G,EAAW9E,UAAUM,SAAW,SAAUnC,GACxC,GAAIhC,KAAKwB,EAAI,EACX,MAA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"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/package.json b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/package.json new file mode 100644 index 000000000..f1adda32d --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-jsencrypt/package.json @@ -0,0 +1,21 @@ +{ + "name": "@authing/miniapp-jsencrypt", + "version": "5.1.16", + "description": "JavaScript encrypt module for miniapp", + "main": "lib/index.js", + "module": "lib/index.js", + "types": "lib/jsencrypt.d.ts", + "files": [ + "lib" + ], + "scripts": { + "release:official": "npm publish --verbose --access public", + "release:alpha": "npm publish --verbose --tag=alpha --access public" + }, + "author": "https://github.com/authing", + "license": "MIT", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + } +} diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/index.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/index.js new file mode 100644 index 000000000..6b1804c7d --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/index.js @@ -0,0 +1 @@ +module.exports = require('./lib/index.js'); \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js new file mode 100644 index 000000000..3a7743042 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js @@ -0,0 +1,2 @@ +import{BigInteger}from"jsbn";const TWO=new BigInteger("2"),THREE=new BigInteger("3");class ECFieldElementFp{constructor(t,i){this.x=i,this.q=t}equals(t){return t===this||this.q.equals(t.q)&&this.x.equals(t.x)}toBigInteger(){return this.x}negate(){return new ECFieldElementFp(this.q,this.x.negate().mod(this.q))}add(t){return new ECFieldElementFp(this.q,this.x.add(t.toBigInteger()).mod(this.q))}subtract(t){return new ECFieldElementFp(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))}multiply(t){return new ECFieldElementFp(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))}divide(t){return new ECFieldElementFp(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))}square(){return new ECFieldElementFp(this.q,this.x.square().mod(this.q))}}class ECPointFp{constructor(t,i,e,s){this.curve=t,this.x=i,this.y=e,this.z=null==s?BigInteger.ONE:s,this.zinv=null}getX(){return null===this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))}getY(){return null===this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))}equals(t){if(t===this)return!0;if(this.isInfinity())return t.isInfinity();if(t.isInfinity())return this.isInfinity();if(!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(BigInteger.ZERO))return!1;return t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(BigInteger.ZERO)}isInfinity(){return null===this.x&&null===this.y||this.z.equals(BigInteger.ZERO)&&!this.y.toBigInteger().equals(BigInteger.ZERO)}negate(){return new ECPointFp(this.curve,this.x,this.y.negate(),this.z)}add(t){if(this.isInfinity())return t;if(t.isInfinity())return this;const i=this.x.toBigInteger(),e=this.y.toBigInteger(),s=this.z,r=t.x.toBigInteger(),n=t.y.toBigInteger(),u=t.z,l=this.curve.q,h=i.multiply(u).mod(l),g=r.multiply(s).mod(l),o=h.subtract(g),m=e.multiply(u).mod(l),a=n.multiply(s).mod(l),d=m.subtract(a);if(BigInteger.ZERO.equals(o))return BigInteger.ZERO.equals(d)?this.twice():this.curve.infinity;const I=h.add(g),c=s.multiply(u).mod(l),y=o.square().mod(l),p=o.multiply(y).mod(l),q=c.multiply(d.square()).subtract(I.multiply(y)).mod(l),B=o.multiply(q).mod(l),f=d.multiply(y.multiply(h).subtract(q)).subtract(m.multiply(p)).mod(l),E=p.multiply(c).mod(l);return new ECPointFp(this.curve,this.curve.fromBigInteger(B),this.curve.fromBigInteger(f),E)}twice(){if(this.isInfinity())return this;if(!this.y.toBigInteger().signum())return this.curve.infinity;const t=this.x.toBigInteger(),i=this.y.toBigInteger(),e=this.z,s=this.curve.q,r=this.curve.a.toBigInteger(),n=t.square().multiply(THREE).add(r.multiply(e.square())).mod(s),u=i.shiftLeft(1).multiply(e).mod(s),l=i.square().mod(s),h=l.multiply(t).multiply(e).mod(s),g=u.square().mod(s),o=n.square().subtract(h.shiftLeft(3)).mod(s),m=u.multiply(o).mod(s),a=n.multiply(h.shiftLeft(2).subtract(o)).subtract(g.shiftLeft(1).multiply(l)).mod(s),d=u.multiply(g).mod(s);return new ECPointFp(this.curve,this.curve.fromBigInteger(m),this.curve.fromBigInteger(a),d)}multiply(t){if(this.isInfinity())return this;if(!t.signum())return this.curve.infinity;const i=t.multiply(THREE),e=this.negate();let s=this;for(let r=i.bitLength()-2;r>0;r--){s=s.twice();const n=i.testBit(r);n!==t.testBit(r)&&(s=s.add(n?this:e))}return s}}class ECCurveFp{constructor(t,i,e){this.q=t,this.a=this.fromBigInteger(i),this.b=this.fromBigInteger(e),this.infinity=new ECPointFp(this,null,null)}equals(t){return t===this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)}fromBigInteger(t){return new ECFieldElementFp(this.q,t)}decodePointHex(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:const i=this.fromBigInteger(new BigInteger(t.substr(2),16));let e=this.fromBigInteger(i.multiply(i.square()).add(i.multiply(this.a)).add(this.b).toBigInteger().modPow(this.q.divide(new BigInteger("4")).add(BigInteger.ONE),this.q));return e.toBigInteger().mod(TWO).equals(new BigInteger(t.substr(0,2),16).subtract(TWO))||(e=e.negate()),new ECPointFp(this,i,e);case 4:case 6:case 7:const s=(t.length-2)/2,r=t.substr(2,s),n=t.substr(s+2,s);return new ECPointFp(this,this.fromBigInteger(new BigInteger(r,16)),this.fromBigInteger(new BigInteger(n,16)));default:return null}}}export{ECPointFp,ECCurveFp}; +//# sourceMappingURL=ec.js.map \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js.map b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js.map new file mode 100644 index 000000000..c1ba405ee --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/ec.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node_modules/@authing/miniapp-sm2encrypt/lib/ec.js","names":["BigInteger","TWO","THREE","ECFieldElementFp","constructor","q","x","this","equals","other","toBigInteger","negate","mod","add","b","subtract","multiply","divide","modInverse","square","ECPointFp","curve","y","z","ONE","zinv","getX","fromBigInteger","getY","isInfinity","ZERO","x1","y1","z1","x2","y2","z2","w1","w2","w3","w4","w5","w6","twice","infinity","w7","w8","w9","w10","w11","x3","y3","z3","signum","a","shiftLeft","k","k3","neg","Q","i","bitLength","k3Bit","testBit","ECCurveFp","decodePointHex","s","parseInt","substr","modPow","len","length","xHex","yHex"],"sources":["node_modules/@authing/miniapp-sm2encrypt/lib/ec.js"],"sourcesContent":["/* eslint-disable no-case-declarations, max-len */\r\nimport { BigInteger } from 'jsbn'\r\n\r\n/**\r\n * thanks for Tom Wu : http://www-cs-students.stanford.edu/~tjw/jsbn/\r\n *\r\n * Basic Javascript Elliptic Curve implementation\r\n * Ported loosely from BouncyCastle's Java EC code\r\n * Only Fp curves implemented for now\r\n */\r\n\r\nconst TWO = new BigInteger('2')\r\nconst THREE = new BigInteger('3')\r\n\r\n/**\r\n * 椭圆曲线域元素\r\n */\r\nclass ECFieldElementFp {\r\n constructor(q, x) {\r\n this.x = x\r\n this.q = q\r\n // TODO if (x.compareTo(q) >= 0) error\r\n }\r\n\r\n /**\r\n * 判断相等\r\n */\r\n equals(other) {\r\n if (other === this) return true\r\n return (this.q.equals(other.q) && this.x.equals(other.x))\r\n }\r\n\r\n /**\r\n * 返回具体数值\r\n */\r\n toBigInteger() {\r\n return this.x\r\n }\r\n\r\n /**\r\n * 取反\r\n */\r\n negate() {\r\n return new ECFieldElementFp(this.q, this.x.negate().mod(this.q))\r\n }\r\n\r\n /**\r\n * 相加\r\n */\r\n add(b) {\r\n return new ECFieldElementFp(this.q, this.x.add(b.toBigInteger()).mod(this.q))\r\n }\r\n\r\n /**\r\n * 相减\r\n */\r\n subtract(b) {\r\n return new ECFieldElementFp(this.q, this.x.subtract(b.toBigInteger()).mod(this.q))\r\n }\r\n\r\n /**\r\n * 相乘\r\n */\r\n multiply(b) {\r\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger()).mod(this.q))\r\n }\r\n\r\n /**\r\n * 相除\r\n */\r\n divide(b) {\r\n return new ECFieldElementFp(this.q, this.x.multiply(b.toBigInteger().modInverse(this.q)).mod(this.q))\r\n }\r\n\r\n /**\r\n * 平方\r\n */\r\n square() {\r\n return new ECFieldElementFp(this.q, this.x.square().mod(this.q))\r\n }\r\n}\r\n\r\nclass ECPointFp {\r\n constructor(curve, x, y, z) {\r\n this.curve = curve\r\n this.x = x\r\n this.y = y\r\n // 标准射影坐标系:zinv == null 或 z * zinv == 1\r\n this.z = z == null ? BigInteger.ONE : z\r\n this.zinv = null\r\n // TODO: compression flag\r\n }\r\n\r\n getX() {\r\n if (this.zinv === null) this.zinv = this.z.modInverse(this.curve.q)\r\n\r\n return this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))\r\n }\r\n\r\n getY() {\r\n if (this.zinv === null) this.zinv = this.z.modInverse(this.curve.q)\r\n\r\n return this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))\r\n }\r\n\r\n /**\r\n * 判断相等\r\n */\r\n equals(other) {\r\n if (other === this) return true\r\n if (this.isInfinity()) return other.isInfinity()\r\n if (other.isInfinity()) return this.isInfinity()\r\n\r\n // u = y2 * z1 - y1 * z2\r\n const u = other.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(other.z)).mod(this.curve.q)\r\n if (!u.equals(BigInteger.ZERO)) return false\r\n\r\n // v = x2 * z1 - x1 * z2\r\n const v = other.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(other.z)).mod(this.curve.q)\r\n return v.equals(BigInteger.ZERO)\r\n }\r\n\r\n /**\r\n * 是否是无穷远点\r\n */\r\n isInfinity() {\r\n if ((this.x === null) && (this.y === null)) return true\r\n return this.z.equals(BigInteger.ZERO) && !this.y.toBigInteger().equals(BigInteger.ZERO)\r\n }\r\n\r\n /**\r\n * 取反,x 轴对称点\r\n */\r\n negate() {\r\n return new ECPointFp(this.curve, this.x, this.y.negate(), this.z)\r\n }\r\n\r\n /**\r\n * 相加\r\n *\r\n * 标准射影坐标系:\r\n *\r\n * λ1 = x1 * z2\r\n * λ2 = x2 * z1\r\n * λ3 = λ1 − λ2\r\n * λ4 = y1 * z2\r\n * λ5 = y2 * z1\r\n * λ6 = λ4 − λ5\r\n * λ7 = λ1 + λ2\r\n * λ8 = z1 * z2\r\n * λ9 = λ3^2\r\n * λ10 = λ3 * λ9\r\n * λ11 = λ8 * λ6^2 − λ7 * λ9\r\n * x3 = λ3 * λ11\r\n * y3 = λ6 * (λ9 * λ1 − λ11) − λ4 * λ10\r\n * z3 = λ10 * λ8\r\n */\r\n add(b) {\r\n if (this.isInfinity()) return b\r\n if (b.isInfinity()) return this\r\n\r\n const x1 = this.x.toBigInteger()\r\n const y1 = this.y.toBigInteger()\r\n const z1 = this.z\r\n const x2 = b.x.toBigInteger()\r\n const y2 = b.y.toBigInteger()\r\n const z2 = b.z\r\n const q = this.curve.q\r\n\r\n const w1 = x1.multiply(z2).mod(q)\r\n const w2 = x2.multiply(z1).mod(q)\r\n const w3 = w1.subtract(w2)\r\n const w4 = y1.multiply(z2).mod(q)\r\n const w5 = y2.multiply(z1).mod(q)\r\n const w6 = w4.subtract(w5)\r\n\r\n if (BigInteger.ZERO.equals(w3)) {\r\n if (BigInteger.ZERO.equals(w6)) {\r\n return this.twice() // this == b,计算自加\r\n }\r\n return this.curve.infinity // this == -b,则返回无穷远点\r\n }\r\n\r\n const w7 = w1.add(w2)\r\n const w8 = z1.multiply(z2).mod(q)\r\n const w9 = w3.square().mod(q)\r\n const w10 = w3.multiply(w9).mod(q)\r\n const w11 = w8.multiply(w6.square()).subtract(w7.multiply(w9)).mod(q)\r\n\r\n const x3 = w3.multiply(w11).mod(q)\r\n const y3 = w6.multiply(w9.multiply(w1).subtract(w11)).subtract(w4.multiply(w10)).mod(q)\r\n const z3 = w10.multiply(w8).mod(q)\r\n\r\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3)\r\n }\r\n\r\n /**\r\n * 自加\r\n *\r\n * 标准射影坐标系:\r\n *\r\n * λ1 = 3 * x1^2 + a * z1^2\r\n * λ2 = 2 * y1 * z1\r\n * λ3 = y1^2\r\n * λ4 = λ3 * x1 * z1\r\n * λ5 = λ2^2\r\n * λ6 = λ1^2 − 8 * λ4\r\n * x3 = λ2 * λ6\r\n * y3 = λ1 * (4 * λ4 − λ6) − 2 * λ5 * λ3\r\n * z3 = λ2 * λ5\r\n */\r\n twice() {\r\n if (this.isInfinity()) return this\r\n if (!this.y.toBigInteger().signum()) return this.curve.infinity\r\n\r\n const x1 = this.x.toBigInteger()\r\n const y1 = this.y.toBigInteger()\r\n const z1 = this.z\r\n const q = this.curve.q\r\n const a = this.curve.a.toBigInteger()\r\n\r\n const w1 = x1.square().multiply(THREE).add(a.multiply(z1.square())).mod(q)\r\n const w2 = y1.shiftLeft(1).multiply(z1).mod(q)\r\n const w3 = y1.square().mod(q)\r\n const w4 = w3.multiply(x1).multiply(z1).mod(q)\r\n const w5 = w2.square().mod(q)\r\n const w6 = w1.square().subtract(w4.shiftLeft(3)).mod(q)\r\n\r\n const x3 = w2.multiply(w6).mod(q)\r\n const y3 = w1.multiply(w4.shiftLeft(2).subtract(w6)).subtract(w5.shiftLeft(1).multiply(w3)).mod(q)\r\n const z3 = w2.multiply(w5).mod(q)\r\n\r\n return new ECPointFp(this.curve, this.curve.fromBigInteger(x3), this.curve.fromBigInteger(y3), z3)\r\n }\r\n\r\n /**\r\n * 倍点计算\r\n */\r\n multiply(k) {\r\n if (this.isInfinity()) return this\r\n if (!k.signum()) return this.curve.infinity\r\n\r\n // 使用加减法\r\n const k3 = k.multiply(THREE)\r\n const neg = this.negate()\r\n let Q = this\r\n\r\n for (let i = k3.bitLength() - 2; i > 0; i--) {\r\n Q = Q.twice()\r\n\r\n const k3Bit = k3.testBit(i)\r\n const kBit = k.testBit(i)\r\n\r\n if (k3Bit !== kBit) {\r\n Q = Q.add(k3Bit ? this : neg)\r\n }\r\n }\r\n\r\n return Q\r\n }\r\n}\r\n\r\n/**\r\n * 椭圆曲线 y^2 = x^3 + ax + b\r\n */\r\nclass ECCurveFp {\r\n constructor(q, a, b) {\r\n this.q = q\r\n this.a = this.fromBigInteger(a)\r\n this.b = this.fromBigInteger(b)\r\n this.infinity = new ECPointFp(this, null, null) // 无穷远点\r\n }\r\n\r\n /**\r\n * 判断两个椭圆曲线是否相等\r\n */\r\n equals(other) {\r\n if (other === this) return true\r\n return (this.q.equals(other.q) && this.a.equals(other.a) && this.b.equals(other.b))\r\n }\r\n\r\n /**\r\n * 生成椭圆曲线域元素\r\n */\r\n fromBigInteger(x) {\r\n return new ECFieldElementFp(this.q, x)\r\n }\r\n\r\n /**\r\n * 解析 16 进制串为椭圆曲线点\r\n */\r\n decodePointHex(s) {\r\n switch (parseInt(s.substr(0, 2), 16)) {\r\n // 第一个字节\r\n case 0:\r\n return this.infinity\r\n case 2:\r\n case 3:\r\n // 压缩\r\n const x = this.fromBigInteger(new BigInteger(s.substr(2), 16))\r\n // 对 p ≡ 3 (mod4),即存在正整数 u,使得 p = 4u + 3\r\n // 计算 y = (√ (x^3 + ax + b) % p)^(u + 1) modp\r\n let y = this.fromBigInteger(x.multiply(x.square()).add(\r\n x.multiply(this.a)\r\n ).add(this.b).toBigInteger()\r\n .modPow(\r\n this.q.divide(new BigInteger('4')).add(BigInteger.ONE), this.q\r\n ))\r\n // 算出结果 2 进制最后 1 位不等于第 1 个字节减 2 则取反\r\n if (!y.toBigInteger().mod(TWO).equals(new BigInteger(s.substr(0, 2), 16).subtract(TWO))) {\r\n y = y.negate()\r\n }\r\n return new ECPointFp(this, x, y)\r\n case 4:\r\n case 6:\r\n case 7:\r\n const len = (s.length - 2) / 2\r\n const xHex = s.substr(2, len)\r\n const yHex = s.substr(len + 2, len)\r\n\r\n return new ECPointFp(this, this.fromBigInteger(new BigInteger(xHex, 16)), this.fromBigInteger(new BigInteger(yHex, 16)))\r\n default:\r\n // 不支持\r\n return null\r\n }\r\n }\r\n}\r\n\r\nexport {\r\n ECPointFp,\r\n ECCurveFp\r\n}\r\n"],"mappings":"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"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js new file mode 100644 index 000000000..1fedfa3c8 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js @@ -0,0 +1,2 @@ +import{doEncrypt}from"./sm2";export function encryptFunction(n,r){return doEncrypt(n,r)} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js.map b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js.map new file mode 100644 index 000000000..7a9639960 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node_modules/@authing/miniapp-sm2encrypt/lib/index.js","names":["doEncrypt","encryptFunction","plainText","publicKey"],"sources":["node_modules/@authing/miniapp-sm2encrypt/lib/index.js"],"sourcesContent":["import { doEncrypt } from './sm2'\n\nexport function encryptFunction (plainText, publicKey) {\n return doEncrypt(plainText, publicKey)\n}\n"],"mappings":"OAASA,cAAiB,eAEnB,SAASC,gBAAiBC,EAAWC,GAC1C,OAAOH,UAAUE,EAAWC,EAC9B"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm2.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm2.js new file mode 100644 index 000000000..3b3d04905 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm2.js @@ -0,0 +1,2 @@ +import{BigInteger}from"jsbn";import*as _ from"./utils";import{sm3}from"./sm3";const C1C2C3=0;function doEncrypt(t,e,r=1){t="string"==typeof t?_.hexToArray(_.utf8ToHex(t)):Array.prototype.slice.call(t),e=_.getGlobalCurve().decodePointHex(e);const o=_.generateKeyPairHex(),n=new BigInteger(o.privateKey,16);let a=o.publicKey;a.length>128&&(a=a.substr(a.length-128));const i=e.multiply(n),l=_.hexToArray(_.leftPad(i.getX().toBigInteger().toRadix(16),64)),g=_.hexToArray(_.leftPad(i.getY().toBigInteger().toRadix(16),64)),c=_.arrayToHex(sm3([].concat(l,t,g)));let s=1,y=0,p=[];const m=[].concat(l,g),x=()=>{p=sm3([...m,s>>24&255,s>>16&255,s>>8&255,255&s]),s++,y=0};x();for(let e=0,r=t.length;e 128) c1 = c1.substr(c1.length - 128)\n\n // (x2, y2) = k * publicKey\n const p = publicKey.multiply(k)\n const x2 = _.hexToArray(_.leftPad(p.getX().toBigInteger().toRadix(16), 64))\n const y2 = _.hexToArray(_.leftPad(p.getY().toBigInteger().toRadix(16), 64))\n\n // c3 = hash(x2 || msg || y2)\n const c3 = _.arrayToHex(sm3([].concat(x2, msg, y2)))\n\n let ct = 1\n let offset = 0\n let t = [] // 256 位\n const z = [].concat(x2, y2)\n const nextT = () => {\n // (1) Hai = hash(z || ct)\n // (2) ct++\n t = sm3([...z, ct >> 24 & 0x00ff, ct >> 16 & 0x00ff, ct >> 8 & 0x00ff, ct & 0x00ff])\n ct++\n offset = 0\n }\n nextT() // 先生成 Ha1\n\n for (let i = 0, len = msg.length; i < len; i++) {\n // t = Ha1 || Ha2 || Ha3 || Ha4\n if (offset === t.length) nextT()\n\n // c2 = msg ^ t\n msg[i] ^= t[offset++] & 0xff\n }\n const c2 = _.arrayToHex(msg)\n\n return cipherMode === C1C2C3 ? c1 + c2 + c3 : c1 + c3 + c2\n}\n\nexport {\n doEncrypt\n}\n"],"mappings":"OACSA,eAAkB,iBACfC,MAAO,iBACVC,QAAW,QAEpB,MAAMC,OAAS,EAKf,SAASC,UAAUC,EAAKC,EAAWC,EAAa,GAC9CF,EAAqB,iBAARA,EAAmBJ,EAAEO,WAAWP,EAAEQ,UAAUJ,IAAQK,MAAMC,UAAUC,MAAMC,KAAKR,GAC5FC,EAAYL,EAAEa,iBAAiBC,eAAeT,GAE9C,MAAMU,EAAUf,EAAEgB,qBACZC,EAAI,IAAIlB,WAAWgB,EAAQG,WAAY,IAG7C,IAAIC,EAAKJ,EAAQV,UACbc,EAAGC,OAAS,MAAKD,EAAKA,EAAGE,OAAOF,EAAGC,OAAS,MAGhD,MAAME,EAAIjB,EAAUkB,SAASN,GACvBO,EAAKxB,EAAEO,WAAWP,EAAEyB,QAAQH,EAAEI,OAAOC,eAAeC,QAAQ,IAAK,KACjEC,EAAK7B,EAAEO,WAAWP,EAAEyB,QAAQH,EAAEQ,OAAOH,eAAeC,QAAQ,IAAK,KAGjEG,EAAK/B,EAAEgC,WAAW/B,IAAI,GAAGgC,OAAOT,EAAIpB,EAAKyB,KAE/C,IAAIK,EAAK,EACLC,EAAS,EACTC,EAAI,GACR,MAAMC,EAAI,GAAGJ,OAAOT,EAAIK,GAClBS,EAAQ,KAGZF,EAAInC,IAAI,IAAIoC,EAAGH,GAAM,GAAK,IAAQA,GAAM,GAAK,IAAQA,GAAM,EAAI,IAAa,IAALA,IACvEA,IACAC,EAAS,GAEXG,IAEA,IAAK,IAAIC,EAAI,EAAGC,EAAMpC,EAAIgB,OAAQmB,EAAIC,EAAKD,IAErCJ,IAAWC,EAAEhB,QAAQkB,IAGzBlC,EAAImC,IAAoB,IAAdH,EAAED,KAEd,MAAMM,EAAKzC,EAAEgC,WAAW5B,GAExB,OA9Ca,IA8CNE,EAAwBa,EAAKsB,EAAKV,EAAKZ,EAAKY,EAAKU,CAC1D,QAGEtC"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js new file mode 100644 index 000000000..53c745b53 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js @@ -0,0 +1,2 @@ +function rotl(t,o){const n=[],r=~~(o/8),e=o%8;for(let o=0,l=t.length;o>>8-e&255);return n}function xor(t,o){const n=[];for(let r=t.length-1;r>=0;r--)n[r]=255&(t[r]^o[r]);return n}function and(t,o){const n=[];for(let r=t.length-1;r>=0;r--)n[r]=t[r]&o[r]&255;return n}function or(t,o){const n=[];for(let r=t.length-1;r>=0;r--)n[r]=255&(t[r]|o[r]);return n}function add(t,o){const n=[];let r=0;for(let e=t.length-1;e>=0;e--){const l=t[e]+o[e]+r;l>255?(r=1,n[e]=255&l):(r=0,n[e]=255&l)}return n}function not(t){const o=[];for(let n=t.length-1;n>=0;n--)o[n]=255&~t[n];return o}function P0(t){return xor(xor(t,rotl(t,9)),rotl(t,17))}function P1(t){return xor(xor(t,rotl(t,15)),rotl(t,23))}function FF(t,o,n,r){return r>=0&&r<=15?xor(xor(t,o),n):or(or(and(t,o),and(t,n)),and(o,n))}function GG(t,o,n,r){return r>=0&&r<=15?xor(xor(t,o),n):or(and(t,o),and(not(t),n))}function CF(t,o){const n=[],r=[];for(let t=0;t<16;t++){const r=4*t;n.push(o.slice(r,r+4))}for(let t=16;t<68;t++)n.push(xor(xor(P1(xor(xor(n[t-16],n[t-9]),rotl(n[t-3],15))),rotl(n[t-13],7)),n[t-6]));for(let t=0;t<64;t++)r.push(xor(n[t],n[t+4]));const e=[121,204,69,25],l=[122,135,157,138];let c,s,a,u,d=t.slice(0,4),f=t.slice(4,8),i=t.slice(8,12),h=t.slice(12,16),x=t.slice(16,20),g=t.slice(20,24),P=t.slice(24,28),m=t.slice(28,32);for(let t=0;t<64;t++){const o=t>=0&&t<=15?e:l;c=rotl(add(add(rotl(d,12),x),rotl(o,t)),7),s=xor(c,rotl(d,12)),a=add(add(add(FF(d,f,i,t),h),s),r[t]),u=add(add(add(GG(x,g,P,t),m),c),n[t]),h=i,i=rotl(f,9),f=d,d=a,m=P,P=rotl(g,19),g=x,x=P0(u)}return xor([].concat(d,f,i,h,x,g,P,m),t)}function sm3(t){let o=8*t.length,n=o%512;n=n>=448?512-n%448-1:448-n-1;const r=new Array((n-7)/8);for(let t=0,o=r.length;t=0;t--)if(o.length>8){const n=o.length-8;e[t]=parseInt(o.substr(n),2),o=o.substr(0,n)}else o.length>0?(e[t]=parseInt(o,2),o=""):e[t]=0;const l=[].concat(t,[128],r,e),c=l.length/64;let s=[115,128,22,111,73,20,178,185,23,36,66,215,218,138,6,0,169,111,48,188,22,49,56,170,227,141,238,77,176,251,14,78];for(let t=0;t64&&(o=sm3(o));o.length<64;)o.push(0);let n=xor(o,iPad).concat(t);n=sm3(n);return n=xor(o,oPad).concat(n),n=sm3(n),n}export{sm3,hmac}; +//# sourceMappingURL=sm3.js.map \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js.map b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js.map new file mode 100644 index 000000000..23652f8d7 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/sm3.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node_modules/@authing/miniapp-sm2encrypt/lib/sm3.js","names":["rotl","x","n","result","a","b","i","len","length","xor","y","and","or","add","temp","sum","not","P0","X","P1","FF","Y","Z","j","GG","CF","V","Bi","W","M","start","push","slice","T1","T2","SS1","SS2","TT1","TT2","A","B","C","D","E","F","G","H","T","concat","sm3","array","k","kArr","Array","lenArr","toString","parseInt","substr","m","blockLen","iPad","oPad","hmac","input","key","hash"],"sources":["node_modules/@authing/miniapp-sm2encrypt/lib/sm3.js"],"sourcesContent":["/**\n * 循环左移\n */\nfunction rotl(x, n) {\n const result = []\n const a = ~~(n / 8) // 偏移 a 字节\n const b = n % 8 // 偏移 b 位\n for (let i = 0, len = x.length; i < len; i++) {\n // current << b + (current + 1) >>> (8 - b)\n result[i] = ((x[(i + a) % len] << b) & 0xff) + ((x[(i + a + 1) % len] >>> (8 - b)) & 0xff)\n }\n return result\n}\n\n/**\n * 二进制异或运算\n */\nfunction xor(x, y) {\n const result = []\n for (let i = x.length - 1; i >= 0; i--) result[i] = (x[i] ^ y[i]) & 0xff\n return result\n}\n\n/**\n * 二进制与运算\n */\nfunction and(x, y) {\n const result = []\n for (let i = x.length - 1; i >= 0; i--) result[i] = (x[i] & y[i]) & 0xff\n return result\n}\n\n/**\n * 二进制或运算\n */\nfunction or(x, y) {\n const result = []\n for (let i = x.length - 1; i >= 0; i--) result[i] = (x[i] | y[i]) & 0xff\n return result\n}\n\n/**\n * 二进制与运算\n */\nfunction add(x, y) {\n const result = []\n let temp = 0\n for (let i = x.length - 1; i >= 0; i--) {\n const sum = x[i] + y[i] + temp\n if (sum > 0xff) {\n temp = 1\n result[i] = sum & 0xff\n } else {\n temp = 0\n result[i] = sum & 0xff\n }\n }\n return result\n}\n\n/**\n * 二进制非运算\n */\nfunction not(x) {\n const result = []\n for (let i = x.length - 1; i >= 0; i--) result[i] = (~x[i]) & 0xff\n return result\n}\n\n/**\n * 压缩函数中的置换函数 P1(X) = X xor (X <<< 9) xor (X <<< 17)\n */\nfunction P0(X) {\n return xor(xor(X, rotl(X, 9)), rotl(X, 17))\n}\n\n/**\n * 消息扩展中的置换函数 P1(X) = X xor (X <<< 15) xor (X <<< 23)\n */\nfunction P1(X) {\n return xor(xor(X, rotl(X, 15)), rotl(X, 23))\n}\n\n/**\n * 布尔函数 FF\n */\nfunction FF(X, Y, Z, j) {\n return j >= 0 && j <= 15 ? xor(xor(X, Y), Z) : or(or(and(X, Y), and(X, Z)), and(Y, Z))\n}\n\n/**\n * 布尔函数 GG\n */\nfunction GG(X, Y, Z, j) {\n return j >= 0 && j <= 15 ? xor(xor(X, Y), Z) : or(and(X, Y), and(not(X), Z))\n}\n\n/**\n * 压缩函数\n */\nfunction CF(V, Bi) {\n // 消息扩展\n const W = []\n const M = [] // W'\n\n // 将消息分组B划分为 16 个字 W0, W1,……,W15\n for (let i = 0; i < 16; i++) {\n const start = i * 4\n W.push(Bi.slice(start, start + 4))\n }\n\n // W16 ~ W67:W[j] <- P1(W[j−16] xor W[j−9] xor (W[j−3] <<< 15)) xor (W[j−13] <<< 7) xor W[j−6]\n for (let j = 16; j < 68; j++) {\n W.push(xor(\n xor(\n P1(\n xor(\n xor(W[j - 16], W[j - 9]),\n rotl(W[j - 3], 15)\n )\n ),\n rotl(W[j - 13], 7)\n ),\n W[j - 6]\n ))\n }\n\n // W′0 ~ W′63:W′[j] = W[j] xor W[j+4]\n for (let j = 0; j < 64; j++) {\n M.push(xor(W[j], W[j + 4]))\n }\n\n // 压缩\n const T1 = [0x79, 0xcc, 0x45, 0x19]\n const T2 = [0x7a, 0x87, 0x9d, 0x8a]\n // 字寄存器\n let A = V.slice(0, 4)\n let B = V.slice(4, 8)\n let C = V.slice(8, 12)\n let D = V.slice(12, 16)\n let E = V.slice(16, 20)\n let F = V.slice(20, 24)\n let G = V.slice(24, 28)\n let H = V.slice(28, 32)\n // 中间变量\n let SS1\n let SS2\n let TT1\n let TT2\n for (let j = 0; j < 64; j++) {\n const T = j >= 0 && j <= 15 ? T1 : T2\n SS1 = rotl(add(\n add(rotl(A, 12), E),\n rotl(T, j)\n ), 7)\n SS2 = xor(SS1, rotl(A, 12))\n\n TT1 = add(add(add(FF(A, B, C, j), D), SS2), M[j])\n TT2 = add(add(add(GG(E, F, G, j), H), SS1), W[j])\n\n D = C\n C = rotl(B, 9)\n B = A\n A = TT1\n H = G\n G = rotl(F, 19)\n F = E\n E = P0(TT2)\n }\n\n return xor([].concat(A, B, C, D, E, F, G, H), V)\n}\n\n/**\n * sm3 本体\n */\nfunction sm3(array) {\n // 填充\n let len = array.length * 8\n\n // k 是满足 len + 1 + k = 448mod512 的最小的非负整数\n let k = len % 512\n // 如果 448 <= (512 % len) < 512,需要多补充 (len % 448) 比特'0'以满足总比特长度为512的倍数\n k = k >= 448 ? 512 - (k % 448) - 1 : 448 - k - 1\n\n // 填充\n const kArr = new Array((k - 7) / 8)\n for (let i = 0, len = kArr.length; i < len; i++) kArr[i] = 0\n const lenArr = []\n len = len.toString(2)\n for (let i = 7; i >= 0; i--) {\n if (len.length > 8) {\n const start = len.length - 8\n lenArr[i] = parseInt(len.substr(start), 2)\n len = len.substr(0, start)\n } else if (len.length > 0) {\n lenArr[i] = parseInt(len, 2)\n len = ''\n } else {\n lenArr[i] = 0\n }\n }\n const m = [].concat(array, [0x80], kArr, lenArr)\n\n // 迭代压缩\n const n = m.length / 64\n let V = [0x73, 0x80, 0x16, 0x6f, 0x49, 0x14, 0xb2, 0xb9, 0x17, 0x24, 0x42, 0xd7, 0xda, 0x8a, 0x06, 0x00, 0xa9, 0x6f, 0x30, 0xbc, 0x16, 0x31, 0x38, 0xaa, 0xe3, 0x8d, 0xee, 0x4d, 0xb0, 0xfb, 0x0e, 0x4e]\n for (let i = 0; i < n; i++) {\n const start = 64 * i\n const B = m.slice(start, start + 64)\n V = CF(V, B)\n }\n return V\n}\n\n/**\n * hmac 实现\n */\nconst blockLen = 64\nconst iPad = new Array(blockLen)\nconst oPad = new Array(blockLen)\nfor (let i = 0; i < blockLen; i++) {\n iPad[i] = 0x36\n oPad[i] = 0x5c\n}\nfunction hmac(input, key) {\n // 密钥填充\n if (key.length > blockLen) key = sm3(key)\n while (key.length < blockLen) key.push(0)\n\n const iPadKey = xor(key, iPad)\n let hash = iPadKey.concat(input)\n hash = sm3(hash)\n\n const oPadKey = xor(key, oPad)\n hash = oPadKey.concat(hash)\n hash = sm3(hash)\n\n return hash\n}\n\nexport {\n sm3,\n hmac\n}"],"mappings":"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"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/utils.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/utils.js new file mode 100644 index 000000000..e891a96c5 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/lib/utils.js @@ -0,0 +1,2 @@ +import{BigInteger,SecureRandom}from"jsbn";import{ECCurveFp}from"./ec";const rng=new SecureRandom,{curve:curve,G:G,n:n}=generateEcparam();function getGlobalCurve(){return curve}function generateEcparam(){const e=new BigInteger("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF",16),F=new BigInteger("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC",16),t=new BigInteger("28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93",16),n=new ECCurveFp(e,F,t),r=n.decodePointHex("0432C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0");return{curve:n,G:r,n:new BigInteger("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123",16)}}function generateKeyPairHex(e,F,t){const r=(e?new BigInteger(e,F,t):new BigInteger(n.bitLength(),rng)).mod(n.subtract(BigInteger.ONE)).add(BigInteger.ONE),o=leftPad(r.toString(16),64),c=G.multiply(r);return{privateKey:o,publicKey:"04"+leftPad(c.getX().toBigInteger().toString(16),64)+leftPad(c.getY().toBigInteger().toString(16),64)}}function compressPublicKeyHex(e){if(130!==e.length)throw new Error("Invalid public key to compress");const F=(e.length-2)/2,t=e.substr(2,F);let n="03";return new BigInteger(e.substr(F+2,F),16).mod(new BigInteger("2")).equals(BigInteger.ZERO)&&(n="02"),n+t}function utf8ToHex(e){const F=(e=unescape(encodeURIComponent(e))).length,t=[];for(let n=0;n>>2]|=(255&e.charCodeAt(n))<<24-n%4*8;const n=[];for(let e=0;e>>2]>>>24-e%4*8&255;n.push((F>>>4).toString(16)),n.push((15&F).toString(16))}return n.join("")}function leftPad(e,F){return e.length>=F?e:new Array(F-e.length+1).join("0")+e}function arrayToHex(e){return e.map((e=>1===(e=e.toString(16)).length?"0"+e:e)).join("")}function arrayToUtf8(e){const F=[];let t=0;for(let n=0;n<2*e.length;n+=2)F[n>>>3]|=parseInt(e[t],10)<<24-n%8*4,t++;try{const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push(String.fromCharCode(e))}return decodeURIComponent(escape(t.join("")))}catch(e){throw new Error("Malformed UTF-8 data")}}function hexToArray(e){const F=[];let t=e.length;t%2!=0&&(e=leftPad(e,t+1)),t=e.length;for(let n=0;n>> 2] |= (input.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8)\n }\n\n // 转换到16进制\n const hexChars = []\n for (let i = 0; i < length; i++) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n hexChars.push((bite >>> 4).toString(16))\n hexChars.push((bite & 0x0f).toString(16))\n }\n\n return hexChars.join('')\n}\n\n/**\n * 补全16进制字符串\n */\nfunction leftPad(input, num) {\n if (input.length >= num) return input\n\n return (new Array(num - input.length + 1)).join('0') + input\n}\n\n/**\n * 转成16进制串\n */\nfunction arrayToHex(arr) {\n return arr.map(item => {\n item = item.toString(16)\n return item.length === 1 ? '0' + item : item\n }).join('')\n}\n\n/**\n * 转成utf8串\n */\nfunction arrayToUtf8(arr) {\n const words = []\n let j = 0\n for (let i = 0; i < arr.length * 2; i += 2) {\n words[i >>> 3] |= parseInt(arr[j], 10) << (24 - (i % 8) * 4)\n j++\n }\n\n try {\n const latin1Chars = []\n\n for (let i = 0; i < arr.length; i++) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n latin1Chars.push(String.fromCharCode(bite))\n }\n\n return decodeURIComponent(escape(latin1Chars.join('')))\n } catch (e) {\n throw new Error('Malformed UTF-8 data')\n }\n}\n\n/**\n * 转成字节数组\n */\nfunction hexToArray(hexStr) {\n const words = []\n let hexStrLength = hexStr.length\n\n if (hexStrLength % 2 !== 0) {\n hexStr = leftPad(hexStr, hexStrLength + 1)\n }\n\n hexStrLength = hexStr.length\n\n for (let i = 0; i < hexStrLength; i += 2) {\n words.push(parseInt(hexStr.substr(i, 2), 16))\n }\n return words\n}\n\n/**\n * 验证公钥是否为椭圆曲线上的点\n */\nfunction verifyPublicKey(publicKey) {\n const point = curve.decodePointHex(publicKey)\n if (!point) return false\n\n const x = point.getX()\n const y = point.getY()\n\n // 验证 y^2 是否等于 x^3 + ax + b\n return y.square().equals(x.multiply(x.square()).add(x.multiply(curve.a)).add(curve.b))\n}\n\n/**\n * 验证公钥是否等价,等价返回true\n */\nfunction comparePublicKeyHex(publicKey1, publicKey2) {\n const point1 = curve.decodePointHex(publicKey1)\n if (!point1) return false\n\n const point2 = curve.decodePointHex(publicKey2)\n if (!point2) return false\n\n return point1.equals(point2)\n}\n\nexport {\n getGlobalCurve,\n generateEcparam,\n generateKeyPairHex,\n compressPublicKeyHex,\n utf8ToHex,\n leftPad,\n arrayToHex,\n arrayToUtf8,\n hexToArray,\n verifyPublicKey,\n comparePublicKeyHex,\n}\n"],"mappings":"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"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/package.json b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/package.json new file mode 100644 index 000000000..ae77a3bdc --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-sm2encrypt/package.json @@ -0,0 +1,25 @@ +{ + "name": "@authing/miniapp-sm2encrypt", + "version": "5.1.16", + "description": "JavaScript sm2 encrypt module for miniapp", + "main": "lib/index.js", + "module": "lib/index.js", + "types": "lib/sm2encrypt.d.ts", + "files": [ + "lib" + ], + "scripts": { + "autoinstall": "npm ci", + "release:official": "npm publish --verbose --access public", + "release:alpha": "npm publish --verbose --tag=alpha --access public" + }, + "author": "https://github.com/authing", + "license": "MIT", + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "dependencies": { + "jsbn": "^1.1.0" + } +} diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/index.js b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/index.js new file mode 100644 index 000000000..6a1818e82 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/index.js @@ -0,0 +1 @@ +module.exports = require('./dist/bundle-tt.js'); \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/package.json b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/package.json new file mode 100644 index 000000000..fafc48266 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/@authing/miniapp-tt/package.json @@ -0,0 +1,27 @@ +{ + "name": "@authing/miniapp-tt", + "version": "5.1.16-alpha.4", + "description": "Authing miniapp JS SDK for TT", + "main": "dist/bundle-tt.js", + "types": "dist/typings/src/index.d.ts", + "author": "https://github.com/authing", + "license": "MIT", + "files": [ + "dist" + ], + "scripts": { + "release:official": "npm publish --verbose --access public", + "release:alpha": "npm publish --verbose --tag=alpha --access public" + }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org" + }, + "repository": { + "type": "git", + "url": "https://github.com/authing/authing-js-sdk" + }, + "bugs": { + "url": "https://github.com/authing/authing-js-sdk/issues" + } +} diff --git a/examples/miniapp-tt/miniprogram_npm/jsbn/example.js b/examples/miniapp-tt/miniprogram_npm/jsbn/example.js new file mode 100644 index 000000000..0975f9f0c --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/jsbn/example.js @@ -0,0 +1,2 @@ +!function(){var n=new(0,jsbn.BigInteger)("91823918239182398123");console.log(n.bitLength())}(); +//# sourceMappingURL=example.js.map \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/jsbn/example.js.map b/examples/miniapp-tt/miniprogram_npm/jsbn/example.js.map new file mode 100644 index 000000000..6f843e5cc --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/jsbn/example.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node_modules/jsbn/example.js","names":["a","BigInteger","jsbn","console","log","bitLength"],"sources":["node_modules/jsbn/example.js"],"sourcesContent":["(function () {\n var BigInteger = jsbn.BigInteger;\n var a = new BigInteger('91823918239182398123');\n console.log(a.bitLength());\n}());\n"],"mappings":"CAAC,WACC,IACIA,EAAI,IAAIC,EADKC,KAAKD,YACC,wBACvBE,QAAQC,IAAIJ,EAAEK,YAChB,CAJA"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/jsbn/index.js b/examples/miniapp-tt/miniprogram_npm/jsbn/index.js new file mode 100644 index 000000000..78ab2a596 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/jsbn/index.js @@ -0,0 +1,2 @@ +(function(){var t;function i(t,i,o){null!=t&&("number"==typeof t?this.fromNumber(t,i,o):null==i&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,i))}function o(){return new i(null)}var r="undefined"!=typeof navigator;r&&"Microsoft Internet Explorer"==navigator.appName?(i.prototype.am=function(t,i,o,r,s,e){for(var h=32767&i,n=i>>15;--e>=0;){var f=32767&this[t],u=this[t++]>>15,p=n*f+u*h;s=((f=h*f+((32767&p)<<15)+o[r]+(1073741823&s))>>>30)+(p>>>15)+n*u+(s>>>30),o[r++]=1073741823&f}return s},t=30):r&&"Netscape"!=navigator.appName?(i.prototype.am=function(t,i,o,r,s,e){for(;--e>=0;){var h=i*this[t++]+o[r]+s;s=Math.floor(h/67108864),o[r++]=67108863&h}return s},t=26):(i.prototype.am=function(t,i,o,r,s,e){for(var h=16383&i,n=i>>14;--e>=0;){var f=16383&this[t],u=this[t++]>>14,p=n*f+u*h;s=((f=h*f+((16383&p)<<14)+o[r]+s)>>28)+(p>>14)+n*u,o[r++]=268435455&f}return s},t=28),i.prototype.DB=t,i.prototype.DM=(1<>>16)&&(t=i,o+=16),0!=(i=t>>8)&&(t=i,o+=8),0!=(i=t>>4)&&(t=i,o+=4),0!=(i=t>>2)&&(t=i,o+=2),0!=(i=t>>1)&&(t=i,o+=1),o}function c(t){this.m=t}function m(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,i+=16),0==(255&t)&&(t>>=8,i+=8),0==(15&t)&&(t>>=4,i+=4),0==(3&t)&&(t>>=2,i+=2),0==(1&t)&&++i,i}function D(t){for(var i=0;0!=t;)t&=t-1,++i;return i}function g(){}function b(t){return t}function S(t){this.r2=o(),this.q3=o(),i.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}c.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},c.prototype.revert=function(t){return t},c.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},c.prototype.mulTo=function(t,i,o){t.multiplyTo(i,o),this.reduce(o)},c.prototype.sqrTo=function(t,i){t.squareTo(i),this.reduce(i)},m.prototype.convert=function(t){var r=o();return t.abs().dlShiftTo(this.m.t,r),r.divRemTo(this.m,null,r),t.s<0&&r.compareTo(i.ZERO)>0&&this.m.subTo(r,r),r},m.prototype.revert=function(t){var i=o();return t.copyTo(i),this.reduce(i),i},m.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var i=0;i>15)*this.mpl&this.um)<<15)&t.DM;for(t[o=i+this.m.t]+=this.m.am(0,r,t,i,0,this.m.t);t[o]>=t.DV;)t[o]-=t.DV,t[++o]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},m.prototype.mulTo=function(t,i,o){t.multiplyTo(i,o),this.reduce(o)},m.prototype.sqrTo=function(t,i){t.squareTo(i),this.reduce(i)},i.prototype.copyTo=function(t){for(var i=this.t-1;i>=0;--i)t[i]=this[i];t.t=this.t,t.s=this.s},i.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},i.prototype.fromString=function(t,o){var r;if(16==o)r=4;else if(8==o)r=3;else if(256==o)r=8;else if(2==o)r=1;else if(32==o)r=5;else{if(4!=o)return void this.fromRadix(t,o);r=2}this.t=0,this.s=0;for(var s=t.length,e=!1,h=0;--s>=0;){var n=8==r?255&t[s]:u(t,s);n<0?"-"==t.charAt(s)&&(e=!0):(e=!1,0==h?this[this.t++]=n:h+r>this.DB?(this[this.t-1]|=(n&(1<>this.DB-h):this[this.t-1]|=n<=this.DB&&(h-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,h>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},i.prototype.dlShiftTo=function(t,i){var o;for(o=this.t-1;o>=0;--o)i[o+t]=this[o];for(o=t-1;o>=0;--o)i[o]=0;i.t=this.t+t,i.s=this.s},i.prototype.drShiftTo=function(t,i){for(var o=t;o=0;--o)i[o+h+1]=this[o]>>s|n,n=(this[o]&e)<=0;--o)i[o]=0;i[h]=n,i.t=this.t+h+1,i.s=this.s,i.clamp()},i.prototype.rShiftTo=function(t,i){i.s=this.s;var o=Math.floor(t/this.DB);if(o>=this.t)i.t=0;else{var r=t%this.DB,s=this.DB-r,e=(1<>r;for(var h=o+1;h>r;r>0&&(i[this.t-o-1]|=(this.s&e)<>=this.DB;if(t.t>=this.DB;r+=this.s}else{for(r+=this.s;o>=this.DB;r-=t.s}i.s=r<0?-1:0,r<-1?i[o++]=this.DV+r:r>0&&(i[o++]=r),i.t=o,i.clamp()},i.prototype.multiplyTo=function(t,o){var r=this.abs(),s=t.abs(),e=r.t;for(o.t=e+s.t;--e>=0;)o[e]=0;for(e=0;e=0;)t[o]=0;for(o=0;o=i.DV&&(t[o+i.t]-=i.DV,t[o+i.t+1]=1)}t.t>0&&(t[t.t-1]+=i.am(o,i[o],t,2*o,0,1)),t.s=0,t.clamp()},i.prototype.divRemTo=function(t,r,s){var e=t.abs();if(!(e.t<=0)){var h=this.abs();if(h.t0?(e.lShiftTo(p,n),h.lShiftTo(p,s)):(e.copyTo(n),h.copyTo(s));var c=n.t,m=n[c-1];if(0!=m){var l=m*(1<1?n[c-2]>>this.F2:0),v=this.FV/l,T=(1<=0&&(s[s.t++]=1,s.subTo(g,s)),i.ONE.dlShiftTo(c,g),g.subTo(n,n);n.t=0;){var b=s[--d]==m?this.DM:Math.floor(s[d]*v+(s[d-1]+y)*T);if((s[d]+=n.am(0,b,s,D,0,c))0&&s.rShiftTo(p,s),f<0&&i.ZERO.subTo(s,s)}}},i.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var i=3&t;return(i=(i=(i=(i=i*(2-(15&t)*i)&15)*(2-(255&t)*i)&255)*(2-((65535&t)*i&65535))&65535)*(2-t*i%this.DV)%this.DV)>0?this.DV-i:-i},i.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},i.prototype.exp=function(t,r){if(t>4294967295||t<1)return i.ONE;var s=o(),e=o(),h=r.convert(this),n=a(t)-1;for(h.copyTo(s);--n>=0;)if(r.sqrTo(s,e),(t&1<0)r.mulTo(e,h,s);else{var f=s;s=e,e=f}return r.revert(s)},i.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var i;if(16==t)i=4;else if(8==t)i=3;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return this.toRadix(t);i=2}var o,r=(1<0)for(n>n)>0&&(s=!0,e=f(o));h>=0;)n>(n+=this.DB-i)):(o=this[h]>>(n-=i)&r,n<=0&&(n+=this.DB,--h)),o>0&&(s=!0),s&&(e+=f(o));return s?e:"0"},i.prototype.negate=function(){var t=o();return i.ZERO.subTo(this,t),t},i.prototype.abs=function(){return this.s<0?this.negate():this},i.prototype.compareTo=function(t){var i=this.s-t.s;if(0!=i)return i;var o=this.t;if(0!=(i=o-t.t))return this.s<0?-i:i;for(;--o>=0;)if(0!=(i=this[o]-t[o]))return i;return 0},i.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+a(this[this.t-1]^this.s&this.DM)},i.prototype.mod=function(t){var r=o();return this.abs().divRemTo(t,null,r),this.s<0&&r.compareTo(i.ZERO)>0&&t.subTo(r,r),r},i.prototype.modPowInt=function(t,i){var o;return o=t<256||i.isEven()?new c(i):new m(i),this.exp(t,o)},i.ZERO=p(0),i.ONE=p(1),g.prototype.convert=b,g.prototype.revert=b,g.prototype.mulTo=function(t,i,o){t.multiplyTo(i,o)},g.prototype.sqrTo=function(t,i){t.squareTo(i)},S.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var i=o();return t.copyTo(i),this.reduce(i),i},S.prototype.revert=function(t){return t},S.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},S.prototype.mulTo=function(t,i,o){t.multiplyTo(i,o),this.reduce(o)},S.prototype.sqrTo=function(t,i){t.squareTo(i),this.reduce(i)};var B,w,M,E=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],R=(1<<26)/E[E.length-1];function O(){var t;t=(new Date).getTime(),w[M++]^=255&t,w[M++]^=t>>8&255,w[M++]^=t>>16&255,w[M++]^=t>>24&255,M>=I&&(M-=I)}if(i.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},i.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var i=this.chunkSize(t),r=Math.pow(t,i),s=p(r),e=o(),h=o(),n="";for(this.divRemTo(s,e,h);e.signum()>0;)n=(r+h.intValue()).toString(t).substr(1)+n,e.divRemTo(s,e,h);return h.intValue().toString(t)+n},i.prototype.fromRadix=function(t,o){this.fromInt(0),null==o&&(o=10);for(var r=this.chunkSize(o),s=Math.pow(o,r),e=!1,h=0,n=0,f=0;f=r&&(this.dMultiply(s),this.dAddOffset(n,0),h=0,n=0))}h>0&&(this.dMultiply(Math.pow(o,h)),this.dAddOffset(n,0)),e&&i.ZERO.subTo(this,this)},i.prototype.fromNumber=function(t,o,r){if("number"==typeof o)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(i.ONE.shiftLeft(t-1),v,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(o);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(i.ONE.shiftLeft(t-1),this);else{var s=new Array,e=7&t;s.length=1+(t>>3),o.nextBytes(s),e>0?s[0]&=(1<>=this.DB;if(t.t>=this.DB;r+=this.s}else{for(r+=this.s;o>=this.DB;r+=t.s}i.s=r<0?-1:0,r>0?i[o++]=r:r<-1&&(i[o++]=this.DV+r),i.t=o,i.clamp()},i.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},i.prototype.dAddOffset=function(t,i){if(0!=t){for(;this.t<=i;)this[this.t++]=0;for(this[i]+=t;this[i]>=this.DV;)this[i]-=this.DV,++i>=this.t&&(this[this.t++]=0),++this[i]}},i.prototype.multiplyLowerTo=function(t,i,o){var r,s=Math.min(this.t+t.t,i);for(o.s=0,o.t=s;s>0;)o[--s]=0;for(r=o.t-this.t;s=0;)o[r]=0;for(r=Math.max(i-this.t,0);r0)if(0==i)o=this[0]%t;else for(var r=this.t-1;r>=0;--r)o=(i*o+this[r])%t;return o},i.prototype.millerRabin=function(t){var r=this.subtract(i.ONE),s=r.getLowestSetBit();if(s<=0)return!1;var e=r.shiftRight(s);(t=t+1>>1)>E.length&&(t=E.length);for(var h=o(),n=0;n>24},i.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},i.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},i.prototype.toByteArray=function(){var t=this.t,i=new Array;i[0]=this.s;var o,r=this.DB-t*this.DB%8,s=0;if(t-- >0)for(r>r)!=(this.s&this.DM)>>r&&(i[s++]=o|this.s<=0;)r<8?(o=(this[t]&(1<>(r+=this.DB-8)):(o=this[t]>>(r-=8)&255,r<=0&&(r+=this.DB,--t)),0!=(128&o)&&(o|=-256),0==s&&(128&this.s)!=(128&o)&&++s,(s>0||o!=this.s)&&(i[s++]=o);return i},i.prototype.equals=function(t){return 0==this.compareTo(t)},i.prototype.min=function(t){return this.compareTo(t)<0?this:t},i.prototype.max=function(t){return this.compareTo(t)>0?this:t},i.prototype.and=function(t){var i=o();return this.bitwiseTo(t,l,i),i},i.prototype.or=function(t){var i=o();return this.bitwiseTo(t,v,i),i},i.prototype.xor=function(t){var i=o();return this.bitwiseTo(t,T,i),i},i.prototype.andNot=function(t){var i=o();return this.bitwiseTo(t,y,i),i},i.prototype.not=function(){for(var t=o(),i=0;i=this.t?0!=this.s:0!=(this[i]&1<1){var v=o();for(s.sqrTo(n[1],v);f<=l;)n[f]=o(),s.mulTo(v,n[f-2],n[f]),f+=2}var T,y,d=t.t-1,D=!0,g=o();for(e=a(t[d])-1;d>=0;){for(e>=u?T=t[d]>>e-u&l:(T=(t[d]&(1<0&&(T|=t[d-1]>>this.DB+e-u)),f=r;0==(1&T);)T>>=1,--f;if((e-=f)<0&&(e+=this.DB,--d),D)n[T].copyTo(h),D=!1;else{for(;f>1;)s.sqrTo(h,g),s.sqrTo(g,h),f-=2;f>0?s.sqrTo(h,g):(y=h,h=g,g=y),s.mulTo(g,n[T],h)}for(;d>=0&&0==(t[d]&1<=0?(r.subTo(s,r),o&&e.subTo(n,e),h.subTo(f,h)):(s.subTo(r,s),o&&n.subTo(e,n),f.subTo(h,f))}return 0!=s.compareTo(i.ONE)?i.ZERO:f.compareTo(t)>=0?f.subtract(t):f.signum()<0?(f.addTo(t,f),f.signum()<0?f.add(t):f):f},i.prototype.pow=function(t){return this.exp(t,new g)},i.prototype.gcd=function(t){var i=this.s<0?this.negate():this.clone(),o=t.s<0?t.negate():t.clone();if(i.compareTo(o)<0){var r=i;i=o,o=r}var s=i.getLowestSetBit(),e=o.getLowestSetBit();if(e<0)return i;for(s0&&(i.rShiftTo(e,i),o.rShiftTo(e,o));i.signum()>0;)(s=i.getLowestSetBit())>0&&i.rShiftTo(s,i),(s=o.getLowestSetBit())>0&&o.rShiftTo(s,o),i.compareTo(o)>=0?(i.subTo(o,i),i.rShiftTo(1,i)):(o.subTo(i,o),o.rShiftTo(1,o));return e>0&&o.lShiftTo(e,o),o},i.prototype.isProbablePrime=function(t){var i,o=this.abs();if(1==o.t&&o[0]<=E[E.length-1]){for(i=0;i>>8,w[M++]=255&A;M=0,O()}function N(){if(null==B){for(O(),(B=new L).init(w),M=0;M= 0) {\n var v = x*this[i++]+w[j]+c;\n c = Math.floor(v/0x4000000);\n w[j++] = v&0x3ffffff;\n }\n return c;\n }\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n function am2(i,x,w,j,c,n) {\n var xl = x&0x7fff, xh = x>>15;\n while(--n >= 0) {\n var l = this[i]&0x7fff;\n var h = this[i++]>>15;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);\n c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);\n w[j++] = l&0x3fffffff;\n }\n return c;\n }\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n function am3(i,x,w,j,c,n) {\n var xl = x&0x3fff, xh = x>>14;\n while(--n >= 0) {\n var l = this[i]&0x3fff;\n var h = this[i++]>>14;\n var m = xh*l+h*xl;\n l = xl*l+((m&0x3fff)<<14)+w[j]+c;\n c = (l>>28)+(m>>14)+xh*h;\n w[j++] = l&0xfffffff;\n }\n return c;\n }\n var inBrowser = typeof navigator !== \"undefined\";\n if(inBrowser && j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = am2;\n dbits = 30;\n }\n else if(inBrowser && j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = am1;\n dbits = 26;\n }\n else { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = am3;\n dbits = 28;\n }\n\n BigInteger.prototype.DB = dbits;\n BigInteger.prototype.DM = ((1<= 0; --i) r[i] = this[i];\n r.t = this.t;\n r.s = this.s;\n }\n\n // (protected) set from integer value x, -DV <= x < DV\n function bnpFromInt(x) {\n this.t = 1;\n this.s = (x<0)?-1:0;\n if(x > 0) this[0] = x;\n else if(x < -1) this[0] = x+this.DV;\n else this.t = 0;\n }\n\n // return bigint initialized to value\n function nbv(i) { var r = nbi(); r.fromInt(i); return r; }\n\n // (protected) set from string and radix\n function bnpFromString(s,b) {\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 256) k = 8; // byte array\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else { this.fromRadix(s,b); return; }\n this.t = 0;\n this.s = 0;\n var i = s.length, mi = false, sh = 0;\n while(--i >= 0) {\n var x = (k==8)?s[i]&0xff:intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\") mi = true;\n continue;\n }\n mi = false;\n if(sh == 0)\n this[this.t++] = x;\n else if(sh+k > this.DB) {\n this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<>(this.DB-sh));\n }\n else\n this[this.t-1] |= x<= this.DB) sh -= this.DB;\n }\n if(k == 8 && (s[0]&0x80) != 0) {\n this.s = -1;\n if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)< 0 && this[this.t-1] == c) --this.t;\n }\n\n // (public) return string representation in given radix\n function bnToString(b) {\n if(this.s < 0) return \"-\"+this.negate().toString(b);\n var k;\n if(b == 16) k = 4;\n else if(b == 8) k = 3;\n else if(b == 2) k = 1;\n else if(b == 32) k = 5;\n else if(b == 4) k = 2;\n else return this.toRadix(b);\n var km = (1< 0) {\n if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }\n while(i >= 0) {\n if(p < k) {\n d = (this[i]&((1<>(p+=this.DB-k);\n }\n else {\n d = (this[i]>>(p-=k))&km;\n if(p <= 0) { p += this.DB; --i; }\n }\n if(d > 0) m = true;\n if(m) r += int2char(d);\n }\n }\n return m?r:\"0\";\n }\n\n // (public) -this\n function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }\n\n // (public) |this|\n function bnAbs() { return (this.s<0)?this.negate():this; }\n\n // (public) return + if this > a, - if this < a, 0 if equal\n function bnCompareTo(a) {\n var r = this.s-a.s;\n if(r != 0) return r;\n var i = this.t;\n r = i-a.t;\n if(r != 0) return (this.s<0)?-r:r;\n while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;\n return 0;\n }\n\n // returns bit length of the integer x\n function nbits(x) {\n var r = 1, t;\n if((t=x>>>16) != 0) { x = t; r += 16; }\n if((t=x>>8) != 0) { x = t; r += 8; }\n if((t=x>>4) != 0) { x = t; r += 4; }\n if((t=x>>2) != 0) { x = t; r += 2; }\n if((t=x>>1) != 0) { x = t; r += 1; }\n return r;\n }\n\n // (public) return the number of bits in \"this\"\n function bnBitLength() {\n if(this.t <= 0) return 0;\n return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));\n }\n\n // (protected) r = this << n*DB\n function bnpDLShiftTo(n,r) {\n var i;\n for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];\n for(i = n-1; i >= 0; --i) r[i] = 0;\n r.t = this.t+n;\n r.s = this.s;\n }\n\n // (protected) r = this >> n*DB\n function bnpDRShiftTo(n,r) {\n for(var i = n; i < this.t; ++i) r[i-n] = this[i];\n r.t = Math.max(this.t-n,0);\n r.s = this.s;\n }\n\n // (protected) r = this << n\n function bnpLShiftTo(n,r) {\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<= 0; --i) {\n r[i+ds+1] = (this[i]>>cbs)|c;\n c = (this[i]&bm)<= 0; --i) r[i] = 0;\n r[ds] = c;\n r.t = this.t+ds+1;\n r.s = this.s;\n r.clamp();\n }\n\n // (protected) r = this >> n\n function bnpRShiftTo(n,r) {\n r.s = this.s;\n var ds = Math.floor(n/this.DB);\n if(ds >= this.t) { r.t = 0; return; }\n var bs = n%this.DB;\n var cbs = this.DB-bs;\n var bm = (1<>bs;\n for(var i = ds+1; i < this.t; ++i) {\n r[i-ds-1] |= (this[i]&bm)<>bs;\n }\n if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<>= this.DB;\n }\n if(a.t < this.t) {\n c -= a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c -= a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c<0)?-1:0;\n if(c < -1) r[i++] = this.DV+c;\n else if(c > 0) r[i++] = c;\n r.t = i;\n r.clamp();\n }\n\n // (protected) r = this * a, r != this,a (HAC 14.12)\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyTo(a,r) {\n var x = this.abs(), y = a.abs();\n var i = x.t;\n r.t = i+y.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);\n r.s = 0;\n r.clamp();\n if(this.s != a.s) BigInteger.ZERO.subTo(r,r);\n }\n\n // (protected) r = this^2, r != this (HAC 14.16)\n function bnpSquareTo(r) {\n var x = this.abs();\n var i = r.t = 2*x.t;\n while(--i >= 0) r[i] = 0;\n for(i = 0; i < x.t-1; ++i) {\n var c = x.am(i,x[i],r,2*i,0,1);\n if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {\n r[i+x.t] -= x.DV;\n r[i+x.t+1] = 1;\n }\n }\n if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);\n r.s = 0;\n r.clamp();\n }\n\n // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)\n // r != q, this != m. q or r may be null.\n function bnpDivRemTo(m,q,r) {\n var pm = m.abs();\n if(pm.t <= 0) return;\n var pt = this.abs();\n if(pt.t < pm.t) {\n if(q != null) q.fromInt(0);\n if(r != null) this.copyTo(r);\n return;\n }\n if(r == null) r = nbi();\n var y = nbi(), ts = this.s, ms = m.s;\n var nsh = this.DB-nbits(pm[pm.t-1]); // normalize modulus\n if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }\n else { pm.copyTo(y); pt.copyTo(r); }\n var ys = y.t;\n var y0 = y[ys-1];\n if(y0 == 0) return;\n var yt = y0*(1<1)?y[ys-2]>>this.F2:0);\n var d1 = this.FV/yt, d2 = (1<= 0) {\n r[r.t++] = 1;\n r.subTo(t,r);\n }\n BigInteger.ONE.dlShiftTo(ys,t);\n t.subTo(y,y); // \"negative\" y so we can replace sub with am later\n while(y.t < ys) y[y.t++] = 0;\n while(--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);\n if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) { // Try it out\n y.dlShiftTo(j,t);\n r.subTo(t,r);\n while(r[i] < --qd) r.subTo(t,r);\n }\n }\n if(q != null) {\n r.drShiftTo(ys,q);\n if(ts != ms) BigInteger.ZERO.subTo(q,q);\n }\n r.t = ys;\n r.clamp();\n if(nsh > 0) r.rShiftTo(nsh,r); // Denormalize remainder\n if(ts < 0) BigInteger.ZERO.subTo(r,r);\n }\n\n // (public) this mod a\n function bnMod(a) {\n var r = nbi();\n this.abs().divRemTo(a,null,r);\n if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);\n return r;\n }\n\n // Modular reduction using \"classic\" algorithm\n function Classic(m) { this.m = m; }\n function cConvert(x) {\n if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);\n else return x;\n }\n function cRevert(x) { return x; }\n function cReduce(x) { x.divRemTo(this.m,null,x); }\n function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n Classic.prototype.convert = cConvert;\n Classic.prototype.revert = cRevert;\n Classic.prototype.reduce = cReduce;\n Classic.prototype.mulTo = cMulTo;\n Classic.prototype.sqrTo = cSqrTo;\n\n // (protected) return \"-1/this % 2^DB\"; useful for Mont. reduction\n // justification:\n // xy == 1 (mod m)\n // xy = 1+km\n // xy(2-xy) = (1+km)(1-km)\n // x[y(2-xy)] = 1-k^2m^2\n // x[y(2-xy)] == 1 (mod m^2)\n // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2\n // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.\n // JS multiply \"overflows\" differently from C/C++, so care is needed here.\n function bnpInvDigit() {\n if(this.t < 1) return 0;\n var x = this[0];\n if((x&1) == 0) return 0;\n var y = x&3; // y == 1/x mod 2^2\n y = (y*(2-(x&0xf)*y))&0xf; // y == 1/x mod 2^4\n y = (y*(2-(x&0xff)*y))&0xff; // y == 1/x mod 2^8\n y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y*(2-x*y%this.DV))%this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y>0)?this.DV-y:-y;\n }\n\n // Montgomery reduction\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp&0x7fff;\n this.mph = this.mp>>15;\n this.um = (1<<(m.DB-15))-1;\n this.mt2 = 2*m.t;\n }\n\n // xR mod m\n function montConvert(x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t,r);\n r.divRemTo(this.m,null,r);\n if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);\n return r;\n }\n\n // x/R mod m\n function montRevert(x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n }\n\n // x = x/R mod m (HAC 14.32)\n function montReduce(x) {\n while(x.t <= this.mt2) // pad x so am has enough room later\n x[x.t++] = 0;\n for(var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i]&0x7fff;\n var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i+this.m.t;\n x[j] += this.m.am(0,u0,x,i,0,this.m.t);\n // propagate carry\n while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }\n }\n x.clamp();\n x.drShiftTo(this.m.t,x);\n if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = \"x^2/R mod m\"; x != r\n function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = \"xy/R mod m\"; x,y != r\n function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Montgomery.prototype.convert = montConvert;\n Montgomery.prototype.revert = montRevert;\n Montgomery.prototype.reduce = montReduce;\n Montgomery.prototype.mulTo = montMulTo;\n Montgomery.prototype.sqrTo = montSqrTo;\n\n // (protected) true iff this is even\n function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }\n\n // (protected) this^e, e < 2^32, doing sqr and mul with \"r\" (HAC 14.79)\n function bnpExp(e,z) {\n if(e > 0xffffffff || e < 1) return BigInteger.ONE;\n var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;\n g.copyTo(r);\n while(--i >= 0) {\n z.sqrTo(r,r2);\n if((e&(1< 0) z.mulTo(r2,g,r);\n else { var t = r; r = r2; r2 = t; }\n }\n return z.revert(r);\n }\n\n // (public) this^e % m, 0 <= e < 2^32\n function bnModPowInt(e,m) {\n var z;\n if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);\n return this.exp(e,z);\n }\n\n // protected\n BigInteger.prototype.copyTo = bnpCopyTo;\n BigInteger.prototype.fromInt = bnpFromInt;\n BigInteger.prototype.fromString = bnpFromString;\n BigInteger.prototype.clamp = bnpClamp;\n BigInteger.prototype.dlShiftTo = bnpDLShiftTo;\n BigInteger.prototype.drShiftTo = bnpDRShiftTo;\n BigInteger.prototype.lShiftTo = bnpLShiftTo;\n BigInteger.prototype.rShiftTo = bnpRShiftTo;\n BigInteger.prototype.subTo = bnpSubTo;\n BigInteger.prototype.multiplyTo = bnpMultiplyTo;\n BigInteger.prototype.squareTo = bnpSquareTo;\n BigInteger.prototype.divRemTo = bnpDivRemTo;\n BigInteger.prototype.invDigit = bnpInvDigit;\n BigInteger.prototype.isEven = bnpIsEven;\n BigInteger.prototype.exp = bnpExp;\n\n // public\n BigInteger.prototype.toString = bnToString;\n BigInteger.prototype.negate = bnNegate;\n BigInteger.prototype.abs = bnAbs;\n BigInteger.prototype.compareTo = bnCompareTo;\n BigInteger.prototype.bitLength = bnBitLength;\n BigInteger.prototype.mod = bnMod;\n BigInteger.prototype.modPowInt = bnModPowInt;\n\n // \"constants\"\n BigInteger.ZERO = nbv(0);\n BigInteger.ONE = nbv(1);\n\n // Copyright (c) 2005-2009 Tom Wu\n // All Rights Reserved.\n // See \"LICENSE\" for details.\n\n // Extended JavaScript BN functions, required for RSA private ops.\n\n // Version 1.1: new BigInteger(\"0\", 10) returns \"proper\" zero\n // Version 1.2: square() API, isProbablePrime fix\n\n // (public)\n function bnClone() { var r = nbi(); this.copyTo(r); return r; }\n\n // (public) return value as integer\n function bnIntValue() {\n if(this.s < 0) {\n if(this.t == 1) return this[0]-this.DV;\n else if(this.t == 0) return -1;\n }\n else if(this.t == 1) return this[0];\n else if(this.t == 0) return 0;\n // assumes 16 < DB < 32\n return ((this[1]&((1<<(32-this.DB))-1))<>24; }\n\n // (public) return value as short (assumes DB>=16)\n function bnShortValue() { return (this.t==0)?this.s:(this[0]<<16)>>16; }\n\n // (protected) return x s.t. r^x < DV\n function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }\n\n // (public) 0 if this == 0, 1 if this > 0\n function bnSigNum() {\n if(this.s < 0) return -1;\n else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;\n else return 1;\n }\n\n // (protected) convert to radix string\n function bnpToRadix(b) {\n if(b == null) b = 10;\n if(this.signum() == 0 || b < 2 || b > 36) return \"0\";\n var cs = this.chunkSize(b);\n var a = Math.pow(b,cs);\n var d = nbv(a), y = nbi(), z = nbi(), r = \"\";\n this.divRemTo(d,y,z);\n while(y.signum() > 0) {\n r = (a+z.intValue()).toString(b).substr(1) + r;\n y.divRemTo(d,y,z);\n }\n return z.intValue().toString(b) + r;\n }\n\n // (protected) convert from radix string\n function bnpFromRadix(s,b) {\n this.fromInt(0);\n if(b == null) b = 10;\n var cs = this.chunkSize(b);\n var d = Math.pow(b,cs), mi = false, j = 0, w = 0;\n for(var i = 0; i < s.length; ++i) {\n var x = intAt(s,i);\n if(x < 0) {\n if(s.charAt(i) == \"-\" && this.signum() == 0) mi = true;\n continue;\n }\n w = b*w+x;\n if(++j >= cs) {\n this.dMultiply(d);\n this.dAddOffset(w,0);\n j = 0;\n w = 0;\n }\n }\n if(j > 0) {\n this.dMultiply(Math.pow(b,j));\n this.dAddOffset(w,0);\n }\n if(mi) BigInteger.ZERO.subTo(this,this);\n }\n\n // (protected) alternate constructor\n function bnpFromNumber(a,b,c) {\n if(\"number\" == typeof b) {\n // new BigInteger(int,int,RNG)\n if(a < 2) this.fromInt(1);\n else {\n this.fromNumber(a,c);\n if(!this.testBit(a-1)) // force MSB set\n this.bitwiseTo(BigInteger.ONE.shiftLeft(a-1),op_or,this);\n if(this.isEven()) this.dAddOffset(1,0); // force odd\n while(!this.isProbablePrime(b)) {\n this.dAddOffset(2,0);\n if(this.bitLength() > a) this.subTo(BigInteger.ONE.shiftLeft(a-1),this);\n }\n }\n }\n else {\n // new BigInteger(int,RNG)\n var x = new Array(), t = a&7;\n x.length = (a>>3)+1;\n b.nextBytes(x);\n if(t > 0) x[0] &= ((1< 0) {\n if(p < this.DB && (d = this[i]>>p) != (this.s&this.DM)>>p)\n r[k++] = d|(this.s<<(this.DB-p));\n while(i >= 0) {\n if(p < 8) {\n d = (this[i]&((1<>(p+=this.DB-8);\n }\n else {\n d = (this[i]>>(p-=8))&0xff;\n if(p <= 0) { p += this.DB; --i; }\n }\n if((d&0x80) != 0) d |= -256;\n if(k == 0 && (this.s&0x80) != (d&0x80)) ++k;\n if(k > 0 || d != this.s) r[k++] = d;\n }\n }\n return r;\n }\n\n function bnEquals(a) { return(this.compareTo(a)==0); }\n function bnMin(a) { return(this.compareTo(a)<0)?this:a; }\n function bnMax(a) { return(this.compareTo(a)>0)?this:a; }\n\n // (protected) r = this op a (bitwise)\n function bnpBitwiseTo(a,op,r) {\n var i, f, m = Math.min(a.t,this.t);\n for(i = 0; i < m; ++i) r[i] = op(this[i],a[i]);\n if(a.t < this.t) {\n f = a.s&this.DM;\n for(i = m; i < this.t; ++i) r[i] = op(this[i],f);\n r.t = this.t;\n }\n else {\n f = this.s&this.DM;\n for(i = m; i < a.t; ++i) r[i] = op(f,a[i]);\n r.t = a.t;\n }\n r.s = op(this.s,a.s);\n r.clamp();\n }\n\n // (public) this & a\n function op_and(x,y) { return x&y; }\n function bnAnd(a) { var r = nbi(); this.bitwiseTo(a,op_and,r); return r; }\n\n // (public) this | a\n function op_or(x,y) { return x|y; }\n function bnOr(a) { var r = nbi(); this.bitwiseTo(a,op_or,r); return r; }\n\n // (public) this ^ a\n function op_xor(x,y) { return x^y; }\n function bnXor(a) { var r = nbi(); this.bitwiseTo(a,op_xor,r); return r; }\n\n // (public) this & ~a\n function op_andnot(x,y) { return x&~y; }\n function bnAndNot(a) { var r = nbi(); this.bitwiseTo(a,op_andnot,r); return r; }\n\n // (public) ~this\n function bnNot() {\n var r = nbi();\n for(var i = 0; i < this.t; ++i) r[i] = this.DM&~this[i];\n r.t = this.t;\n r.s = ~this.s;\n return r;\n }\n\n // (public) this << n\n function bnShiftLeft(n) {\n var r = nbi();\n if(n < 0) this.rShiftTo(-n,r); else this.lShiftTo(n,r);\n return r;\n }\n\n // (public) this >> n\n function bnShiftRight(n) {\n var r = nbi();\n if(n < 0) this.lShiftTo(-n,r); else this.rShiftTo(n,r);\n return r;\n }\n\n // return index of lowest 1-bit in x, x < 2^31\n function lbit(x) {\n if(x == 0) return -1;\n var r = 0;\n if((x&0xffff) == 0) { x >>= 16; r += 16; }\n if((x&0xff) == 0) { x >>= 8; r += 8; }\n if((x&0xf) == 0) { x >>= 4; r += 4; }\n if((x&3) == 0) { x >>= 2; r += 2; }\n if((x&1) == 0) ++r;\n return r;\n }\n\n // (public) returns index of lowest 1-bit (or -1 if none)\n function bnGetLowestSetBit() {\n for(var i = 0; i < this.t; ++i)\n if(this[i] != 0) return i*this.DB+lbit(this[i]);\n if(this.s < 0) return this.t*this.DB;\n return -1;\n }\n\n // return number of 1 bits in x\n function cbit(x) {\n var r = 0;\n while(x != 0) { x &= x-1; ++r; }\n return r;\n }\n\n // (public) return number of set bits\n function bnBitCount() {\n var r = 0, x = this.s&this.DM;\n for(var i = 0; i < this.t; ++i) r += cbit(this[i]^x);\n return r;\n }\n\n // (public) true iff nth bit is set\n function bnTestBit(n) {\n var j = Math.floor(n/this.DB);\n if(j >= this.t) return(this.s!=0);\n return((this[j]&(1<<(n%this.DB)))!=0);\n }\n\n // (protected) this op (1<>= this.DB;\n }\n if(a.t < this.t) {\n c += a.s;\n while(i < this.t) {\n c += this[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while(i < a.t) {\n c += a[i];\n r[i++] = c&this.DM;\n c >>= this.DB;\n }\n c += a.s;\n }\n r.s = (c<0)?-1:0;\n if(c > 0) r[i++] = c;\n else if(c < -1) r[i++] = this.DV+c;\n r.t = i;\n r.clamp();\n }\n\n // (public) this + a\n function bnAdd(a) { var r = nbi(); this.addTo(a,r); return r; }\n\n // (public) this - a\n function bnSubtract(a) { var r = nbi(); this.subTo(a,r); return r; }\n\n // (public) this * a\n function bnMultiply(a) { var r = nbi(); this.multiplyTo(a,r); return r; }\n\n // (public) this^2\n function bnSquare() { var r = nbi(); this.squareTo(r); return r; }\n\n // (public) this / a\n function bnDivide(a) { var r = nbi(); this.divRemTo(a,r,null); return r; }\n\n // (public) this % a\n function bnRemainder(a) { var r = nbi(); this.divRemTo(a,null,r); return r; }\n\n // (public) [this/a,this%a]\n function bnDivideAndRemainder(a) {\n var q = nbi(), r = nbi();\n this.divRemTo(a,q,r);\n return new Array(q,r);\n }\n\n // (protected) this *= n, this >= 0, 1 < n < DV\n function bnpDMultiply(n) {\n this[this.t] = this.am(0,n-1,this,0,0,this.t);\n ++this.t;\n this.clamp();\n }\n\n // (protected) this += n << w words, this >= 0\n function bnpDAddOffset(n,w) {\n if(n == 0) return;\n while(this.t <= w) this[this.t++] = 0;\n this[w] += n;\n while(this[w] >= this.DV) {\n this[w] -= this.DV;\n if(++w >= this.t) this[this.t++] = 0;\n ++this[w];\n }\n }\n\n // A \"null\" reducer\n function NullExp() {}\n function nNop(x) { return x; }\n function nMulTo(x,y,r) { x.multiplyTo(y,r); }\n function nSqrTo(x,r) { x.squareTo(r); }\n\n NullExp.prototype.convert = nNop;\n NullExp.prototype.revert = nNop;\n NullExp.prototype.mulTo = nMulTo;\n NullExp.prototype.sqrTo = nSqrTo;\n\n // (public) this^e\n function bnPow(e) { return this.exp(e,new NullExp()); }\n\n // (protected) r = lower n words of \"this * a\", a.t <= n\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyLowerTo(a,n,r) {\n var i = Math.min(this.t+a.t,n);\n r.s = 0; // assumes a,this >= 0\n r.t = i;\n while(i > 0) r[--i] = 0;\n var j;\n for(j = r.t-this.t; i < j; ++i) r[i+this.t] = this.am(0,a[i],r,i,0,this.t);\n for(j = Math.min(a.t,n); i < j; ++i) this.am(0,a[i],r,i,0,n-i);\n r.clamp();\n }\n\n // (protected) r = \"this * a\" without lower n words, n > 0\n // \"this\" should be the larger one if appropriate.\n function bnpMultiplyUpperTo(a,n,r) {\n --n;\n var i = r.t = this.t+a.t-n;\n r.s = 0; // assumes a,this >= 0\n while(--i >= 0) r[i] = 0;\n for(i = Math.max(n-this.t,0); i < a.t; ++i)\n r[this.t+i-n] = this.am(n-i,a[i],r,0,0,this.t+i-n);\n r.clamp();\n r.drShiftTo(1,r);\n }\n\n // Barrett modular reduction\n function Barrett(m) {\n // setup Barrett\n this.r2 = nbi();\n this.q3 = nbi();\n BigInteger.ONE.dlShiftTo(2*m.t,this.r2);\n this.mu = this.r2.divide(m);\n this.m = m;\n }\n\n function barrettConvert(x) {\n if(x.s < 0 || x.t > 2*this.m.t) return x.mod(this.m);\n else if(x.compareTo(this.m) < 0) return x;\n else { var r = nbi(); x.copyTo(r); this.reduce(r); return r; }\n }\n\n function barrettRevert(x) { return x; }\n\n // x = x mod m (HAC 14.42)\n function barrettReduce(x) {\n x.drShiftTo(this.m.t-1,this.r2);\n if(x.t > this.m.t+1) { x.t = this.m.t+1; x.clamp(); }\n this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);\n this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);\n while(x.compareTo(this.r2) < 0) x.dAddOffset(1,this.m.t+1);\n x.subTo(this.r2,x);\n while(x.compareTo(this.m) >= 0) x.subTo(this.m,x);\n }\n\n // r = x^2 mod m; x != r\n function barrettSqrTo(x,r) { x.squareTo(r); this.reduce(r); }\n\n // r = x*y mod m; x,y != r\n function barrettMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }\n\n Barrett.prototype.convert = barrettConvert;\n Barrett.prototype.revert = barrettRevert;\n Barrett.prototype.reduce = barrettReduce;\n Barrett.prototype.mulTo = barrettMulTo;\n Barrett.prototype.sqrTo = barrettSqrTo;\n\n // (public) this^e % m (HAC 14.85)\n function bnModPow(e,m) {\n var i = e.bitLength(), k, r = nbv(1), z;\n if(i <= 0) return r;\n else if(i < 18) k = 1;\n else if(i < 48) k = 3;\n else if(i < 144) k = 4;\n else if(i < 768) k = 5;\n else k = 6;\n if(i < 8)\n z = new Classic(m);\n else if(m.isEven())\n z = new Barrett(m);\n else\n z = new Montgomery(m);\n\n // precomputation\n var g = new Array(), n = 3, k1 = k-1, km = (1< 1) {\n var g2 = nbi();\n z.sqrTo(g[1],g2);\n while(n <= km) {\n g[n] = nbi();\n z.mulTo(g2,g[n-2],g[n]);\n n += 2;\n }\n }\n\n var j = e.t-1, w, is1 = true, r2 = nbi(), t;\n i = nbits(e[j])-1;\n while(j >= 0) {\n if(i >= k1) w = (e[j]>>(i-k1))&km;\n else {\n w = (e[j]&((1<<(i+1))-1))<<(k1-i);\n if(j > 0) w |= e[j-1]>>(this.DB+i-k1);\n }\n\n n = k;\n while((w&1) == 0) { w >>= 1; --n; }\n if((i -= n) < 0) { i += this.DB; --j; }\n if(is1) { // ret == 1, don't bother squaring or multiplying it\n g[w].copyTo(r);\n is1 = false;\n }\n else {\n while(n > 1) { z.sqrTo(r,r2); z.sqrTo(r2,r); n -= 2; }\n if(n > 0) z.sqrTo(r,r2); else { t = r; r = r2; r2 = t; }\n z.mulTo(r2,g[w],r);\n }\n\n while(j >= 0 && (e[j]&(1< 0) {\n x.rShiftTo(g,x);\n y.rShiftTo(g,y);\n }\n while(x.signum() > 0) {\n if((i = x.getLowestSetBit()) > 0) x.rShiftTo(i,x);\n if((i = y.getLowestSetBit()) > 0) y.rShiftTo(i,y);\n if(x.compareTo(y) >= 0) {\n x.subTo(y,x);\n x.rShiftTo(1,x);\n }\n else {\n y.subTo(x,y);\n y.rShiftTo(1,y);\n }\n }\n if(g > 0) y.lShiftTo(g,y);\n return y;\n }\n\n // (protected) this % n, n < 2^26\n function bnpModInt(n) {\n if(n <= 0) return 0;\n var d = this.DV%n, r = (this.s<0)?n-1:0;\n if(this.t > 0)\n if(d == 0) r = this[0]%n;\n else for(var i = this.t-1; i >= 0; --i) r = (d*r+this[i])%n;\n return r;\n }\n\n // (public) 1/this % m (HAC 14.61)\n function bnModInverse(m) {\n var ac = m.isEven();\n if((this.isEven() && ac) || m.signum() == 0) return BigInteger.ZERO;\n var u = m.clone(), v = this.clone();\n var a = nbv(1), b = nbv(0), c = nbv(0), d = nbv(1);\n while(u.signum() != 0) {\n while(u.isEven()) {\n u.rShiftTo(1,u);\n if(ac) {\n if(!a.isEven() || !b.isEven()) { a.addTo(this,a); b.subTo(m,b); }\n a.rShiftTo(1,a);\n }\n else if(!b.isEven()) b.subTo(m,b);\n b.rShiftTo(1,b);\n }\n while(v.isEven()) {\n v.rShiftTo(1,v);\n if(ac) {\n if(!c.isEven() || !d.isEven()) { c.addTo(this,c); d.subTo(m,d); }\n c.rShiftTo(1,c);\n }\n else if(!d.isEven()) d.subTo(m,d);\n d.rShiftTo(1,d);\n }\n if(u.compareTo(v) >= 0) {\n u.subTo(v,u);\n if(ac) a.subTo(c,a);\n b.subTo(d,b);\n }\n else {\n v.subTo(u,v);\n if(ac) c.subTo(a,c);\n d.subTo(b,d);\n }\n }\n if(v.compareTo(BigInteger.ONE) != 0) return BigInteger.ZERO;\n if(d.compareTo(m) >= 0) return d.subtract(m);\n if(d.signum() < 0) d.addTo(m,d); else return d;\n if(d.signum() < 0) return d.add(m); else return d;\n }\n\n var lowprimes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997];\n var lplim = (1<<26)/lowprimes[lowprimes.length-1];\n\n // (public) test primality with certainty >= 1-.5^t\n function bnIsProbablePrime(t) {\n var i, x = this.abs();\n if(x.t == 1 && x[0] <= lowprimes[lowprimes.length-1]) {\n for(i = 0; i < lowprimes.length; ++i)\n if(x[0] == lowprimes[i]) return true;\n return false;\n }\n if(x.isEven()) return false;\n i = 1;\n while(i < lowprimes.length) {\n var m = lowprimes[i], j = i+1;\n while(j < lowprimes.length && m < lplim) m *= lowprimes[j++];\n m = x.modInt(m);\n while(i < j) if(m%lowprimes[i++] == 0) return false;\n }\n return x.millerRabin(t);\n }\n\n // (protected) true if probably prime (HAC 4.24, Miller-Rabin)\n function bnpMillerRabin(t) {\n var n1 = this.subtract(BigInteger.ONE);\n var k = n1.getLowestSetBit();\n if(k <= 0) return false;\n var r = n1.shiftRight(k);\n t = (t+1)>>1;\n if(t > lowprimes.length) t = lowprimes.length;\n var a = nbi();\n for(var i = 0; i < t; ++i) {\n //Pick bases at random, instead of starting at 2\n a.fromInt(lowprimes[Math.floor(Math.random()*lowprimes.length)]);\n var y = a.modPow(r,this);\n if(y.compareTo(BigInteger.ONE) != 0 && y.compareTo(n1) != 0) {\n var j = 1;\n while(j++ < k && y.compareTo(n1) != 0) {\n y = y.modPowInt(2,this);\n if(y.compareTo(BigInteger.ONE) == 0) return false;\n }\n if(y.compareTo(n1) != 0) return false;\n }\n }\n return true;\n }\n\n // protected\n BigInteger.prototype.chunkSize = bnpChunkSize;\n BigInteger.prototype.toRadix = bnpToRadix;\n BigInteger.prototype.fromRadix = bnpFromRadix;\n BigInteger.prototype.fromNumber = bnpFromNumber;\n BigInteger.prototype.bitwiseTo = bnpBitwiseTo;\n BigInteger.prototype.changeBit = bnpChangeBit;\n BigInteger.prototype.addTo = bnpAddTo;\n BigInteger.prototype.dMultiply = bnpDMultiply;\n BigInteger.prototype.dAddOffset = bnpDAddOffset;\n BigInteger.prototype.multiplyLowerTo = bnpMultiplyLowerTo;\n BigInteger.prototype.multiplyUpperTo = bnpMultiplyUpperTo;\n BigInteger.prototype.modInt = bnpModInt;\n BigInteger.prototype.millerRabin = bnpMillerRabin;\n\n // public\n BigInteger.prototype.clone = bnClone;\n BigInteger.prototype.intValue = bnIntValue;\n BigInteger.prototype.byteValue = bnByteValue;\n BigInteger.prototype.shortValue = bnShortValue;\n BigInteger.prototype.signum = bnSigNum;\n BigInteger.prototype.toByteArray = bnToByteArray;\n BigInteger.prototype.equals = bnEquals;\n BigInteger.prototype.min = bnMin;\n BigInteger.prototype.max = bnMax;\n BigInteger.prototype.and = bnAnd;\n BigInteger.prototype.or = bnOr;\n BigInteger.prototype.xor = bnXor;\n BigInteger.prototype.andNot = bnAndNot;\n BigInteger.prototype.not = bnNot;\n BigInteger.prototype.shiftLeft = bnShiftLeft;\n BigInteger.prototype.shiftRight = bnShiftRight;\n BigInteger.prototype.getLowestSetBit = bnGetLowestSetBit;\n BigInteger.prototype.bitCount = bnBitCount;\n BigInteger.prototype.testBit = bnTestBit;\n BigInteger.prototype.setBit = bnSetBit;\n BigInteger.prototype.clearBit = bnClearBit;\n BigInteger.prototype.flipBit = bnFlipBit;\n BigInteger.prototype.add = bnAdd;\n BigInteger.prototype.subtract = bnSubtract;\n BigInteger.prototype.multiply = bnMultiply;\n BigInteger.prototype.divide = bnDivide;\n BigInteger.prototype.remainder = bnRemainder;\n BigInteger.prototype.divideAndRemainder = bnDivideAndRemainder;\n BigInteger.prototype.modPow = bnModPow;\n BigInteger.prototype.modInverse = bnModInverse;\n BigInteger.prototype.pow = bnPow;\n BigInteger.prototype.gcd = bnGCD;\n BigInteger.prototype.isProbablePrime = bnIsProbablePrime;\n\n // JSBN-specific extension\n BigInteger.prototype.square = bnSquare;\n\n // Expose the Barrett function\n BigInteger.prototype.Barrett = Barrett\n\n // BigInteger interfaces not implemented in jsbn:\n\n // BigInteger(int signum, byte[] magnitude)\n // double doubleValue()\n // float floatValue()\n // int hashCode()\n // long longValue()\n // static BigInteger valueOf(long val)\n\n // Random number generator - requires a PRNG backend, e.g. prng4.js\n\n // For best results, put code like\n // \n // in your main HTML document.\n\n var rng_state;\n var rng_pool;\n var rng_pptr;\n\n // Mix in a 32-bit integer into the pool\n function rng_seed_int(x) {\n rng_pool[rng_pptr++] ^= x & 255;\n rng_pool[rng_pptr++] ^= (x >> 8) & 255;\n rng_pool[rng_pptr++] ^= (x >> 16) & 255;\n rng_pool[rng_pptr++] ^= (x >> 24) & 255;\n if(rng_pptr >= rng_psize) rng_pptr -= rng_psize;\n }\n\n // Mix in the current time (w/milliseconds) into the pool\n function rng_seed_time() {\n rng_seed_int(new Date().getTime());\n }\n\n // Initialize the pool with junk if needed.\n if(rng_pool == null) {\n rng_pool = new Array();\n rng_pptr = 0;\n var t;\n if(typeof window !== \"undefined\" && window.crypto) {\n if (window.crypto.getRandomValues) {\n // Use webcrypto if available\n var ua = new Uint8Array(32);\n window.crypto.getRandomValues(ua);\n for(t = 0; t < 32; ++t)\n rng_pool[rng_pptr++] = ua[t];\n }\n else if(navigator.appName == \"Netscape\" && navigator.appVersion < \"5\") {\n // Extract entropy (256 bits) from NS4 RNG if available\n var z = window.crypto.random(32);\n for(t = 0; t < z.length; ++t)\n rng_pool[rng_pptr++] = z.charCodeAt(t) & 255;\n }\n }\n while(rng_pptr < rng_psize) { // extract some randomness from Math.random()\n t = Math.floor(65536 * Math.random());\n rng_pool[rng_pptr++] = t >>> 8;\n rng_pool[rng_pptr++] = t & 255;\n }\n rng_pptr = 0;\n rng_seed_time();\n //rng_seed_int(window.screenX);\n //rng_seed_int(window.screenY);\n }\n\n function rng_get_byte() {\n if(rng_state == null) {\n rng_seed_time();\n rng_state = prng_newstate();\n rng_state.init(rng_pool);\n for(rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)\n rng_pool[rng_pptr] = 0;\n rng_pptr = 0;\n //rng_pool = null;\n }\n // TODO: allow reseeding after first request\n return rng_state.next();\n }\n\n function rng_get_bytes(ba) {\n var i;\n for(i = 0; i < ba.length; ++i) ba[i] = rng_get_byte();\n }\n\n function SecureRandom() {}\n\n SecureRandom.prototype.nextBytes = rng_get_bytes;\n\n // prng4.js - uses Arcfour as a PRNG\n\n function Arcfour() {\n this.i = 0;\n this.j = 0;\n this.S = new Array();\n }\n\n // Initialize arcfour context from key, an array of ints, each from [0..255]\n function ARC4init(key) {\n var i, j, t;\n for(i = 0; i < 256; ++i)\n this.S[i] = i;\n j = 0;\n for(i = 0; i < 256; ++i) {\n j = (j + this.S[i] + key[i % key.length]) & 255;\n t = this.S[i];\n this.S[i] = this.S[j];\n this.S[j] = t;\n }\n this.i = 0;\n this.j = 0;\n }\n\n function ARC4next() {\n var t;\n this.i = (this.i + 1) & 255;\n this.j = (this.j + this.S[this.i]) & 255;\n t = this.S[this.i];\n this.S[this.i] = this.S[this.j];\n this.S[this.j] = t;\n return this.S[(t + this.S[this.i]) & 255];\n }\n\n Arcfour.prototype.init = ARC4init;\n Arcfour.prototype.next = ARC4next;\n\n // Plug in your RNG constructor here\n function prng_newstate() {\n return new Arcfour();\n }\n\n // Pool size must be a multiple of 4 and greater than 32.\n // An array of bytes the size of the pool will be passed to init()\n var rng_psize = 256;\n\n if (typeof exports !== 'undefined') {\n exports = module.exports = {\n default: BigInteger,\n BigInteger: BigInteger,\n SecureRandom: SecureRandom,\n };\n } else {\n this.jsbn = {\n BigInteger: BigInteger,\n SecureRandom: SecureRandom\n };\n }\n\n}).call(this);\n"],"mappings":"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"} \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/jsbn/package.json b/examples/miniapp-tt/miniprogram_npm/jsbn/package.json new file mode 100644 index 000000000..97b137c2e --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/jsbn/package.json @@ -0,0 +1,21 @@ +{ + "name": "jsbn", + "version": "1.1.0", + "description": "The jsbn library is a fast, portable implementation of large-number math in pure JavaScript, enabling public-key crypto and other applications on desktop and mobile browsers.", + "main": "index.js", + "scripts": { + "test": "mocha test.js" + }, + "repository": { + "type": "git", + "url": "https://github.com/andyperlitch/jsbn.git" + }, + "keywords": [ + "biginteger", + "bignumber", + "big", + "integer" + ], + "author": "Tom Wu", + "license": "MIT" +} diff --git a/examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js b/examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js new file mode 100644 index 000000000..56aa3a2b9 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js @@ -0,0 +1,2 @@ +import{BigInteger}from"../";console.log(typeof BigInteger); +//# sourceMappingURL=es6-import.js.map \ No newline at end of file diff --git a/examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js.map b/examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js.map new file mode 100644 index 000000000..eef930163 --- /dev/null +++ b/examples/miniapp-tt/miniprogram_npm/jsbn/test/es6-import.js.map @@ -0,0 +1 @@ +{"version":3,"file":"node_modules/jsbn/test/es6-import.js","names":["BigInteger","console","log"],"sources":["node_modules/jsbn/test/es6-import.js"],"sourcesContent":["import {BigInteger} from '../';\n\nconsole.log(typeof BigInteger)\n"],"mappings":"OAAQA,eAAiB,MAEzBC,QAAQC,WAAWF"} \ No newline at end of file diff --git a/examples/miniapp-tt/package-lock.json b/examples/miniapp-tt/package-lock.json index 22912c842..894680b0d 100644 --- a/examples/miniapp-tt/package-lock.json +++ b/examples/miniapp-tt/package-lock.json @@ -7,40 +7,32 @@ "": { "name": "miniprogram-ts", "version": "1.0.0", + "dependencies": { + "@authing/miniapp-jsencrypt": "^5.1.16", + "@authing/miniapp-sm2encrypt": "^5.1.16", + "@authing/miniapp-tt": "^5.1.16-alpha.4" + }, "devDependencies": { - "@authing/miniapp-jsencrypt": "^5.1.8", - "@authing/miniapp-sm2encrypt": "^5.1.8", - "@authing/miniapp-tt": "^5.1.16-alpha.3", - "@authing/miniapp-wx": "^5.1.16-alpha.3", "@douyin-microapp/typings": "latest" } }, "node_modules/@authing/miniapp-jsencrypt": { "version": "5.1.16", "resolved": "https://registry.npmjs.org/@authing/miniapp-jsencrypt/-/miniapp-jsencrypt-5.1.16.tgz", - "integrity": "sha512-ekj7GDuFSoNYiGLcyKPDLaXhBaqBJf8OSNVjK2pMgK0aEm11yOPqXMRlVuAjX6/CpgxrDzAwqi40Mm/fQDK20g==", - "dev": true + "integrity": "sha512-ekj7GDuFSoNYiGLcyKPDLaXhBaqBJf8OSNVjK2pMgK0aEm11yOPqXMRlVuAjX6/CpgxrDzAwqi40Mm/fQDK20g==" }, "node_modules/@authing/miniapp-sm2encrypt": { "version": "5.1.16", "resolved": "https://registry.npmjs.org/@authing/miniapp-sm2encrypt/-/miniapp-sm2encrypt-5.1.16.tgz", "integrity": "sha512-qc5X2Vat2BO+P+RrQkAv45BAucT2gMj7NwIx2pwaDj01eA6kd0AFwjvGyRNh1lOKYCWJ7/XqlgOA1HRvPqe85w==", - "dev": true, "dependencies": { "jsbn": "^1.1.0" } }, "node_modules/@authing/miniapp-tt": { - "version": "5.1.16-alpha.3", - "resolved": "https://registry.npmjs.org/@authing/miniapp-tt/-/miniapp-tt-5.1.16-alpha.3.tgz", - "integrity": "sha512-mU3cJXG9I6lSxqHy0zIsMIfHTfyUnWhc8TlnanuFibvaFfMDw0bjvdLS6m88kxUowg+cMjYAatXxR9jIcTskug==", - "dev": true - }, - "node_modules/@authing/miniapp-wx": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/@authing/miniapp-wx/-/miniapp-wx-5.1.16.tgz", - "integrity": "sha512-aSuGGSCUmARU1Suqj7oyUpJxHAmOJ0qqNdyLZf9EUjb3d1K7UXrZtz9kjPPc+HjHu84ViPoM/lgR5hpZcsWNpw==", - "dev": true + "version": "5.1.16-alpha.4", + "resolved": "https://registry.npmjs.org/@authing/miniapp-tt/-/miniapp-tt-5.1.16-alpha.4.tgz", + "integrity": "sha512-PUWf3mgMVKloXMrK5PtanoFiTjhBLQ1WMgxFRbuPAvH93s/d6ezSCkw3eP6PkRDQWDKh3po1Azf1WIdsF6mjEw==" }, "node_modules/@douyin-microapp/typings": { "version": "1.2.2", @@ -51,37 +43,27 @@ "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" } }, "dependencies": { "@authing/miniapp-jsencrypt": { "version": "5.1.16", "resolved": "https://registry.npmjs.org/@authing/miniapp-jsencrypt/-/miniapp-jsencrypt-5.1.16.tgz", - "integrity": "sha512-ekj7GDuFSoNYiGLcyKPDLaXhBaqBJf8OSNVjK2pMgK0aEm11yOPqXMRlVuAjX6/CpgxrDzAwqi40Mm/fQDK20g==", - "dev": true + "integrity": "sha512-ekj7GDuFSoNYiGLcyKPDLaXhBaqBJf8OSNVjK2pMgK0aEm11yOPqXMRlVuAjX6/CpgxrDzAwqi40Mm/fQDK20g==" }, "@authing/miniapp-sm2encrypt": { "version": "5.1.16", "resolved": "https://registry.npmjs.org/@authing/miniapp-sm2encrypt/-/miniapp-sm2encrypt-5.1.16.tgz", "integrity": "sha512-qc5X2Vat2BO+P+RrQkAv45BAucT2gMj7NwIx2pwaDj01eA6kd0AFwjvGyRNh1lOKYCWJ7/XqlgOA1HRvPqe85w==", - "dev": true, "requires": { "jsbn": "^1.1.0" } }, "@authing/miniapp-tt": { - "version": "5.1.16-alpha.3", - "resolved": "https://registry.npmjs.org/@authing/miniapp-tt/-/miniapp-tt-5.1.16-alpha.3.tgz", - "integrity": "sha512-mU3cJXG9I6lSxqHy0zIsMIfHTfyUnWhc8TlnanuFibvaFfMDw0bjvdLS6m88kxUowg+cMjYAatXxR9jIcTskug==", - "dev": true - }, - "@authing/miniapp-wx": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/@authing/miniapp-wx/-/miniapp-wx-5.1.16.tgz", - "integrity": "sha512-aSuGGSCUmARU1Suqj7oyUpJxHAmOJ0qqNdyLZf9EUjb3d1K7UXrZtz9kjPPc+HjHu84ViPoM/lgR5hpZcsWNpw==", - "dev": true + "version": "5.1.16-alpha.4", + "resolved": "https://registry.npmjs.org/@authing/miniapp-tt/-/miniapp-tt-5.1.16-alpha.4.tgz", + "integrity": "sha512-PUWf3mgMVKloXMrK5PtanoFiTjhBLQ1WMgxFRbuPAvH93s/d6ezSCkw3eP6PkRDQWDKh3po1Azf1WIdsF6mjEw==" }, "@douyin-microapp/typings": { "version": "1.2.2", @@ -92,8 +74,7 @@ "jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" } } } diff --git a/examples/miniapp-tt/package.json b/examples/miniapp-tt/package.json index 3d340d3d1..8ed9abddd 100644 --- a/examples/miniapp-tt/package.json +++ b/examples/miniapp-tt/package.json @@ -5,10 +5,12 @@ "keywords": [], "author": "", "license": "", + "dependencies": { + "@authing/miniapp-jsencrypt": "^5.1.16", + "@authing/miniapp-sm2encrypt": "^5.1.16", + "@authing/miniapp-tt": "^5.1.16-alpha.4" + }, "devDependencies": { - "@authing/miniapp-jsencrypt": "^5.1.8", - "@authing/miniapp-sm2encrypt": "^5.1.8", - "@authing/miniapp-tt": "^5.1.16-alpha.3", "@douyin-microapp/typings": "latest" } } diff --git a/examples/miniapp-tt/pages/index/index.ts b/examples/miniapp-tt/pages/index/index.ts index 9b38bf722..23fc1798c 100644 --- a/examples/miniapp-tt/pages/index/index.ts +++ b/examples/miniapp-tt/pages/index/index.ts @@ -1,30 +1,351 @@ -// index.ts +const app = getApp() import { Authing } from '@authing/miniapp-tt' -// // 按需使用,加密密码 -// // import { encryptFunction } from '@authing/miniapp-jsencrypt' +// import { encryptFunction } from '@authing/miniapp-jsencrypt' -// import { encryptFunction } from '@authing/miniapp-sm2encrypt' -// const AUTHING_EXT_IDP_CONN_IDENTIFIER = "douyin-mini2" +import { encryptFunction } from '@authing/miniapp-sm2encrypt' +const EXT_IDP_CONNIDENTIFIER = "EXT_IDP_CONNIDENTIFIER" -// const APP_SECRET = '04093a8d20472bc1ea7d2207d69751ca99895d82'; -// const APP_ID = 'ttcad4bc6955e5062401'; -// const authing = new Authing({ -// appId: '65e817bc434b729d058140a0', -// host: 'https://minnappauthing.why.lixpng.top', -// userPoolId: '6321a29180d12ab3a3e35306', -// encryptFunction -// }) +const APP_SECRET = 'APP_SECRET'; +const APP_ID = 'APP_ID'; -// const app = getApp() +const authing = new Authing({ + appId: 'appId', + host: 'host', + userPoolId: 'userPoolId', + encryptFunction +}) -// console.log(Authing,'AuthingAuthingdfft') Page({ - data: { + data: {}, + onLoad() { + // 开启 shareTicket 用户分享获取群聊 id + tt.updateShareMenu({ + withShareTicket: true, + }) + }, + onShareAppMessage() { + const promise = new Promise(resolve => { + setTimeout(() => { + resolve({ + title: '自定义转发标题' + }) + }, 2000) + }) + return { + title: '自定义转发标题', + path: '/pages/index', + promise + } + }, + + + /** + * 需要在真机上测试,微信开发者工具不会返回 code + * @param {*} e + */ + async loginByPhone (e) { + const { code, iv, encryptedData } = e.detail; + const res = await authing.loginByPhone({ + extIdpConnidentifier: EXT_IDP_CONNIDENTIFIER, + miniProgramCodeAndPhonePayload: { + phoneParams: { + encryptedData, + iv, + }, + wxPhoneInfo: { + code + } + }, + options: { + scope: 'openid profile offline_access' + } + }) + console.log('authing.loginByPhone res: ', res) + }, + + async loginByCode () { + const res = await authing.loginByCode({ + extIdpConnidentifier: EXT_IDP_CONNIDENTIFIER, + options: { + scope: 'openid profile offline_access' + } + }) + + console.log('authing.loginByCode res: ', res) + }, + + /** + * 需要在真机上测试,微信开发者工具不会返回 code + * @param {*} e + */ + async getPhone (e) { + const { code } = e.detail + + const res = await authing.getPhone({ + extIdpConnidentifier: EXT_IDP_CONNIDENTIFIER, + code + }) + + console.log('authing.getPhone res: ', res) + }, + + async loginByPassword () { + const res = await authing.loginByPassword({ + passwordPayload: { + password: '123', + username: 'test' + }, + options: { + passwordEncryptType: 'sm2', + scope: 'offline_access openid profile' + } + }) + console.log('authing.loginByPassword res: ', res) + }, + + async sendSms () { + // 指定 channel 为 CHANNEL_LOGIN,发送登录所用的验证码 + const res = await authing.sendSms({ + phoneNumber: 'YOUR_PHONE_NUMBER', + phoneCountryCode: '+86', + channel: 'CHANNEL_UNBIND_PHONE' + }) + + console.log('authing.sendSms res: ', res) + }, + + async loginByPassCode () { + const res = await authing.loginByPassCode({ + passCodePayload: { + // 手机收到的短信验证码 + passCode: '845603', + phone: '13126919251', + phoneCountryCode: '+86' + }, + options: { + scope: 'openid profile offline_access' + } + }) + + console.log('authing.loginByPassCode: ', res) + }, + + async refreshToken () { + const res = await authing.refreshToken() + console.log('authing.refreshToken res: ', res) + }, + + async getAccessTokenInfo () { + const res = await authing.getAccessTokenInfo({ + appId: APP_ID, + appSecret: APP_SECRET + }) + + console.log('authing.getAccessTokenInfo res: ', res) + }, + async saveLoginState () { + const [, loginState] = await authing.getLoginState() + + const res = await authing.saveLoginState({ + access_token: '', + expires_in: 0, + expires_at: 0, + id_token: '', + scope: '', + token_type: '', + ...loginState + }) + console.log('authing.saveLoginState res: ', res) + }, + async bindPlatformByCode () { + + const res = await authing.bindPlatformByCode({ extIdpConnidentifier: EXT_IDP_CONNIDENTIFIER}) + console.log('authing.bindPlatformByCode res: ', res) + }, + async updatePassword () { + const res = await authing.updatePassword({ + newPassword: '123', + oldPassword: '123', + passwordEncryptType: 'none' + }) + + console.log('authing.updatePassword res: ', res) + }, + + async getUserInfo () { + const res = await authing.getUserInfo() + console.log('authing.getUserInfo res: ', res) + }, + + async updateAvatar () { + const res = await authing.updateAvatar() + console.log('authing.updateAvatar res: ', res) + }, + + async updateUserInfo () { + const res = await authing.updateUserInfo({ + address: 'Hello world 12' + }) + + console.log('authing.updateUserInfo res: ', res) + }, + + async logout () { + const res = await authing.logout() + console.log('authing.logout res: ', res) + }, + + async getLoginState () { + const res = await authing.getLoginState() + console.log('authing.getLoginState res: ', res) + }, + + async clearLoginState () { + const res = await authing.clearLoginState() + console.log('authing.clearLoginState res: ', res) + }, + + async sendEmailCode () { + const res = await authing.sendEmailCode({ + email: 'YOUR_EMAIL_ADDRESS', + channel: 'CHANNEL_LOGIN' + }) + console.log('authing.sendEmailCode res: ', res) + }, + + async bindEmail () { + const res = await authing.bindEmail({ + email: 'YOUR_EMAIL_ADDRESS', + passCode: '' + }) + console.log('authing.bindEmail res: ', res) + }, + + // 用于修改邮箱发送短信验证码 + async verifyOldEmail() { + const res = await authing.sendEmailCode({ + email: 'YOUR_OLD_EMAIL_ADDRESS', + channel: 'CHANNEL_UPDATE_EMAIL' + }) + console.log('authing.sendEmailCode res: ', res) + }, + + async verifyNewEmail() { + const res = await authing.sendEmailCode({ + email: 'YOUR_NEW_EMAIL_ADDRESS', + channel: 'CHANNEL_UPDATE_EMAIL' + }) + console.log('authing.sendEmailCode res: ', res) + }, + + async updateEmail () { + // 前置调用 verifyOldEmail verifyNewEmail 获取新旧邮箱验证码 + // this.verifyOldEmail() + // this.verifyNewEmail() + const [_, res] = await authing.updateEmailRequest({ + verifyMethod: 'EMAIL_PASSCODE', + emailPassCodePayload: { + newEmail: 'YOUR_EMAIL_ADDRESS', + newEmailPassCode: '', + oldEmail: 'YOUR_EMAIL_ADDRESS', + oldEmailPassCode: '' + } + }) + + console.log('authing.updateEmailRequest res: ', res) + + const updateRes = await authing.updateEmail({ + updateEmailToken: res.updateEmailToken + }) + console.log('authing.updateEmail res: ', updateRes) + }, + + async bindPhone () { + // 前置调用 sendSms 方法,channel: CHANNEL_BIND_PHONE + const res = await authing.bindPhone({ + phoneNumber: 'YOUR_PHONE_NUMBER', + passCode: '', + }) + console.log('authing.bindPhone res: ', res) + }, + + // TODO 修改手机号 channel + async updatePhone () { + const [_, res] = await authing.updatePhoneRequest({ + verifyMethod:'PHONE_PASSCODE', + phonePassCodePayload: { + newPhoneNumber: 'YOUR_PHONE_NUMBER', + newPhonePassCode: '' + } + }) + console.log('authing.updatePhone res: ', res) + + if (res?.updatePhoneToken) { + await authing.updatePhone({ + updatePhoneToken: res.updatePhoneToken + }) + } + + }, + + async deleteAccount () { + /** + * 邮箱 EMAIL_PASSCODE: 前置调用发送邮件方法 channel: CHANNEL_DELETE_ACCOUNT + * 手机号 PHONE_PASSCODE: 前置调用发送短信方法 channel: CHANNEL_DELETE_ACCOUNT + * 密码 PASSWORD: 传入 password 参数 + */ + const [_, res] = await authing.deleteAccountRequest({ + verifyMethod: 'EMAIL_PASSCODE', + emailPassCodePayload: { + email: 'YOUR_EMAIL_ADDRESS', + passCode: '' + } + }) + console.log('authing.deleteAccount res: ', res) + + await authing.deleteAccount({ + deleteAccountToken: res.deleteAccountToken + }) }, - onLoad: function () { - console.log('Welcome to Mini Code') + + async decryptData () { + const code = await authing.getLoginCode() + + const res = await authing.decryptData({ + extIdpConnidentifier: EXT_IDP_CONNIDENTIFIER, + encryptedData: '', + iv: '', + code + }) + + console.log('authing.decryptData res: ', res) }, + + getShareInfo() { + const {shareTicket} = tt.getLaunchOptionsSync() + + tt.getShareInfo({ + shareTicket, + async success({encryptedData, iv}: any) { + // 公共方法获取 code + const code = await authing.getLoginCode() + + // 解密数据 + const res = await authing.decryptData({ + extIdpConnidentifier: EXT_IDP_CONNIDENTIFIER, + encryptedData, + iv, + code + }) + + console.log('authing.decryptData res: ', res) + }, + fail(error: any) { + console.log("error: ", error); + } + }) + } }) diff --git a/examples/miniapp-tt/pages/index/index.ttml b/examples/miniapp-tt/pages/index/index.ttml index 8bd8c5ff7..eb77648c1 100644 --- a/examples/miniapp-tt/pages/index/index.ttml +++ b/examples/miniapp-tt/pages/index/index.ttml @@ -2,6 +2,7 @@ + @@ -16,20 +17,18 @@ - - - - - - - - - + + + + + + + diff --git a/examples/miniapp-tt/project.config.json b/examples/miniapp-tt/project.config.json index a4cf41ebf..679850339 100644 --- a/examples/miniapp-tt/project.config.json +++ b/examples/miniapp-tt/project.config.json @@ -1,19 +1,18 @@ { - "setting": { - "urlCheck": true, - "es6": true, - "postcss": true, - "minified": true, - "newFeature": true, - "autoCompile": true, - "compileHotReLoad": true, - "nativeCompile": true, - "useCompilerPlugins": ["typescript"] - }, - "packOptions": { - "npm": true - }, - "appid": "ttcad4bc6955e5062401", - "projectname": "miniapp-tt", - "douyinProjectType": "native" + "setting": { + "urlCheck": true, + "es6": true, + "postcss": true, + "minified": true, + "newFeature": true, + "autoCompile": true, + "compileHotReLoad": true, + "nativeCompile": true, + "useCompilerPlugins": [ + "typescript" + ] + }, + "appid": "ttcad4bc6955e5062401", + "projectname": "miniapp-tt", + "douyinProjectType": "native" } diff --git a/examples/miniapp-uniapp/package.json b/examples/miniapp-uniapp/package.json index ca88d9ace..412ee1022 100644 --- a/examples/miniapp-uniapp/package.json +++ b/examples/miniapp-uniapp/package.json @@ -50,7 +50,7 @@ "dependencies": { "@authing/miniapp-jsencrypt": "^5.1.0", "@authing/miniapp-sm2encrypt": "^5.1.0", - "@authing/miniapp-uniapp": "^5.1.8", + "@authing/miniapp-uniapp": "^5.1.16-alpha.4", "@dcloudio/uni-app-plus": "^2.0.1-35320220729002", "@dcloudio/uni-h5": "^2.0.1-35320220729002", "@dcloudio/uni-helper-json": "*", diff --git a/examples/miniapp-wx/miniapp/package.json b/examples/miniapp-wx/miniapp/package.json index ace6b8a33..bbfdefafb 100644 --- a/examples/miniapp-wx/miniapp/package.json +++ b/examples/miniapp-wx/miniapp/package.json @@ -11,6 +11,6 @@ "dependencies": { "@authing/miniapp-jsencrypt": "^5.1.8", "@authing/miniapp-sm2encrypt": "^5.1.8", - "@authing/miniapp-wx": "^5.1.9-alpha.0" + "@authing/miniapp-wx": "^5.1.16-alpha.4" } } diff --git a/examples/miniapp-wx/miniapp/pages/index/index.ts b/examples/miniapp-wx/miniapp/pages/index/index.ts index 4111dafc0..08692fb27 100644 --- a/examples/miniapp-wx/miniapp/pages/index/index.ts +++ b/examples/miniapp-wx/miniapp/pages/index/index.ts @@ -43,10 +43,14 @@ Page({ * @param {*} e */ async loginByPhone (e) { - const { code } = e.detail + const { code, iv, encryptedData } = e.detail; const res = await authing.loginByPhone({ extIdpConnidentifier: 'AUTHING_EXT_IDP_CONN_IDENTIFIER', - wechatMiniProgramCodeAndPhonePayload: { + miniProgramCodeAndPhonePayload: { + phoneParams: { + encryptedData, + iv, + }, wxPhoneInfo: { code }