yc-ui2 0.1.2-beta24 → 0.1.2-beta26
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/yc-ui2.common.js +463 -40
- package/dist/yc-ui2.common.js.map +1 -1
- package/dist/yc-ui2.css +1 -1
- package/dist/yc-ui2.umd.js +463 -40
- package/dist/yc-ui2.umd.js.map +1 -1
- package/dist/yc-ui2.umd.min.js +1 -1
- package/dist/yc-ui2.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/App.vue +4 -4
- package/src/main.js +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"yc-ui2.umd.min.js","mappings":"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","sources":["webpack://yc-ui2/webpack/universalModuleDefinition","webpack://yc-ui2/./node_modules/core-js/internals/a-callable.js","webpack://yc-ui2/./node_modules/core-js/internals/an-object.js","webpack://yc-ui2/./node_modules/core-js/internals/array-includes.js","webpack://yc-ui2/./node_modules/core-js/internals/array-set-length.js","webpack://yc-ui2/./node_modules/core-js/internals/classof-raw.js","webpack://yc-ui2/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://yc-ui2/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://yc-ui2/./node_modules/core-js/internals/create-property-descriptor.js","webpack://yc-ui2/./node_modules/core-js/internals/define-built-in.js","webpack://yc-ui2/./node_modules/core-js/internals/define-global-property.js","webpack://yc-ui2/./node_modules/core-js/internals/descriptors.js","webpack://yc-ui2/./node_modules/core-js/internals/document-all.js","webpack://yc-ui2/./node_modules/core-js/internals/document-create-element.js","webpack://yc-ui2/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://yc-ui2/./node_modules/core-js/internals/engine-user-agent.js","webpack://yc-ui2/./node_modules/core-js/internals/engine-v8-version.js","webpack://yc-ui2/./node_modules/core-js/internals/enum-bug-keys.js","webpack://yc-ui2/./node_modules/core-js/internals/export.js","webpack://yc-ui2/./node_modules/core-js/internals/fails.js","webpack://yc-ui2/./node_modules/core-js/internals/function-bind-native.js","webpack://yc-ui2/./node_modules/core-js/internals/function-call.js","webpack://yc-ui2/./node_modules/core-js/internals/function-name.js","webpack://yc-ui2/./node_modules/core-js/internals/function-uncurry-this.js","webpack://yc-ui2/./node_modules/core-js/internals/get-built-in.js","webpack://yc-ui2/./node_modules/core-js/internals/get-method.js","webpack://yc-ui2/./node_modules/core-js/internals/global.js","webpack://yc-ui2/./node_modules/core-js/internals/has-own-property.js","webpack://yc-ui2/./node_modules/core-js/internals/hidden-keys.js","webpack://yc-ui2/./node_modules/core-js/internals/ie8-dom-define.js","webpack://yc-ui2/./node_modules/core-js/internals/indexed-object.js","webpack://yc-ui2/./node_modules/core-js/internals/inspect-source.js","webpack://yc-ui2/./node_modules/core-js/internals/internal-state.js","webpack://yc-ui2/./node_modules/core-js/internals/is-array.js","webpack://yc-ui2/./node_modules/core-js/internals/is-callable.js","webpack://yc-ui2/./node_modules/core-js/internals/is-forced.js","webpack://yc-ui2/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://yc-ui2/./node_modules/core-js/internals/is-object.js","webpack://yc-ui2/./node_modules/core-js/internals/is-pure.js","webpack://yc-ui2/./node_modules/core-js/internals/is-symbol.js","webpack://yc-ui2/./node_modules/core-js/internals/length-of-array-like.js","webpack://yc-ui2/./node_modules/core-js/internals/make-built-in.js","webpack://yc-ui2/./node_modules/core-js/internals/math-trunc.js","webpack://yc-ui2/./node_modules/core-js/internals/object-define-property.js","webpack://yc-ui2/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://yc-ui2/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://yc-ui2/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://yc-ui2/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://yc-ui2/./node_modules/core-js/internals/object-keys-internal.js","webpack://yc-ui2/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://yc-ui2/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://yc-ui2/./node_modules/core-js/internals/own-keys.js","webpack://yc-ui2/./node_modules/core-js/internals/require-object-coercible.js","webpack://yc-ui2/./node_modules/core-js/internals/shared-key.js","webpack://yc-ui2/./node_modules/core-js/internals/shared-store.js","webpack://yc-ui2/./node_modules/core-js/internals/shared.js","webpack://yc-ui2/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://yc-ui2/./node_modules/core-js/internals/to-absolute-index.js","webpack://yc-ui2/./node_modules/core-js/internals/to-indexed-object.js","webpack://yc-ui2/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://yc-ui2/./node_modules/core-js/internals/to-length.js","webpack://yc-ui2/./node_modules/core-js/internals/to-object.js","webpack://yc-ui2/./node_modules/core-js/internals/to-primitive.js","webpack://yc-ui2/./node_modules/core-js/internals/to-property-key.js","webpack://yc-ui2/./node_modules/core-js/internals/try-to-string.js","webpack://yc-ui2/./node_modules/core-js/internals/uid.js","webpack://yc-ui2/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://yc-ui2/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://yc-ui2/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://yc-ui2/./node_modules/core-js/internals/well-known-symbol.js","webpack://yc-ui2/./node_modules/core-js/modules/es.array.push.js","webpack://yc-ui2/./src/utils/mTokenPluginBeijin/xtxasyn.js","webpack://yc-ui2/./src/utils/mTokenPlugin/mToken.js","webpack://yc-ui2/./src/assets/customerService/ sync ^\\.\\/.*\\.jpg$","webpack://yc-ui2/webpack/bootstrap","webpack://yc-ui2/webpack/runtime/compat get default export","webpack://yc-ui2/webpack/runtime/define property getters","webpack://yc-ui2/webpack/runtime/global","webpack://yc-ui2/webpack/runtime/hasOwnProperty shorthand","webpack://yc-ui2/webpack/runtime/make namespace object","webpack://yc-ui2/webpack/runtime/publicPath","webpack://yc-ui2/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://yc-ui2/./src/components/YcSlideVerify/index.vue","webpack://yc-ui2/src/components/YcSlideVerify/index.vue","webpack://yc-ui2/./src/components/YcSlideVerify/index.vue?aaea","webpack://yc-ui2/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://yc-ui2/./src/components/YcSlideVerify/index.vue?0582","webpack://yc-ui2/./src/components/YcCustomerService/index.vue","webpack://yc-ui2/./src/components/YcCustomerService/chat.vue","webpack://yc-ui2/./src/components/YcCustomerService/chatMixin.js","webpack://yc-ui2/src/components/YcCustomerService/chat.vue","webpack://yc-ui2/./src/components/YcCustomerService/chat.vue?5072","webpack://yc-ui2/./src/components/YcCustomerService/chat.vue?40e1","webpack://yc-ui2/src/components/YcCustomerService/index.vue","webpack://yc-ui2/./src/components/YcCustomerService/index.vue?d2ba","webpack://yc-ui2/./src/components/YcCustomerService/index.vue?cfd4","webpack://yc-ui2/./src/components/YcQuestion/index.vue","webpack://yc-ui2/src/components/YcQuestion/index.vue","webpack://yc-ui2/./src/components/YcQuestion/index.vue?35d5","webpack://yc-ui2/./src/components/YcQuestion/index.vue?c0dd","webpack://yc-ui2/./src/components/YcCA/index.vue","webpack://yc-ui2/./src/utils/mTokenPlugin/base64.js","webpack://yc-ui2/./src/utils/mTokenPlugin/hunca_mToken_core2.js","webpack://yc-ui2/./src/utils/mTokenPluginBeijin/formateTime.js","webpack://yc-ui2/src/components/YcCA/index.vue","webpack://yc-ui2/./src/components/YcCA/index.vue?1ad3","webpack://yc-ui2/./src/components/YcCA/index.vue?ea8d","webpack://yc-ui2/./src/packages/index.js","webpack://yc-ui2/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"yc-ui2\"] = factory();\n\telse\n\t\troot[\"yc-ui2\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","/* eslint-disable no-unused-vars */\r\n/*\r\n --------------------------------------------------------------\r\n * FileName:xtxasyn.js\r\n * This Javascript provides asynchronous interfaces\r\n * Support bjca client version 3.4.1 and later\r\n * Author:BJCA-zys\r\n * Date: 2021-05-06\r\n *\r\n --------------------------------------------------------------\r\n */\r\n \r\n(function() {\r\nif (typeof xtxasyn === 'undefined') {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn = {};\r\n}\r\n})();\r\n\r\n// initialize xtxasyn hashMap object\r\n(function() {\r\n\r\nfunction XTXAsynHashMap(){\r\n this.map = {};\r\n}\r\n\r\nXTXAsynHashMap.prototype = {\r\n put : function(key , value){\r\n this.map[key] = value;\r\n },\r\n\r\n get : function(key){\r\n // eslint-disable-next-line no-prototype-builtins\r\n if(this.map.hasOwnProperty(key)){\r\n return this.map[key];\r\n }\r\n return null;\r\n },\r\n \r\n remove : function(key){\r\n // eslint-disable-next-line no-prototype-builtins\r\n if(this.map.hasOwnProperty(key)){\r\n return delete this.map[key];\r\n }\r\n return false;\r\n },\r\n \r\n removeAll : function(){\r\n this.map = {};\r\n },\r\n \r\n keySet : function(){\r\n var _keys = [];\r\n for(var i in this.map){\r\n _keys.push(i);\r\n }\r\n return _keys;\r\n }\r\n};\r\n\r\nXTXAsynHashMap.prototype.constructor = XTXAsynHashMap;\r\n\r\n// eslint-disable-next-line no-undef\r\nxtxasyn.HashMap = XTXAsynHashMap;\r\n})();\r\n\r\n// initialize xtxasyn util object\r\n(function() {\r\n\r\nfunction initUtilObject(xtxasyn) {\r\n\r\n var util = xtxasyn.util = xtxasyn.util || {};\r\n \r\n util.checkBrowserISIE = function() {\r\n return (!!window.ActiveXObject || 'ActiveXObject' in window) ? true : false;\r\n }\r\n \r\n util.checkLocationIsHttps = function() {\r\n return 'https:' == document.location.protocol ? true: false;\r\n }\r\n \r\n util.evalFunction = function (func) {\r\n if (typeof func === 'function') {\r\n return func;\r\n } else if (typeof func === 'string') {\r\n // eslint-disable-next-line no-undef\r\n cb = eval(func);\r\n } else {\r\n return null;\r\n }\r\n }\r\n \r\n util.consolelog = function(param) {\r\n if (window.console == undefined || window.console.log == undefined) {\r\n return;\r\n }\r\n console.log(param);\r\n }\r\n \r\n util.isEmpty = function(param) {\r\n if (!param) {\r\n return true;\r\n }\r\n if (typeof param == 'string' && param == \"\") {\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n util.loadIECtl = function(clsid, ctlName, checkFunc) {\r\n if (!util.checkBrowserISIE()) {\r\n return null;\r\n }\r\n var ctl = document.getElementById(ctlName);\r\n if (ctl) {\r\n return ctl;\r\n }\r\n try {\r\n var loadObjString = '<object id=\"' + ctlName + '\" classid=\"CLSID:' + clsid + '\" style=\"HEIGHT:0px; WIDTH:0px\">';\r\n loadObjString += '</object>';\r\n document.write(loadObjString);\r\n if (checkFunc != null && checkFunc != \"\" && eval(ctlName + \".\" + checkFunc) == undefined) {\r\n return null; \r\n }\r\n } catch (e) {\r\n util.consolelog(e);\r\n return null;\r\n }\r\n return document.getElementById(ctlName);\r\n }\r\n\r\n util.getAutoExecFunctionString = function (func) {\r\n var ret = \"(\";\r\n ret += func.toString();\r\n ret += \")()\";\r\n \r\n return ret;\r\n }\r\n\r\n util.attachIEEvent = function(ctlName, eventName, eventFunc) {\r\n var ctl;\r\n if (typeof ctlName === 'string') {\r\n ctl = eval(ctlName);\r\n } else {\r\n ctl = ctlName;\r\n }\r\n eventName = eventName.toLowerCase();\r\n\r\n var cb = util.evalFunction(eventFunc);\r\n if (cb == null) {\r\n return;\r\n }\r\n\r\n if (ctl.attachEvent) {\r\n ctl.attachEvent(eventName, cb);\r\n } else { // IE11 not support attachEvent, and addEventListener do not work well, so addEvent ourself\r\n var handler = document.createElement(\"script\");\r\n handler.setAttribute(\"for\", ctlName);\r\n handler.setAttribute(\"event\", eventName);\r\n var eventScript = util.getAutoExecFunctionString(eventFunc);\r\n handler.appendChild(document.createTextNode(eventScript));\r\n document.getElementsByTagName(\"head\")[0].appendChild(handler);\r\n }\r\n }\r\n\r\n util.loadWebSocketCtl = function(wsUrl, wssUrl) {\r\n if (xtxasyn.wsObject) {\r\n return xtxasyn.wsObject;\r\n }\r\n var url;\r\n if (util.checkLocationIsHttps()) {\r\n url = \"wss://\" + wssUrl;\r\n } else {\r\n url = \"ws://\" + wsUrl;\r\n }\r\n \r\n var wsObject = {\r\n socket : undefined,\r\n wsMessageQueue : new xtxasyn.HashMap(),\r\n wsMessageQueueId : 0,\r\n wsEventQueue : new xtxasyn.HashMap(),\r\n wsURL : url,\r\n wsCacheMessage : []\r\n };\r\n xtxasyn.wsObject = wsObject;\r\n xtxasyn.wsObject.wsEventQueue.put(\"onusbkeychange\", util.evalFunction(xtxasyn.custom.defaultUsbkeyChange));\r\n \r\n try {\r\n wsObject.socket = new WebSocket(url); \r\n } catch (e) {\r\n util.consolelog(e);\r\n return null;\r\n }\r\n \r\n // eslint-disable-next-line no-unused-vars\r\n wsObject.socket.onopen = function(evt) {\r\n xtxasyn.util.consolelog(\"open websocket[\" + url + \"] ok...\");\r\n xtxasyn.SOF_GetVersion(function(ret) {\r\n util.consolelog(\"SOF_GetVersion:(\" + ret.retVal + \")\");\r\n });\r\n while (xtxasyn.wsObject.wsCacheMessage.length > 0) {\r\n var tb_send = xtxasyn.wsObject.wsCacheMessage.shift();\r\n //alert(tb_send);\r\n xtxasyn.wsObject.socket.send(tb_send);\r\n }\r\n }\r\n // eslint-disable-next-line no-unused-vars\r\n wsObject.socket.onclose = function(evt) {\r\n util.consolelog(\"websocket[\" + url + \"] closed, reopen it...\");\r\n xtxasyn.wsObject = undefined;\r\n xtxasyn.XTXAppWebSocket = xtxasyn.util.loadWebSocketCtl(wsUrl, wssUrl);\r\n };\r\n wsObject.socket.onmessage = function(evt) {\r\n // eslint-disable-next-line no-unused-vars\r\n var eventCmd = false;\r\n if (xtxasyn.util.isEmpty(evt.data)) {\r\n util.consolelog(\"onmessage evt.data is NULL or empty!!!\");\r\n return;\r\n }\r\n try {\r\n var res = JSON.parse(evt.data);\r\n var cmdId = undefined;\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (res.hasOwnProperty('call_cmd_id')) {\r\n cmdId = res['call_cmd_id'];\r\n } else {\r\n util.consolelog(\"return JSON not include call_cmd_id!!!\");\r\n return;\r\n }\r\n \r\n var retVal = undefined;\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (res.hasOwnProperty('retValue')) {\r\n retVal = res['retValue'];\r\n // eslint-disable-next-line no-prototype-builtins\r\n } else if (res.hasOwnProperty('retVal')) {\r\n retVal = res['retVal'];\r\n }\r\n \r\n var methodName = undefined;\r\n var eventName = cmdId.toLowerCase();\r\n var execFunc = xtxasyn.wsObject.wsEventQueue.get(eventName);\r\n if (execFunc && typeof execFunc == 'function') { // event\r\n execFunc(retVal);\r\n } else { // function\r\n var messageQueue = xtxasyn.wsObject.wsMessageQueue.get(cmdId);\r\n if (!messageQueue || !messageQueue.method) {\r\n util.consolelog(\"can't find call_cmd_id[\" + res['call_cmd_id'] + \"]'s method name!!!\");\r\n return;\r\n }\r\n methodName = messageQueue.method;\r\n execFunc = messageQueue.cb;\r\n if (!execFunc || typeof execFunc != 'function') {\r\n util.consolelog(\"can't find call_cmd_id[\" + res['call_cmd_id'] + \"]'s call back function!!!\");\r\n return;\r\n }\r\n var ctx = messageQueue.ctx;\r\n ctx = ctx || {returnType:\"string\"};\r\n var ret;\r\n if (ctx.returnType == \"bool\"){\r\n if (typeof(retVal) == 'string') {\r\n ret = retVal == \"true\" ? true : false;\r\n } else {\r\n ret = retVal;\r\n }\r\n if (ret == undefined) {\r\n ret = false;\r\n }\r\n } else if (ctx.returnType == \"number\"){\r\n if (typeof(retVal) == 'string') {\r\n ret = Number(retVal);\r\n } else {\r\n ret = retVal;\r\n }\r\n if (ret == undefined) {\r\n ret = -1;\r\n }\r\n } else{\r\n ret = retVal;\r\n if (ret == undefined) {\r\n ret = \"\";\r\n }\r\n }\r\n if (res.token) {\r\n //alert(res.token);\r\n xtxasyn.custom.setToken(res.token);\r\n }\r\n if (((methodName == 'SOF_Login' || methodName == 'SOF_LoginEx') && !ret) || (methodName == 'SOF_Logout' && ret)) {\r\n xtxasyn.custom.setToken(\"\");\r\n } \r\n var retObj = {retVal:ret, ctx:ctx};\r\n execFunc(retObj);\r\n xtxasyn.wsObject.wsMessageQueue.remove(cmdId);\r\n }\r\n } catch (e) {\r\n return;\r\n }\r\n };\r\n wsObject.socket.onerror = function(evt) { \r\n xtxasyn.util.consolelog(evt.data);\r\n };\r\n \r\n return wsObject;\r\n }\r\n \r\n util.attachWebSocketEvent = function(wsObject, eventName, eventFunc) {\r\n if (wsObject == null) {\r\n return;\r\n }\r\n wsObject.wsEventQueue.put(eventName.toLowerCase(), util.evalFunction(eventFunc));\r\n }\r\n \r\n util.callWebSocketMethod = function (wsObject, clsid, method, cb, ctx, returnType, argsArray) {\r\n if (wsObject == null) {\r\n return;\r\n }\r\n wsObject.wsMessageQueueId++;\r\n if (typeof(cb) == 'function'){\r\n ctx = ctx || {};\r\n ctx.returnType = returnType;\r\n var messageQueue = {cb:cb, ctx:ctx, method:method};\r\n wsObject.wsMessageQueue.put('i_' + wsObject.wsMessageQueueId, messageQueue);\r\n }\r\n\r\n var sendArray = {\r\n 'call_cmd_id' : 'i_' + wsObject.wsMessageQueueId,\r\n 'CLSID' : clsid,\r\n 'xtx_func_name' : method,\r\n 'func' : method,\r\n 'URL' : window.location.href\r\n };\r\n if (arguments.length > 6) {\r\n for (var i = 1; i <= argsArray.length; i++) {\r\n var strParam = \"param_\" + i;\r\n sendArray[strParam] = argsArray[i - 1];\r\n }\r\n sendArray[\"param\"] = argsArray;\r\n }\r\n var token = xtxasyn.custom.getToken();\r\n if (token && token != \"\") {\r\n sendArray.token = token;\r\n }\r\n if (wsObject.socket.readyState == WebSocket.OPEN) {\r\n wsObject.socket.send(JSON.stringify(sendArray));\r\n } else if (wsObject.socket.readyState == WebSocket.CONNECTING) {\r\n // The websocket connection has not been successfully created. \r\n // If the html page already has requested data, we will put it in the cache(wsObject.wsCacheMessage),\r\n // and then send the data one by one after the connection is successfully created.\r\n wsObject.wsCacheMessage.push(JSON.stringify(sendArray));\r\n } else {\r\n xtxasyn.util.consolelog(\"Can't connect to WebSocket server[\" + wsObject.wsURL + \"]!!!\");\r\n }\r\n }\r\n\r\n util.SynToAsyn = function(retVal, cb, ctx)\r\n {\r\n if (typeof cb == 'function') {\r\n var retObj = {retVal:retVal, ctx:ctx};\r\n cb(retObj);\r\n } \r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-undef\r\nreturn initUtilObject(xtxasyn);\r\n})();\r\n\r\n// initialize index page and other custom action\r\n(function() {\r\n \r\nfunction initCustomActions(xtxasyn) {\r\n var custom = xtxasyn.custom = xtxasyn.custom || {};\r\n \r\n custom.softCertListID = \"\";\r\n custom.hardCertListID = \"\";\r\n custom.allCertListID = \"\";\r\n custom.loginCertID = \"\";\r\n custom.logoutFunc = null;\r\n custom.UsbkeyChangeFunc = null;\r\n custom.loginToken = \"\";\r\n \r\n custom.errorReportFunc = function(msg) {\r\n alert(msg);\r\n }\r\n \r\n custom.setAutoLogoutParameter = function(strCertID, logoutFunc) {\r\n var custom = xtxasyn.custom;\r\n custom.loginCertID = strCertID;\r\n custom.logoutFunc = logoutFunc;\r\n }\r\n\r\n custom.clearDropList = function(dropListId) {\r\n if (dropListId == \"\") {\r\n return;\r\n }\r\n\r\n var obj = document.getElementById(dropListId);\r\n if (obj == undefined) {\r\n obj = eval(dropListId);\r\n } \r\n if (obj == undefined) {\r\n return;\r\n }\r\n\r\n var i, n = obj.length;\r\n for (i = 0; i < n; i++) {\r\n obj.remove(0);\r\n }\r\n }\r\n\r\n custom.pushOneDropListBox = function(userListArray, strListID) \r\n {\r\n var obj = document.getElementById(strListID);\r\n if (obj == undefined) {\r\n obj = eval(strListID);\r\n }\r\n if (obj == undefined) {\r\n return;\r\n }\r\n \r\n for (var i = 0; i < userListArray.length; i++) {\r\n var certObj = userListArray[i];\r\n var objItem = new Option(certObj.certName, certObj.certID);\r\n obj.options.add(objItem);\r\n } \r\n return;\r\n }\r\n\r\n custom.pushUserListToAllDroplist = function(retObj) {\r\n var custom = xtxasyn.custom;\r\n\r\n custom.clearDropList(custom.softCertListID);\r\n custom.clearDropList(custom.hardCertListID);\r\n custom.clearDropList(custom.allCertListID);\r\n\r\n var strUserList = retObj.retVal;\r\n var allListArray = [];\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n var i = strUserList.indexOf(\"&&&\");\r\n if (i <= 0 ) {\r\n break;\r\n }\r\n var strOneUser = strUserList.substring(0, i);\r\n var strName = strOneUser.substring(0, strOneUser.indexOf(\"||\"));\r\n var strCertID = strOneUser.substring(strOneUser.indexOf(\"||\") + 2, strOneUser.length);\r\n allListArray.push({certName:strName, certID:strCertID});\r\n \r\n if (custom.hardCertListID != \"\") {\r\n xtxasyn.GetDeviceInfo(strCertID, 7, function(retObj) {\r\n if (retObj.retVal == \"HARD\") {\r\n custom.pushOneDropListBox([retObj.ctx], custom.hardCertListID);\r\n }\r\n }, {certName:strName, certID:strCertID});\r\n }\r\n \r\n if (custom.softCertListID != \"\") {\r\n xtxasyn.GetDeviceInfo(strCertID, 7, function(retObj) {\r\n if (retObj.retVal == \"SOFT\") {\r\n custom.pushOneDropListBox([retObj.ctx], custom.softCertListID);\r\n }\r\n }, {certName:strName, certID:strCertID});\r\n }\r\n var len = strUserList.length;\r\n strUserList = strUserList.substring(i + 3, len);\r\n }\r\n\r\n if (custom.allCertListID != \"\") {\r\n custom.pushOneDropListBox(allListArray, custom.allCertListID);\r\n }\r\n }\r\n \r\n custom.setUserCertList = function(certListId, certType) {\r\n var custom = xtxasyn.custom;\r\n\r\n if (certType == CERT_TYPE_ALL || certType == undefined) {\r\n custom.allCertListID = certListId;\r\n }\r\n \r\n if (certType == CERT_TYPE_HARD) {\r\n custom.hardCertListID = certListId;\r\n }\r\n \r\n if (certType == CERT_TYPE_SOFT) {\r\n custom.softCertListID = certListId;\r\n }\r\n xtxasyn.SOF_GetUserList(custom.pushUserListToAllDroplist);\r\n }\r\n \r\n custom.setOnUsbKeyChangeCallBack = function(callback) {\r\n var custom = xtxasyn.custom;\r\n custom.UsbkeyChangeFunc = callback;\r\n }\r\n \r\n custom.setErrorReportFunc = function(errFunc) {\r\n var custom = xtxasyn.custom;\r\n custom.errorReportFunc = errFunc;\r\n }\r\n\r\n custom.autoLogoutCallBack = function(retObj) {\r\n var custom = xtxasyn.custom;\r\n if (retObj.retVal.indexOf(custom.loginCertID) <= 0) {\r\n custom.logoutFunc();\r\n }\r\n }\r\n \r\n custom.defaultUsbkeyChange = function() {\r\n var custom = xtxasyn.custom;\r\n xtxasyn.SOF_GetUserList(custom.pushUserListToAllDroplist);\r\n \r\n if (typeof custom.UsbkeyChangeFunc == 'function') {\r\n custom.UsbkeyChangeFunc();\r\n }\r\n\r\n if (custom.loginCertID != \"\" && typeof custom.logoutFunc == 'function') {\r\n xtxasyn.SOF_GetUserList(custom.autoLogoutCallBack);\r\n }\r\n }\r\n \r\n custom.getToken = function() {\r\n return custom.loginToken;\r\n }\r\n \r\n custom.setToken = function(token) {\r\n custom.loginToken = token;\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-undef\r\nreturn initCustomActions(xtxasyn);\r\n})();\r\n\r\n// initialize xtxappcom object\r\n(function() {\r\n \r\nfunction initXTXAppCOM(xtxasyn) {\r\n var util = xtxasyn.util;\r\n var custom = xtxasyn.custom; \r\n\r\n xtxasyn.XTXAppCOM = util.loadIECtl(xtxasyn.xtx_clsid, \"XTXAppObj\", \"SOF_GetVersion()\");\r\n if (xtxasyn.XTXAppCOM == null) {\r\n custom.errorReportFunc(\"加载XTXAppCOM控件失败,请确认已正确安装BJCA证书应用环境!\");\r\n return false;\r\n }\r\n var XTXAppCOM = xtxasyn.XTXAppCOM;\r\n \r\n util.attachIEEvent(\"XTXAppObj\", \"onUsbkeyChange\", xtxasyn.custom.defaultUsbkeyChange);\r\n \r\n // get key pic interface\r\n var GetPicObj = util.loadIECtl(xtxasyn.getpic_clsid, \"GetPicObj\", \"Hash('0')\");\r\n if (GetPicObj == null) {\r\n //custom.errorReportFunc(\"加载GetKeyPic控件失败,请确认已正确安装GetKeyPic控件!\");\r\n } else {\r\n XTXAppCOM.GetPic = function(strCertID) {\r\n return GetPicObj.GetPic(strCertID);\r\n }\r\n XTXAppCOM.Hash = function(inData) {\r\n return GetPicObj.Hash(inData);\r\n }\r\n XTXAppCOM.ConvertPicFormat = function(inData, type) {\r\n return GetPicObj.ConvertPicFormat(inData, type);\r\n }\r\n XTXAppCOM.ConvertGif2Jpg = function(inData) {\r\n return GetPicObj.ConvertGif2Jpg(inData);\r\n }\r\n XTXAppCOM.GetPic1 = function(strCertID) {\r\n return GetPicObj.GetPic1(strCertID);\r\n }\r\n XTXAppCOM.ConvertPicSize = function(strPicture, w, h) {\r\n return GetPicObj.ConvertPicSize(strPicture, w, h);\r\n }\r\n }\r\n \r\n // xtxversion interface\r\n var XTXVersionOBJ = util.loadIECtl(xtxasyn.xtx_version_clsid, \"XTXVersionOBJ\", \"GetEnvVersion()\");\r\n if (XTXVersionOBJ == null) {\r\n //custom.errorReportFunc(\"加载XTXVersion控件失败,请确认已正确安装证书应用环境!\");\r\n } else {\r\n XTXAppCOM.GetEnvVersion = function() {\r\n return XTXVersionOBJ.GetEnvVersion();\r\n }\r\n } \r\n \r\n return true;\r\n}\r\n\r\nfunction initXTXAppWebSocket(xtxasyn) { \r\n xtxasyn.XTXAppWebSocket = xtxasyn.util.loadWebSocketCtl(\"127.0.0.1:21051/xtxapp/\", \"127.0.0.1:21061/xtxapp/\");\r\n if (xtxasyn.XTXAppWebSocket == null) {\r\n // eslint-disable-next-line no-undef\r\n custom.errorReportFunc(\"连接XTXAppCOM服务失败,请确认已正确安装BJCA证书应用环境!\");\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction initXTXAppObject(xtxasyn) {\r\n var util = xtxasyn.util;\r\n xtxasyn.xtx_clsid = \"3F367B74-92D9-4C5E-AB93-234F8A91D5E6\";\r\n xtxasyn.getpic_clsid = \"3BC3C868-95B5-47ED-8686-E0E3E94EF366\";\r\n xtxasyn.xtx_version_clsid = \"574887FB-22A5-488B-A49C-2CF25F56BE68\";\r\n var getImplmentFunction;\r\n\r\n if (util.checkBrowserISIE()) { // IE\r\n if (!initXTXAppCOM(xtxasyn)) {\r\n return false;\r\n }\r\n getImplmentFunction = function(methodInfo) {\r\n if (methodInfo.inParams == '') { // 0 input param\r\n window[methodInfo.funcName] = new Function('cb', 'ctx', \r\n 'xtxasyn.util.SynToAsyn(xtxasyn.XTXAppCOM.' + methodInfo.funcName + '(), cb, ctx);');\r\n } else {\r\n window[methodInfo.funcName] = new Function(methodInfo.inParams, 'cb', 'ctx', \r\n 'xtxasyn.util.SynToAsyn(xtxasyn.XTXAppCOM.' + methodInfo.funcName + '(' + methodInfo.inParams + '), cb, ctx);');\r\n }\r\n }\r\n } else { // other brower\r\n if (!initXTXAppWebSocket(xtxasyn)) {\r\n return false;\r\n }\r\n getImplmentFunction = function(methodInfo) {\r\n if (methodInfo.inParams == '') { // 0 input param\r\n window[methodInfo.funcName] = new Function('cb, ctx', \r\n \"xtxasyn.util.callWebSocketMethod(xtxasyn.XTXAppWebSocket, '\" + methodInfo.clsid + \"', '\" + \r\n methodInfo.funcName + \"', cb, ctx, '\" + methodInfo.outParamType + \"', []);\");\r\n } else {\r\n window[methodInfo.funcName] = new Function(methodInfo.inParams + ', cb, ctx', \r\n \"xtxasyn.util.callWebSocketMethod(xtxasyn.XTXAppWebSocket, '\" + methodInfo.clsid + \"', '\" + \r\n methodInfo.funcName + \"', cb, ctx, '\" + methodInfo.outParamType + \"', [\" + methodInfo.inParams + \"]);\");\r\n }\r\n }\r\n }\r\n\r\n var export_functions = [\r\n {funcName:'SOF_SetSignMethod', inParams:'SignMethod', outParamType:'number', clsid:xtxasyn.xtx_clsid, aliasName:'SetSignMethod'},\r\n {funcName:'SOF_GetSignMethod', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SetEncryptMethod', inParams:'EncryptMethod', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetEncryptMethod', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetUserList', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetUserList'},\r\n {funcName:'SOF_ExportUserCert', inParams:'CertID', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetSignCert'},\r\n {funcName:'SOF_Login', inParams:'CertID, PassWd', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifyUserPIN'},\r\n {funcName:'SOF_GetPinRetryCount', inParams:'CertID', outParamType:'number', clsid:xtxasyn.xtx_clsid, aliasName:'GetUserPINRetryCount'},\r\n {funcName:'SOF_ChangePassWd', inParams:'CertID, oldPass, newPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'ChangeUserPassword'},\r\n {funcName:'SOF_GetCertInfo', inParams:'Cert, type', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetCertBasicinfo'},\r\n {funcName:'SOF_GetCertInfoByOid', inParams:'Cert, Oid', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetExtCertInfoByOID'},\r\n {funcName:'SOF_SignData', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'SignedData'},\r\n {funcName:'SOF_VerifySignedData', inParams:'Cert, InData, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifySignedData'},\r\n {funcName:'SOF_SignFile', inParams:'CertID, InFile', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'SOF_SignFile'},\r\n {funcName:'SOF_VerifySignedFile', inParams:'Cert, InFile, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifySignFile'},\r\n {funcName:'SOF_EncryptData', inParams:'Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'EncodeP7Enveloped'},\r\n {funcName:'SOF_DecryptData', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'DecodeP7Enveloped'},\r\n {funcName:'SOF_EncryptFile', inParams:'Cert, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_DecryptFile', inParams:'CertID, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignMessage', inParams:'dwFlag, CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedMessage', inParams:'MessageData, InData', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifyDatabyP7'},\r\n {funcName:'SOF_GetInfoFromSignedMessage', inParams:'SignedMessage, type', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignDataXML', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedDataXML', inParams:'InData', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetXMLSignatureInfo', inParams:'XMLSignedData, type', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GenRandom', inParams:'RandomLen', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GenerateRandom'},\r\n {funcName:'SOF_PubKeyEncrypt', inParams:'Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'PubKeyEncrypt'},\r\n {funcName:'SOF_PriKeyDecrypt', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'PriKeyDecrypt'},\r\n {funcName:'SOF_SecertSegment', inParams:'Secert, m, n, k', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SecertRecovery', inParams:'Seg', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetLastError', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceCount', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetAllDeviceSN', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceSNByIndex', inParams:'iIndex', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceInfo', inParams:'sDeviceSN, iType', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ChangeAdminPass', inParams:'sDeviceSN, sOldPass, sNewPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'UnlockUserPass', inParams:'sDeviceSN, sAdminPass, sNewUserPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GenerateKeyPair', inParams:'sDeviceSN, sContainerName, iKeyType, bSign', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPubKey', inParams:'sDeviceSN, sContainerName, bSign', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportSignCert', inParams:'sDeviceSN, sContainerName, sCert', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportEncCert', inParams:'sDeviceSN, sContainerName, sCert, sPriKeyCipher', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ReadFile', inParams:'sDeviceSN, sFileName', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'readFile'},\r\n {funcName:'WriteFile', inParams:'sDeviceSN, sFileName, sContent, bPrivate', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'writeFile'},\r\n {funcName:'IsContainerExist', inParams:'sDeviceSN, sContainerName', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'DeleteContainer', inParams:'sDeviceSN, sContainerName', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPKCS10', inParams:'sDeviceSN, sContainerName, sDN, bSign', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'InitDevice', inParams:'sDeviceSN, sAdminPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'AddSignInfo', inParams:'sUserPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetVersion', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ExportExChangeUserCert', inParams:'CertID', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetExchCert'},\r\n {funcName:'SOF_ValidateCert', inParams:'Cert', outParamType:'number', clsid:xtxasyn.xtx_clsid, aliasName:'ValidateCert'},\r\n {funcName:'GetENVSN', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SetENVSN', inParams:'sDeviceSN, sEnvsn', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'IsDeviceExist', inParams:'sDeviceSN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetContainerCount', inParams:'sDeviceSN', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymEncryptData', inParams:'sKey, indata', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'EncryptData'},\r\n {funcName:'SOF_SymDecryptData', inParams:'sKey, indata', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'DecryptData'},\r\n {funcName:'SOF_SymEncryptFile', inParams:'sKey, inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'EncryptFile'},\r\n {funcName:'SOF_SymDecryptFile', inParams:'sKey, inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'DecryptFile'},\r\n {funcName:'SOF_GetLastErrMsg', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_Base64Encode', inParams:'sIndata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_Base64Decode', inParams:'sIndata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashData', inParams:'hashAlg, sInData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashFile', inParams:'hashAlg, inFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'UnlockUserPassEx', inParams:'sDeviceSN, sAdminPin, sNewUserPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'DeleteOldContainer', inParams:'sDeviceSN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'WriteFileEx', inParams:'sDeviceSN, sFileName, sContent', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ReadFileEx', inParams:'sDeviceSN, sFileName', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'WriteFileBase64', inParams:'sDeviceSN, sFileName, sContent', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'DeleteFile', inParams:'sDeviceSN, sFileName', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EncryptDataEx', inParams:'Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'Base64EncodeFile', inParams:'sInFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetRetryCount', inParams:'CertID', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetAllContainerName', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'CreateSoftDevice', inParams:'sDeviceSN, sLabel', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'DeleteSoftDevice', inParams:'sDeviceSN, sPasswd', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnableSoftDevice', inParams:'enable, sDeviceSN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SoftDeviceBackup', inParams:'sDeviceSN, sPasswd', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SoftDeviceRestore', inParams:'sDeviceSN, sPasswd, sInFilePath', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_Logout', inParams:'CertID', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'Logout'},\r\n {funcName:'SetUserConfig', inParams:'type, strConfig', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignByteData', inParams:'CertID, byteLen', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedByteData', inParams:'Cert, byteLen, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetChallengeCode', inParams:'sCertID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportEncCertEx', inParams:'sDeviceSN, sContainerName, sCert, sPriKeyCipher, ulSymAlg', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetCertEntity', inParams:'sCert', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetCertEntity'},\r\n {funcName:'SOF_HMAC', inParams:'hashid, key, indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignDataByPriKey', inParams:'sPriKey, sCert, sInData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportKeyCertToSoftDevice', inParams:'sDeviceSN, sContainerName, sPriKey, sCert, bSign', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'InitDeviceEx', inParams:'sDeviceSN, sAdminPass, sUserPin, sKeyLabel, adminPinMaxRetry, userPinMaxRetry', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SelectFile', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignHashData', inParams:'CertID, b64ashData, hashAlg', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'SignHashData'},\r\n {funcName:'SOF_VerifySignedHashData', inParams:'Cert, b64ashData, SignValue, hashAlg', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifySignedHashData'},\r\n {funcName:'CheckSoftDeviceEnv', inParams:'', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportPfxToDevice', inParams:'sDeviceSN, sContainerName, bSign, strPfx, strPfxPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashDataEx', inParams:'hashAlg, sInData, sCert, sID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashFileEx', inParams:'hashAlg, inFile, sCert, sID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceCountEx', inParams:'type', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetAllDeviceSNEx', inParams:'type', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_UpdateCert', inParams:'CertID, type', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OpenSpecifiedFolder', inParams:'backupFilePath', outParamType:'', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetChallengeCodeEx', inParams:'sCertID, szAccount, money', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'Base64DecodeFile', inParams:'sInData, sFilePath', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnumFilesInDevice', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_Halt', inParams:'sCertID', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSGenREQ', inParams:'b64Hash, hashAlg, bReqCert, policyID, b64Nonce, b64Extension', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSCompareNonce', inParams:'b64TSReq, b64TSAResp', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSGenPDFSignature', inParams:'b64TSAResp, b64OriPDFSignature', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSVerifyPDFSignature', inParams:'b64TSPDFSignature', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSGetPDFSignatureInfo', inParams:'b64TSPDFSignature, iType', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetState', inParams:'sCertID, bCert', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetSyncCode', inParams:'sCertID, ChallengeCode', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_IsLogin', inParams:'CertID', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_LoginEx', inParams:'CertID, PassWd, updateFlag', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnumSupportDeviceList', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPfxFromDevice', inParams:'sDeviceSN, sContainerName, bSign, strPfxPass', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignHashMessage', inParams:'CertID, InHashData, hashAlg', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPfxToFile', inParams:'sDeviceSN, sContainerName, bSign, strPfxPass', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignAPK', inParams:'CertID, strOriSignature', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_GenerateKeyPair', inParams:'sDeviceSN, sContainerName, iKeyTypeRSA, iKeyTypeSM2', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_ExportPubKey', inParams:'sDeviceSN, sContainerName, bSign', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_ImportSignCert', inParams:'sDeviceSN, sContainerName, sRSACert, sSM2Cert', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_ImportEncCert', inParams:'sDeviceSN, sContainerName, sRSACert, sRSAPriKeyCipher, ulRSASymAlg, sSM2Cert, sSM2PriKeyCipher, ulSM2SymAlg', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ListenUKey', inParams:'Parm', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EnableLoginWindow', inParams:'Parm', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignEnvelope', inParams:'CertID, Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_UnSignEnvelope', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_MAKExportPKCS10', inParams:'sDeviceSN, iKeyType, sDN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_MAKImportSignEncCert', inParams:'sDeviceSN, sSignCert, sEncCert, sPriKeyCipher', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_IssueDAKCert', inParams:'sDeviceSN, iKeyType, sDN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_InfoCollect', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_GetBioInfo', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetLastLoginCertID', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ReadESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ReadKFXESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymDecryptFileToData', inParams:'sKey, inFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignMessageBase64', inParams:'dwFlag, CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedMessageBase64', inParams:'MessageData, InData', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedHashMessage', inParams:'MessageData, InHashData', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignDataBase64', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedDataBase64', inParams:'Cert, InData, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashDataExBase64', inParams:'hashAlg, sInData, sCert, sID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetProductVersion', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_UpdateCertEx', inParams:'CertID, PassWd', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetLastSignDataCertID', inParams:'CertID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_SetUserConfig', inParams:'CertID, type, strConfig', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_InvokeCommand', inParams:'CertID, bstrCommand', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ImportSymmKey', inParams:'CertID, ulKeyIndex, InData, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_WriteESealData', inParams:'CertID, InData, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_Encrypt', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_Decrypt', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_Mac', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_PriKeyDecryptEx', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_ReadESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_WriteESealData', inParams:'CertID, InData, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnumESeal', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'GetPicture', inParams:'bstrConName', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SignEnvelopeFile', inParams:'CertID, Cert, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_UnSignEnvelopeFile', inParams:'CertID, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_EncryptFile', inParams:'CertID, Cert, InFile, OutFile, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_DecryptFile', inParams:'CertID, InFile, OutFile, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\t\t\r\n {funcName:'GetPic', inParams:'bstrConName', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'Hash', inParams:'inData', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'ConvertPicFormat', inParams:'inData, type', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'ConvertGif2Jpg', inParams:'inData', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'GetPic1', inParams:'bstrConName', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'ConvertPicSize', inParams:'bstrPic, w, h', outParamType:'string', clsid:xtxasyn.getpic_clsid},\t\t\r\n {funcName:'GetEnvVersion', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_version_clsid},\r\n\t\t{funcName:'InitDeviceWithParam', inParams:'sDeviceSN, sAppName, sAdminPass, sUserPin, sKeyLabel, adminPinMaxRetry, userPinMaxRetry, createFileRights', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SignDataEx', inParams:'CertID, InData,signFlag', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedDataEx', inParams:'Cert, InData, SignValue,signFlag', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SymEncryptDataEx', inParams:'sKey,sIV,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymDecryptDataEx', inParams:'sKey,sIV,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t\r\n\t\t// 3.8 added \r\n\t\t{funcName:'SOFX_InvokeCommand', inParams:'pluginName,InParam', outParamType:'string', clsid:xtxasyn.xtx_clsid},\t\r\n\t\t\r\n\t\t{funcName:'SOF_SymEncryptFileEx', inParams:'sKey,sIV,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymDecryptFileEx', inParams:'sKey,sIV,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SymDecryptFileToDataEx', inParams:'sKey,sIV,inFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_SymEncryptDataWithPadding', inParams:'sKey,sIV,padding,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOFX_SymDecryptDataWithPadding', inParams:'sKey,sIV,padding,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_SymEncryptFileWithPadding', inParams:'sKey,sIV,padding,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOFX_SymDecryptFileWithPadding', inParams:'sKey,sIV,padding,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_VerifySignedDataWithID', inParams:'Cert, InData, SignValue,userId', outParamType:'bool', clsid:xtxasyn.xtx_clsid}, \r\n {funcName:'SOFX_VerifySignedFileWithID', inParams:'Cert, InFile, SignValue,userId', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n ];\r\n\r\n for (var i = 0; i < export_functions.length; i++) {\r\n getImplmentFunction(export_functions[i]);\r\n xtxasyn[export_functions[i].funcName] = window[export_functions[i].funcName];\r\n if (export_functions[i].aliasName) {\r\n window[export_functions[i].aliasName] = window[export_functions[i].funcName];\r\n xtxasyn[export_functions[i].aliasName] = window[export_functions[i].funcName];\r\n }\r\n \r\n }\r\n\r\n return true;\r\n}\r\n\r\n// eslint-disable-next-line no-undef\r\nreturn initXTXAppObject(xtxasyn);\r\n})();\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n////////////////////////////////////// EXPORT VAR AND FUNCTIONS ///////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n// const var\r\nvar CERT_TYPE_HARD = 1;\r\nvar CERT_TYPE_SOFT = 2;\r\nvar CERT_TYPE_ALL = 3;\r\n\r\n// set auto logout parameters\r\nfunction SetAutoLogoutParameter(strCertID, logoutFunc) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setAutoLogoutParameter(strCertID, logoutFunc);\r\n}\r\n\r\n// set user cert list id\r\nfunction SetUserCertList(strListID, certType) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setUserCertList(strListID, certType);\r\n}\r\n\r\n// set custom usbkeychange callback\r\nfunction SetOnUsbKeyChangeCallBack(callback) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setOnUsbKeyChangeCallBack(callback);\r\n}\r\n\r\n// set custom alert function\r\nfunction SetAlertFunction(custom_alert) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setErrorReportFunc(custom_alert);\r\n}\r\n\r\n// get custom userlogin token \r\nfunction GetLoginToken() {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.custom.getToken();\r\n}\r\n\r\nfunction SetLoginToken(tokenData) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.custom.setToken(tokenData);\r\n}\r\n\r\nfunction GetUserListByType(strType, cb, ctx) { // strType is 'HARD' or 'SOFT'\r\n // eslint-disable-next-line no-undef\r\n SOF_GetUserList(function(retObj) {\r\n var strUserList = retObj.retVal;\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n var i = strUserList.indexOf(\"&&&\");\r\n if (i <= 0 ) {\r\n break;\r\n }\r\n var strOneUser = strUserList.substring(0, i);\r\n var strName = strOneUser.substring(0, strOneUser.indexOf(\"||\"));\r\n var strCertID = strOneUser.substring(strOneUser.indexOf(\"||\") + 2, strOneUser.length);\r\n GetDeviceType(strCertID, function(retObj) {\r\n if (retObj.retVal == retObj.ctx.ctx.type) {\r\n if (typeof retObj.ctx.ctx.cb == 'function') {\r\n retObj.ctx.ctx.cb({retVal:retObj.ctx.userList, ctx:retObj.ctx.ctx.ctx})\r\n }\r\n }\r\n }, {userList:strOneUser, ctx:retObj.ctx});\r\n var len = strUserList.length;\r\n strUserList = strUserList.substring(i + 3, len);\r\n }\r\n }, {type:strType, cb:cb, ctx:ctx});\r\n}\r\n\r\n//get usbKey user list\r\nfunction GetUserList_USBKey(cb, ctx) {\r\n return GetUserListByType(\"HARD\", cb, ctx);\r\n}\r\n\r\n//get soft user list\r\nfunction GetUserList_Soft() {\r\n // eslint-disable-next-line no-undef\r\n return GetUserListByType(\"SOFT\", cb, ctx);\r\n}\r\n\r\n//sign data with pkcs7 format\r\nfunction SignByP7(strCertID, strInData, bDetach) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.SOF_SignMessage(bDetach ? 1 : 0, strCertID, strInData);\r\n}\r\n\r\n//get symmitric key length \r\n//because xtx and secxv2 secx default symmitric alg is no equal\r\nfunction GetSymKeyLength() {\r\n return 24; \r\n}\r\n\r\n//get device type return SOFT or HARD\r\nfunction GetDeviceType(strCertID) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.GetDeviceInfo(strCertID, 7); \r\n}\r\n\r\n// calculate file's hash\r\nfunction HashFile(strFilePath) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.SOF_HashFile(2/*sha1*/, strFilePath);\r\n}\r\n\r\nfunction ParseDateString(strDate) {\r\n var strYear = strDate.substring(0, 4);\r\n var strMonth = strDate.substring(4, 6);\r\n var strDay = strDate.substring(6, 8);\r\n var strHour = strDate.substring(8, 10);\r\n var strMin = strDate.substring(10, 12);\r\n var strSecond = strDate.substring(12, 14);\r\n var RtnDate = new Date();\r\n RtnDate.setFullYear(Number(strYear), Number(strMonth) - 1, Number(strDay));\r\n RtnDate.setHours(Number(strHour));\r\n RtnDate.setMinutes(Number(strMin));\r\n RtnDate.setSeconds(Number(strSecond));\r\n return RtnDate;\r\n}\r\n\r\nfunction __loginSignRandomCallBack(retObj) {\r\n if (retObj.retVal == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"客户端签名失败!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n var objForm = retObj.ctx.objForm;\r\n objForm.UserSignedData.value = retObj.retVal;\r\n // eslint-disable-next-line no-undef\r\n objForm.LoginToken.value = xtxasyn.custom.getToken();\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(true);\r\n } else {\r\n objForm.action = retObj.ctx.action;\r\n objForm.submit();\r\n }\r\n}\r\n\r\nfunction __loginVerifyServerSignatureCallBack(retObj) {\r\n if (!retObj.retVal) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"验证服务器端信息失败!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n \r\n var strCertID = retObj.ctx.certID;\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_SignData(strCertID, strServerRan, __loginSignRandomCallBack, retObj.ctx);\r\n}\r\nfunction __loginCheckCertValidNotAfter(retObj) {\r\n var notAfterDate = ParseDateString(retObj.retVal);\r\n var milliseconds = notAfterDate.getTime() - new Date().getTime();\r\n if (milliseconds < 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书已过期,请尽快到北京数字证书认证中心办理证书更新手续!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n days = parseInt(milliseconds / (1000*60*60*24));\r\n // eslint-disable-next-line no-undef\r\n if (days > 0 && days <= 60) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书还有\" + days + \"天过期\\n请您尽快到北京数字证书认证中心办理证书更新手续!\");\r\n // eslint-disable-next-line no-undef\r\n } else if (days == 0) { // 证书有效期天数小于1天\r\n var hours = parseInt(milliseconds / (1000*60*60));\r\n if (hours > 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书还有\" + hours + \"小时过期\\n请您尽快到北京数字证书认证中心办理证书更新手续!\");\r\n }\r\n // 证书有效期小于1小时\r\n var minutes = parseInt(milliseconds / (1000*60));\r\n if (minutes > 1) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书还有\" + minutes + \"分钟过期\\n请您尽快到北京数字证书认证中心办理证书更新手续!\");\r\n } else {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书已过期,请尽快到北京数字证书认证中心办理证书更新手续!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_VerifySignedData(strServerCert, strServerRan, strServerSignedData, \r\n __loginVerifyServerSignatureCallBack, retObj.ctx);\r\n}\r\n\r\nfunction __loginCheckCertValidNotBefore(retObj) {\r\n var notBeforeDate = ParseDateString(retObj.retVal);\r\n var days = parseInt((notBeforeDate.getTime() - new Date().getTime()) / (1000*60*60*24));\r\n if (days > 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书尚未生效!距离生效日期还剩\" + days + \"天!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n var strUserCert = retObj.ctx.objForm.UserCert.value;\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_GetCertInfo(strUserCert, 12, __loginCheckCertValidNotAfter, retObj.ctx);\r\n}\r\n\r\nfunction __loginGetSignCertCallBack(retObj) {\r\n var strUserCert = retObj.retVal;\r\n if (strUserCert == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"导出用户证书失败!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n retObj.ctx.objForm.UserCert.value = strUserCert;\r\n \r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_GetCertInfo(strUserCert, 11, __loginCheckCertValidNotBefore, retObj.ctx);\r\n}\r\n\r\nfunction __loginGetPINRetryCallBack(retObj) {\r\n var retryCount = Number(retObj.retVal);\r\n if (retryCount > 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"校验证书密码失败!您还有\" + retryCount + \"次机会重试!\");\r\n } else if (retryCount == 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书密码已被锁死,请联系BJCA进行解锁!\");\r\n } else {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"登录失败!\");\r\n }\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb();\r\n }\r\n}\r\n\r\nfunction __loginVerifyPINCallBack(retObj) {\r\n var strCertID = retObj.ctx.certID;\r\n var objForm = retObj.ctx.objForm;\r\n if (!retObj.retVal) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_GetPinRetryCount(strCertID, __loginGetPINRetryCallBack, retObj.ctx);\r\n return;\r\n }\r\n objForm.CertID.value = strCertID;\r\n objForm.ContainerName.value = strCertID; \r\n \r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_ExportUserCert(strCertID, __loginGetSignCertCallBack, retObj.ctx);\r\n}\r\n\r\n//Form login\r\nfunction Login(formName, strCertID, strPin, strAction, custom_cb) {\r\n var objForm = eval(formName);\r\n if (objForm == null) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"表单错误!\");\r\n if (typeof(custom_cb) === 'function') {\r\n custom_cb(false);\r\n }\r\n return;\r\n }\r\n if (strCertID == null || strCertID == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"请输入证书密码!\");\r\n if (typeof(custom_cb) === 'function') {\r\n custom_cb(false);\r\n }\r\n return;\r\n }\r\n if (strPin == null || strPin == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"请输入证书密码!\");\r\n if (typeof(custom_cb) === 'function') {\r\n custom_cb(false);\r\n }\r\n return;\r\n }\r\n\r\n //Add a hidden item ...\r\n if (objForm.UserSignedData == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"UserSignedData\\\" value=\\\"\\\">\");\r\n }\r\n if (objForm.UserCert == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"UserCert\\\" value=\\\"\\\">\");\r\n }\r\n if (objForm.CertID == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"CertID\\\" value=\\\"\\\">\");\r\n }\r\n if (objForm.ContainerName == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"ContainerName\\\" value=\\\"\\\">\");\r\n } \r\n if (objForm.LoginToken == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"LoginToken\\\" value=\\\"\\\">\");\r\n }\r\n\r\n var ctx = {certID:strCertID, objForm:objForm, action:strAction, cb:custom_cb};\r\n \r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_Login(strCertID, strPin, __loginVerifyPINCallBack, ctx);\r\n\r\n return;\r\n}\r\n","/*******************************************************\r\n*\r\n* 使用此JS脚本之前请先仔细阅读帮助文档!\r\n*\r\n* @author Fuly\r\n* @version 3.2.3\r\n* @date 2020/12/23\r\n*\r\n**********************************************************/\r\n\r\n\r\n\r\nvar split;\r\n\r\n// Avoid running twice; that would break the `nativeSplit` reference\r\n// eslint-disable-next-line no-unused-vars\r\nsplit = split || function (undef) {\r\n\r\n var nativeSplit = String.prototype.split,\r\n compliantExecNpcg = /()??/.exec(\"\")[1] === undef, // NPCG: nonparticipating capturing group\r\n self;\r\n\r\n self = function (str, separator, limit) {\r\n // If `separator` is not a regex, use `nativeSplit`\r\n if (Object.prototype.toString.call(separator) !== \"[object RegExp]\") {\r\n return nativeSplit.call(str, separator, limit);\r\n }\r\n var output = [],\r\n flags = (separator.ignoreCase ? \"i\" : \"\") +\r\n (separator.multiline ? \"m\" : \"\") +\r\n (separator.extended ? \"x\" : \"\") + // Proposed for ES6\r\n (separator.sticky ? \"y\" : \"\"), // Firefox 3+\r\n lastLastIndex = 0,\r\n // Make `global` and avoid `lastIndex` issues by working with a copy\r\n // eslint-disable-next-line no-redeclare\r\n separator = new RegExp(separator.source, flags + \"g\"),\r\n separator2, match, lastIndex, lastLength;\r\n str += \"\"; // Type-convert\r\n if (!compliantExecNpcg) {\r\n // Doesn't need flags gy, but they don't hurt\r\n separator2 = new RegExp(\"^\" + separator.source + \"$(?!\\\\s)\", flags);\r\n }\r\n /* Values for `limit`, per the spec:\r\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\r\n * If 0, Infinity, or NaN: 0\r\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\r\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\r\n * If other: Type-convert, then use the above rules\r\n */\r\n limit = limit === undef ?\r\n -1 >>> 0 : // Math.pow(2, 32) - 1\r\n limit >>> 0; // ToUint32(limit)\r\n // eslint-disable-next-line no-cond-assign\r\n while (match = separator.exec(str)) {\r\n // `separator.lastIndex` is not reliable cross-browser\r\n lastIndex = match.index + match[0].length;\r\n if (lastIndex > lastLastIndex) {\r\n output.push(str.slice(lastLastIndex, match.index));\r\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\r\n // nonparticipating capturing groups\r\n if (!compliantExecNpcg && match.length > 1) {\r\n match[0].replace(separator2, function () {\r\n for (var i = 1; i < arguments.length - 2; i++) {\r\n if (arguments[i] === undef) {\r\n match[i] = undef;\r\n }\r\n }\r\n });\r\n }\r\n if (match.length > 1 && match.index < str.length) {\r\n Array.prototype.push.apply(output, match.slice(1));\r\n }\r\n lastLength = match[0].length;\r\n lastLastIndex = lastIndex;\r\n if (output.length >= limit) {\r\n break;\r\n }\r\n }\r\n if (separator.lastIndex === match.index) {\r\n separator.lastIndex++; // Avoid an infinite loop\r\n }\r\n }\r\n if (lastLastIndex === str.length) {\r\n if (lastLength || !separator.test(\"\")) {\r\n output.push(\"\");\r\n }\r\n } else {\r\n output.push(str.slice(lastLastIndex));\r\n }\r\n return output.length > limit ? output.slice(0, limit) : output;\r\n };\r\n\r\n // For convenience\r\n String.prototype.split = function (separator, limit) {\r\n return self(this, separator, limit);\r\n };\r\n\r\n return self;\r\n\r\n}();\r\n\r\n\r\nexport function mToken (obj) {\r\n this.obj = obj;\r\n\r\n this.SAR_OK = 0;\r\n this.SAR_FALSE = 1;\r\n\r\n //分组加密算法标识\r\n this.SGD_SM1_ECB = 0x00000101;\r\n this.SGD_SM1_CBC = 0x00000102;\r\n this.SGD_SM1_CFB = 0x00000104;\r\n this.SGD_SM1_OFB = 0x00000108;\r\n this.SGD_SM1_MAC = 0x00000110;\r\n this.SGD_SSF33_ECB = 0x00000201;\r\n this.SGD_SSF33_CBC = 0x00000202;\r\n this.SGD_SSF33_CFB = 0x00000204;\r\n this.SGD_SSF33_OFB = 0x00000208;\r\n this.SGD_SSF33_MAC = 0x00000210;\r\n this.SGD_SM4_ECB = 0x00000401;\r\n this.SGD_SM4_CBC = 0x00000402;\r\n this.SGD_SM4_CFB = 0x00000404;\r\n this.SGD_SM4_OFB = 0x00000408;\r\n this.SGD_SM4_MAC = 0x00000410;\r\n\r\n this.SGD_VENDOR_DEFINED = 0x80000000;\r\n this.SGD_DES_ECB = this.SGD_VENDOR_DEFINED + 0x00000211\r\n this.SGD_DES_CBC = this.SGD_VENDOR_DEFINED + 0x00000212\r\n\r\n this.SGD_3DES168_ECB = this.SGD_VENDOR_DEFINED + 0x00000241\r\n this.SGD_3DES168_CBC = this.SGD_VENDOR_DEFINED + 0x00000242\r\n\r\n this.SGD_3DES112_ECB = this.SGD_VENDOR_DEFINED + 0x00000221\r\n this.SGD_3DES112_CBC = this.SGD_VENDOR_DEFINED + 0x00000222\r\n\r\n this.SGD_AES128_ECB = this.SGD_VENDOR_DEFINED + 0x00000111\r\n this.SGD_AES128_CBC = this.SGD_VENDOR_DEFINED + 0x00000112\r\n\r\n this.SGD_AES192_ECB = this.SGD_VENDOR_DEFINED + 0x00000121\r\n this.SGD_AES192_CBC = this.SGD_VENDOR_DEFINED + 0x00000122\r\n\r\n this.SGD_AES256_ECB = this.SGD_VENDOR_DEFINED + 0x00000141\r\n this.SGD_AES256_CBC = this.SGD_VENDOR_DEFINED + 0x00000142\r\n\r\n\r\n //非对称密码算法标识\r\n this.SGD_RSA = 0x00010000;\r\n this.SGD_SM2_1 = 0x00020100; //ECC签名\r\n this.SGD_SM2_2 = 0x00020200; //ECC密钥交换\r\n this.SGD_SM2_3 = 0x00020400; //ECC加密\r\n\r\n //密码杂凑算法标识\r\n this.SGD_SM3 = 0x00000001;\r\n this.SGD_SHA1 = 0x00000002;\r\n this.SGD_SHA256 = 0x00000004;\r\n this.SGD_RAW = 0x00000080;\r\n this.SGD_MD5 = 0x00000081;\r\n this.SGD_SHA384 = 0x00000082;\r\n this.SGD_SHA512 = 0x00000083;\r\n\r\n\r\n this.SGD_CERT_VERSION = 0x00000001;\r\n this.SGD_CERT_SERIAL = 0x00000002;\r\n this.SGD_CERT_ISSUE = 0x00000005;\r\n this.SGD_CERT_VALID_TIME = 0x00000006;\r\n this.SGD_CERT_SUBJECT = 0x00000007;\r\n this.SGD_CERT_DER_PUBLIC_KEY = 0x00000008;\r\n this.SGD_CERT_DER_EXTENSIONS = 0x00000009;\r\n this.SGD_CERT_NOT_BEFORE = 0x00000010;\r\n this.SGD_CERT_ISSUER_CN = 0x00000021;\r\n this.SGD_CERT_ISSUER_O = 0x00000022;\r\n this.SGD_CERT_ISSUER_OU = 0x00000023;\r\n this.SGD_CERT_ISSUER_C = 0x00000024;\r\n this.SGD_CERT_ISSUER_P = 0x00000025;\r\n this.SGD_CERT_ISSUER_L = 0x00000026;\r\n this.SGD_CERT_ISSUER_S = 0x00000027;\r\n this.SGD_CERT_ISSUER_EMAIL = 0x00000028;\r\n\r\n this.SGD_CERT_SUBJECT_CN = 0x00000031;\r\n this.SGD_CERT_SUBJECT_O = 0x00000032;\r\n this.SGD_CERT_SUBJECT_OU = 0x00000033;\r\n this.SGD_CERT_SUBJECT_EMALL = 0x00000034;\r\n this.SGD_REMAIN_TIME = 0x00000035;\r\n this.SGD_SIGNATURE_ALG = 0x00000036;\r\n this.SGD_CERT_SUBJECT_C = 0x00000037;\r\n this.SGD_CERT_SUBJECT_P = 0x00000038;\r\n this.SGD_CERT_SUBJECT_L = 0x00000039;\r\n this.SGD_CERT_SUBJECT_S = 0x0000003A;\r\n\r\n this.SGD_CERT_CRL = 0x00000041;\r\n\r\n\r\n this.SGD_DEVICE_SORT = 0x00000201;\r\n this.SGD_DEVICE_TYPE = 0x00000202;\r\n this.SGD_DEVICE_NAME = 0x00000203;\r\n this.SGD_DEVICE_MANUFACTURER = 0x00000204;\r\n this.SGD_DEVICE_HARDWARE_VERSION = 0x00000205;\r\n this.SGD_DEVICE_SOFTWARE_VERSION = 0x00000206;\r\n this.SGD_DEVICE_STANDARD_VERSION = 0x00000207;\r\n this.SGD_DEVICE_SERIAL_NUMBER = 0x00000208;\r\n this.SGD_DEVICE_SUPPORT_SYM_ALG = 0x00000209;\r\n this.SGD_DEVICE_SUPPORT_ASYM_ALG = 0x0000020A;\r\n this.SGD_DEVICE_SUPPORT_HASH_ALG = 0x0000020B;\r\n this.SGD_DEVICE_SUPPORT_STORANGE_SPACE = 0x0000020C;\r\n this.SGD_DEVICE_SUPPORT_FREE_SAPCE = 0x0000020D;\r\n this.SGD_DEVICE_RUNTIME = 0x0000020E;\r\n this.SGD_DEVICE_USED_TIMES = 0x0000020F;\r\n this.SGD_DEVICE_LOCATION = 0x00000210;\r\n this.SGD_DEVICE_DESCRIPTION = 0x00000211;\r\n this.SGD_DEVICE_MANAGER_INFO = 0x00000212;\r\n this.SGD_DEVICE_MAX_DATA_SIZE = 0x00000213;\r\n\r\n this.TRUE = 1;\r\n this.FALSE = 0;\r\n\r\n this.GM3000 = 1;\r\n this.K5 = 3;\r\n this.TF = 4;\r\n this.HT = 5;\r\n this.SJK1137 = 2;\r\n\r\n this.TYPE_UKEY = 1; //普通UKEY\r\n this.TYPE_FPKEY = 2; //指纹UKEY\r\n\r\n var g_mTokenPlugin = null;\r\n\r\n\r\n this.SOF_GetLastError = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetLastError();\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n function isIe () {\r\n return (\"ActiveXObject\" in window);\r\n }\r\n\r\n function isMobile () {\r\n var browser = {\r\n versions: function () {\r\n // eslint-disable-next-line no-unused-vars\r\n var u = navigator.userAgent, app = navigator.appVersion;\r\n return {//移动终端浏览器版本信息\r\n trident: u.indexOf('Trident') > -1, //IE内核\r\n presto: u.indexOf('Presto') > -1, //opera内核\r\n webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核\r\n gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核\r\n mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端\r\n ios: !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端\r\n android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器\r\n iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器\r\n iPad: u.indexOf('iPad') > -1, //是否iPad\r\n webApp: u.indexOf('Safari') == -1\r\n //是否web应该程序,没有头部与底部\r\n };\r\n }(),\r\n language: (navigator.browserLanguage || navigator.language).toLowerCase()\r\n }\r\n\r\n if ((browser.versions.mobile) && (browser.versions.ios || browser.versions.android || browser.versions.iPhone || browser.versions.iPad)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n this.SOF_LoadLibrary = function (type) {\r\n os = check_os();\r\n var ret;\r\n if (g_mTokenPlugin == null) {\r\n g_mTokenPlugin = new mTokenPlugin();\r\n }\r\n\r\n if (type == this.GM3000) {\r\n if (isMobile()) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"1\", \"mToken OTG\", \"com.longmai.security.plugin.driver.otg.OTGDriver\");\r\n }\r\n else {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"mtoken_gm3000_hnca.dll\", \"libgm3000.1.0.so\", \"libgm3000.1.0.dylib\");\r\n }\r\n }\r\n else if (type == this.SJK1137) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"SKF_APP.dll\", \"libhunca_hsic_skf.so\", \"libhunca_hsic_skf.dylib\");\r\n }\r\n else if (type == this.HT) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"HUNCA_HT_20522_SKF.dll\", \"libhunca_ht_h2070f63_skf.so\", \"libhunca_ht_h2070f63_skf.dylib\");\r\n }\r\n else if (type == this.K5) {\r\n if (isMobile()) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"2\", \"mToken K5 Bluetooth\", \"com.longmai.security.plugin.driver.ble.BLEDriver\");\r\n }\r\n else {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"mtoken_k5.dll\", \"libgm3000.1.0.so\", \"libk5.1.0.dylib\");\r\n }\r\n }\r\n else if (type == this.TF) {\r\n if (isMobile()) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"0\", \"mToken TF/SD Card\", \"com.longmai.security.plugin.driver.tf.TFDriver\");\r\n } else {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"mtoken_tf.dll\", \"libgm3000.1.0.so\", \"libtf.dylib\");\r\n }\r\n }\r\n else {\r\n return -1;\r\n }\r\n\r\n if (ret != 0) {\r\n return -2;\r\n }\r\n return this.SAR_OK;\r\n };\r\n\r\n\r\n this.SOF_EnumDevice = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n var array = g_mTokenPlugin.SOF_EnumDevice();\r\n if (array == null || array.length <= 0) {\r\n return null;\r\n }\r\n\r\n return array.split(\"||\");\r\n\r\n };\r\n\r\n\r\n this.SOF_GetVersion = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetVersion();\r\n };\r\n\r\n\r\n this.SOF_GetDeviceInstance = function (DeviceName, ApplicationName) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetDeviceInstance(DeviceName, ApplicationName);\r\n };\r\n\r\n this.SOF_ReleaseDeviceInstance = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ReleaseDeviceInstance()\r\n }\r\n\r\n\r\n this.SOF_GetUserList = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n var array = g_mTokenPlugin.SOF_GetUserList();\r\n if (array == null || array.length <= 0)\r\n return null;\r\n\r\n var list = new Array();\r\n var user = array.split(\"&&&\");\r\n var length = user.length;\r\n for (var i = 0; i < length; i++) {\r\n list[i] = user[i].split(\"||\");\r\n }\r\n\r\n return list;\r\n };\r\n\r\n\r\n this.SOF_ExportUserCert = function (ContainerName, KeySpec) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ExportUserCert(ContainerName, KeySpec);\r\n };\r\n\r\n\r\n this.SOF_GetDeviceInfo = function (Type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetDeviceInfo(Type);\r\n };\r\n\r\n\r\n this.SOF_GetCertInfo = function (Base64EncodeCert, Type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetCertInfo(Base64EncodeCert, Type);\r\n };\r\n\r\n this.SOF_GetCertInfoByOid = function (Base64EncodeCert, OID) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetCertInfoByOid(Base64EncodeCert, OID);\r\n }\r\n\r\n this.SOF_Login = function (PassWd) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_Login(PassWd);\r\n };\r\n\r\n\r\n this.SOF_LogOut = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_LogOut();\r\n };\r\n\r\n\r\n this.SOF_GetPinRetryCount = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetPinRetryCount();\r\n };\r\n\r\n\r\n this.SOF_ChangePassWd = function (OldPassWd, NewPassWd) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ChangePassWd(OldPassWd, NewPassWd);\r\n };\r\n\r\n\r\n this.SOF_SetDigestMethod = function (DigestMethod) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SetDigestMethod(DigestMethod);\r\n };\r\n\r\n\r\n this.SOF_SetUserID = function (UserID) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SetUserID(UserID);\r\n };\r\n\r\n\r\n this.SOF_SetEncryptMethodAndIV = function (EncryptMethod, EncryptIV) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SetEncryptMethodAndIV(EncryptMethod, EncryptIV);\r\n };\r\n\r\n\r\n this.SOF_EncryptFileToPKCS7 = function (Cert, InFile, OutFile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EncryptFileToPKCS7(Cert, InFile, OutFile, type);\r\n };\r\n\r\n\r\n this.SOF_SignFileToPKCS7 = function (ContainerName, InFile, OutFile) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignFileToPKCS7(ContainerName, InFile, OutFile);\r\n };\r\n\r\n this.SOF_VerifyFileToPKCS7 = function (strPkcs7Data, InFilePath) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyFileToPKCS7(strPkcs7Data, InFilePath);\r\n };\r\n\r\n this.SOF_DecryptFileToPKCS7 = function (ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DecryptFileToPKCS7(ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type);\r\n };\r\n\r\n this.SOF_DigestData = function (ContainerName, nData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DigestData(ContainerName, nData, InDataLen);\r\n };\r\n\r\n this.SOF_SignData = function (ContainerName, ulKeySpec, InData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignData(ContainerName, ulKeySpec, InData, InDataLen);\r\n };\r\n //交互式签名\r\n this.SOF_SignDataInteractive = function (ContainerName, ulKeySpec, InData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignDataInteractive(ContainerName, ulKeySpec, InData, InDataLen);\r\n }\r\n\r\n\r\n this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignDataToPKCS7(ContainerName, ulKeySpec, InData, ulDetached);\r\n };\r\n\r\n\r\n\r\n this.SOF_VerifyDataToPKCS7 = function (Base64EncodeCert, InData, SignedValue) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyDataToPKCS7(Base64EncodeCert, InData, SignedValue);\r\n };\r\n\r\n\r\n this.SOF_VerifySignedData = function (Base64EncodeCert, digestMethod, InData, SignedValue) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifySignedData(Base64EncodeCert, digestMethod, InData, SignedValue);\r\n };\r\n\r\n\r\n this.SOF_EncryptDataPKCS7 = function (Base64EncodeCert, InData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EncryptDataPKCS7(Base64EncodeCert, InData, InDataLen);\r\n };\r\n\r\n\r\n this.SOF_DecryptDataPKCS7 = function (ContainerName, ulKeySpec, InData) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DecryptDataPKCS7(ContainerName, ulKeySpec, InData);\r\n };\r\n\r\n\r\n this.SOF_GenRemoteUnblockRequest = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenRemoteUnblockRequest();\r\n };\r\n\r\n\r\n this.SOF_GenResetpwdResponse = function (request, soPin, userPin) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenResetpwdResponse(request, soPin, userPin);\r\n };\r\n\r\n\r\n this.SOF_RemoteUnblockPIN = function (request) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_RemoteUnblockPIN(request);\r\n };\r\n\r\n\r\n this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignDataToPKCS7(ContainerName, ulKeySpec, InData, ulDetached);\r\n };\r\n\r\n\r\n this.SOF_VerifyDataToPKCS7 = function (strPkcs7Data, OriginalText, ulDetached) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyDataToPKCS7(strPkcs7Data, OriginalText, ulDetached);\r\n };\r\n\r\n //按expType导出的公钥,格式为国密规范指定的格式或DER格式\r\n this.SOF_ExportPubKey = function (containerName, cerType, expType) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ExportPubKey(containerName, cerType, expType);\r\n }\r\n\r\n this.SOF_EncryptByPubKey = function (strPubKey, strInput, cerType) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EncryptByPubKey(strPubKey, strInput, cerType);\r\n }\r\n\r\n this.SOF_DecryptByPrvKey = function (containerName, cerType, strAsymCipher) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DecryptByPrvKey(containerName, cerType, strAsymCipher);\r\n }\r\n\r\n //RA客户端相关接口:P10及证书导入等\r\n this.SOF_GenerateP10Request = function (deviceName, container, dn, asymAlg, keySpec, keyLength) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenerateP10Request(deviceName, container, dn, asymAlg, keySpec, keyLength);\r\n }\r\n\r\n this.SOF_EnumCertContiner = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EnumCertContiner();\r\n }\r\n\r\n this.SOF_FindContainer = function (certSN) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_FindContainer(certSN);\r\n }\r\n\r\n this.SOF_DeleteCert = function (certSN) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DeleteCert(certSN);\r\n }\r\n\r\n this.SOF_DeleteContainer = function (certSN) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DeleteContainer(certSN);\r\n }\r\n\r\n this.SOF_SignByCert = function (certSN, plain) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignByCert(certSN, plain);\r\n }\r\n\r\n this.SOF_VerifyByCert = function (certSN, plain, signature) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyByCert(certSN, plain, signature);\r\n }\r\n\r\n\r\n this.SOF_ImportCert = function (container, cert, keySpec) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ImportCert(container, cert, keySpec);\r\n }\r\n\r\n this.SOF_ImportCryptoCertAndKey = function (container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ImportCryptoCertAndKey(container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode);\r\n }\r\n\r\n this.SOF_VerifyByExtCert = function (cert, plain, signature, digestMethod) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyByExtCert(cert, plain, signature, digestMethod);\r\n }\r\n\r\n this.SOF_GenerateRandom = function (length) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenerateRandom(length);\r\n }\r\n\r\n this.SOF_SymEncryptFile = function (sessionKey, srcfile, destfile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymEncryptFile(sessionKey, srcfile, destfile, type);\r\n }\r\n\r\n this.SOF_SymDecryptFile = function (sessionKey, srcfile, destfile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymDecryptFile(sessionKey, srcfile, destfile, type);\r\n }\r\n\r\n this.SOF_SymEncryptData = function (sessionKey, inData) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymEncryptData(sessionKey, inData);\r\n }\r\n\r\n this.SOF_SymDecryptData = function (sessionKey, inData) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymDecryptData(sessionKey, inData);\r\n }\r\n\r\n this.SOF_GenerateQRCode = function (qrcode_text) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenerateQRCode(qrcode_text);\r\n }\r\n\r\n\r\n this.SOF_VerifyPinMS = function (responseKey) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyPinMS(responseKey);\r\n }\r\n\r\n this.SOF_GetHardwareType = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetHardwareType();\r\n }\r\n\r\n this.SOF_VerifyFingerprint = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyFingerprint();\r\n }\r\n\r\n\r\n this.SOF_EnumFiles = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n var array = g_mTokenPlugin.SOF_EnumFiles();\r\n if (array == null || array.length <= 0) {\r\n return null;\r\n }\r\n\r\n return array.split(\"||\");\r\n }\r\n\r\n this.SOF_ReadFile = function (fileName, offset, length) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_ReadFile(fileName, Number(offset), Number(length));\r\n }\r\n\r\n this.SOF_WriteFile = function (fileName, offset, data) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_WriteFile(fileName, offset, data);\r\n }\r\n\r\n this.SOF_CreateFile = function (fileName, length, readRight, writeRight) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_CreateFile(fileName, length, readRight, writeRight);\r\n }\r\n\r\n this.SOF_DeleteFile = function (fileName) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_DeleteFile(fileName);\r\n }\r\n\r\n\r\n}\r\n\r\n//判断插件名称是否存在\r\nfunction hasPlugin (name) {\r\n name = name.toLowerCase();\r\n for (var i = 0; i < navigator.plugins.length; i++) {\r\n if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n//判断系统\r\nfunction check_os () {\r\n var windows = (navigator.userAgent.indexOf(\"Windows\", 0) != -1) ? 1 : 0;\r\n // eslint-disable-next-line no-unused-vars\r\n var mac = (navigator.userAgent.indexOf(\"mac\", 0) != -1) ? 1 : 0;\r\n var linux = (navigator.userAgent.indexOf(\"Linux\", 0) != -1) ? 1 : 0;\r\n // eslint-disable-next-line no-unused-vars\r\n var unix = (navigator.userAgent.indexOf(\"X11\", 0) != -1) ? 1 : 0;\r\n var os_type = \"\";\r\n if (windows) os_type = \"MS Windows\";\r\n // eslint-disable-next-line no-unused-vars\r\n else if (linux) os_type = \"Lunix\";\r\n if (hasPlugin(\"mPlugin1.0.0.1\")) {\r\n linuxWin = 2;\r\n return \"id_mPluginV2Router\";\r\n } else {\r\n linuxWin = 1;\r\n return \"mTokenPlugin\";\r\n }\r\n\r\n\r\n}\r\nvar linuxWin = 0;\r\nvar os;\r\n\r\nfunction mTokenPlugin () {\r\n var _xmlhttp;\r\n var retJSON = \"\";\r\n\r\n function AjaxIO (json_in) {\r\n //id_mPluginV2Router mTokenPlugin\r\n if (os == \"id_mPluginV2Router\") {\r\n var router = null;\r\n //var url = \"http://192.168.1.25:51235/alpha\";\r\n var url = \"http://127.0.0.1:51235/alpha\";\r\n\r\n router = document.getElementById(\"id_mPluginV2Router\");\r\n if (null == router) {\r\n alert(\"无法获取到插件,请确认已经安装好插件!\");\r\n }\r\n /*\r\n if(\"https:\" == document.location.protocol)\r\n {\r\n url = \"https://127.0.0.1:51245/alpha\";\r\n }\r\n */\r\n var json = json_in;\r\n\r\n retJSON = router.invoke(url, json);\r\n return retJSON;\r\n } else {\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n var _curDevName = \"\";\r\n var _url = \"http://127.0.0.1:51235/alpha\";\r\n let json = json_in;\r\n if (_xmlhttp == null) {\r\n if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari\r\n _xmlhttp = new XMLHttpRequest();\r\n } else { // code for IE6, IE5\r\n // eslint-disable-next-line no-undef\r\n _xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n }\r\n }\r\n\r\n /***\r\n if (\"https:\" == document.location.protocol) {\r\n _url = \"https://127.0.0.1:51245/alpha\";\r\n }\r\n ***/\r\n _xmlhttp.open(\"POST\", _url, false);\r\n _xmlhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\r\n _xmlhttp.send(\"json=\" + json);\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n function GetHttpResult () {\r\n if (_xmlhttp.readyState == 4 && _xmlhttp.status == 200) {\r\n var obj = eval(\"(\" + _xmlhttp.responseText + \")\");\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_GetLastError = function () {\r\n var json = '{\"function\":\"SOF_GetLastError\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.errorCode;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_LoadLibrary = function (windows, linux, mac) {\r\n var json = '{\"function\":\"SOF_LoadLibrary\", \"winDllName\":\"' + windows + '\", \"linuxSOName\":\"' + linux + '\", \"macDylibName\":\"' + mac + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_EnumDevice = function () {\r\n var json = '{\"function\":\"SOF_EnumDevice\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.array;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GetVersion = function () {\r\n var json = '{\"function\":\"SOF_GetVersion\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.version;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.version;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n var _curDevName;\r\n this.SOF_GetDeviceInstance = function (DeviceName, ApplicationName) {\r\n var json = '{\"function\":\"SOF_GetDeviceInstance\", \"deviceName\":\"' + DeviceName + '\", \"applicationName\":\"' + ApplicationName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n _curDevName = DeviceName;\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n if (ret.rtn == 0) {\r\n _curDevName = DeviceName;\r\n }\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n this.SOF_ReleaseDeviceInstance = function () {\r\n var json = '{\"function\":\"SOF_ReleaseDeviceInstance\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n this.SOF_GetUserList = function () {\r\n var json = '{\"function\":\"SOF_GetUserList\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.array;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_ExportUserCert = function (ContainerName, KeySpec) {\r\n\r\n var json = '{\"function\":\"SOF_ExportUserCert\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + KeySpec + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.cert;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.cert;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GetDeviceInfo = function (Type) {\r\n var json = '{\"function\":\"SOF_GetDeviceInfo\", \"deviceName\":\"' + _curDevName + '\", \"type\":' + Type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.info;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.info;\r\n }\r\n\r\n return -2;\r\n }\r\n\r\n };\r\n\r\n\r\n this.SOF_GetCertInfo = function (Base64EncodeCert, Type) {\r\n var json = '{\"function\":\"SOF_GetCertInfo\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"type\":' + Type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.info;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.info;\r\n }\r\n\r\n return -2;\r\n }\r\n\r\n };\r\n\r\n\r\n this.SOF_GetCertInfoByOid = function (Base64EncodeCert, OID) {\r\n var json = '{\"function\":\"SOF_GetCertInfoByOid\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"oid\":\"' + OID + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.info;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.info;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n };\r\n\r\n\r\n\r\n this.SOF_Login = function (PassWd) {\r\n\r\n var json = '{\"function\":\"SOF_Login\", \"deviceName\":\"' + _curDevName + '\", \"passWd\":\"' + PassWd + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_LogOut = function () {\r\n\r\n var json = '{\"function\":\"SOF_LogOut\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GetPinRetryCount = function () {\r\n\r\n var json = '{\"function\":\"SOF_GetPinRetryCount\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.retryCount;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.retryCount;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_ChangePassWd = function (OldPassWd, NewPassWd) {\r\n\r\n var json = '{\"function\":\"SOF_ChangePassWd\", \"deviceName\":\"' + _curDevName + '\", \"oldUpin\":\"' + OldPassWd + '\", \"newUpin\":\"' + NewPassWd + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SetDigestMethod = function (DigestMethod) {\r\n\r\n var json = '{\"function\":\"SOF_SetDigestMethod\",\"deviceName\":\"' + _curDevName + '\", \"digestMethod\":' + DigestMethod + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SetUserID = function (UserID) {\r\n\r\n var json = '{\"function\":\"SOF_SetUserID\",\"deviceName\":\"' + _curDevName + '\", \"userID\":\"' + UserID + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SetEncryptMethodAndIV = function (EncryptMethod, EncryptIV) {\r\n\r\n var json = '{\"function\":\"SOF_SetEncryptMethodAndIV\",\"deviceName\":\"' + _curDevName + '\", \"encryptMethod\":' + EncryptMethod + ', \"encryptIV\":\"' + EncryptIV + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_EncryptFileToPKCS7 = function (Cert, InFile, OutFile, type) {\r\n\r\n var json = '{\"function\":\"SOF_EncryptFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"cert\":\"' + Cert + '\", \"inFile\":\"' + InFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + OutFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.envelopData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.envelopData;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SignFileToPKCS7 = function (ContainerName, KeySpec, InFile) {\r\n\r\n var json = '{\"function\":\"SOF_SignFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"KeySpec\":' + KeySpec + ', \"inFile\":\"' + InFile.replace(/\\\\/g, '\\\\\\\\') + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_VerifyFileToPKCS7 = function (strPkcs7Data, InFilePath) {\r\n var json = '{\"function\":\"SOF_VerifyFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\",\"strPkcs7Data\":\"' + strPkcs7Data + '\", \"inFile\":\"' + InFilePath.replace(/\\\\/g, '\\\\\\\\') + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_DecryptFileToPKCS7 = function (ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type) {\r\n\r\n var json = '{\"function\":\"SOF_DecryptFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + keySpec + ', \"pkcs7Data\":\"' + Pkcs7Data + '\", \"inFile\":\"' + InFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + OutFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_DigestData = function (ContainerName, InData, InDataLen) {\r\n\r\n var json = '{\"function\":\"SOF_DigestData\",\"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"inData\":\"' + InData + '\", \"inDataLen\":' + InDataLen + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.digest;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.digest;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n //交互式签名\r\n this.SOF_SignDataInteractive = function (ContainerName, ulKeySpec, inData, InDataLen) {\r\n var InDataBase64 = inData; //对报文进行Base64编码\r\n var json = '{\"function\":\"SOF_SignDataInteractive\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InDataBase64 + '\", \"inDataLen\":' + InDataLen + '}';\r\n\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return null;\r\n }\r\n };\r\n\r\n this.SOF_SignData = function (ContainerName, ulKeySpec, InData, InDataLen) {\r\n\r\n var json = '{\"function\":\"SOF_SignDataEx\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InData + '\", \"inDataLen\":' + InDataLen + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_VerifySignedData = function (Base64EncodeCert, digestMethod, InData, SignedValue) {\r\n var json = '{\"function\":\"SOF_VerifySignedDataEx\",\"deviceName\":\"' + _curDevName + '\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"digestMethod\":' + digestMethod + ', \"inData\":\"' + InData + '\", \"signedValue\":\"' + SignedValue + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_EncryptDataPKCS7 = function (Base64EncodeCert, InData, InDataLen) {\r\n\r\n var json = '{\"function\":\"SOF_EncryptDataPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"inData\":\"' + InData + '\", \"inDataLen\":' + InDataLen + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.encrypedData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.encrypedData;\r\n }\r\n\r\n return -2;\r\n }\r\n\r\n };\r\n\r\n\r\n this.SOF_DecryptDataPKCS7 = function (ContainerName, ulKeySpec, InData) {\r\n\r\n var json = '{\"function\":\"SOF_DecryptDataPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InData + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.decryptedData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.decryptedData;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GenRemoteUnblockRequest = function () {\r\n\r\n var json = '{\"function\":\"SOF_GenRemoteUnblockRequest\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.request;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.request;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GenResetpwdResponse = function (request, soPin, userPin) {\r\n\r\n var json = '{\"function\":\"SOF_GenResetpwdResponse\", \"deviceName\":\"' + _curDevName + '\", \"request\":\"' + request + '\", \"soPin\":\"' + soPin + '\", \"userPin\":\"' + userPin + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.request;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.request;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_RemoteUnblockPIN = function (request) {\r\n\r\n var json = '{\"function\":\"SOF_RemoteUnblockPIN\", \"deviceName\":\"' + _curDevName + '\", \"request\":\"' + request + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {\r\n\r\n var json = '{\"function\":\"SOF_SignDataToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InData + '\", \"detached\":' + ulDetached + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.pkcs7;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.pkcs7;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_VerifyDataToPKCS7 = function (strPkcs7Data, OriginalText, ulDetached) {\r\n\r\n var json = '{\"function\":\"SOF_VerifyDataToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"pkcs7\":\"' + strPkcs7Data + '\", \"original\":\"' + OriginalText + '\", \"detached\":' + ulDetached + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n //按expType导出的公钥,格式为国密规范指定的格式或DER格式或裸数据格式\r\n this.SOF_ExportPubKey = function (containerName, keySpec, expType) //expType=1: 国密格式; 2:DER; 3:RAW (SM2 public key ONLY: X|Y, X,Y各为32字节)\r\n {\r\n var json = '{\"function\":\"SOF_ExportPubKeyEx\",\"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + containerName + '\", \"keySpec\":' + keySpec + ', \"expType\":' + expType + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.pubKey;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.pubKey;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n //公钥加密\r\n this.SOF_EncryptByPubKey = function (strPubKey, strInput, cerType) {\r\n var json = '{\"function\":\"SOF_EncryptByPubKey\", \"deviceName\":\"' + _curDevName + '\", \"pubKey\":\"' + strPubKey + '\", \"asymPlain\":\"' + strInput + '\", \"keySpec\":' + cerType + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.asymCipher;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.asymCipher;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n //私钥解密\r\n this.SOF_DecryptByPrvKey = function (containerName, cerType, strAsymCipher) {\r\n var json = '{\"function\":\"SOF_DecryptByPrvKey\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + containerName + '\", \"asymCipher\":\"' + strAsymCipher + '\", \"keySpec\":' + cerType + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.asymPlain;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.asymPlain;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n //RA客户端控件\r\n this.SOF_CreateKeyPair = function (container, keySpec, asymAlg, keyLength) {\r\n var json = '{\"function\":\"SOF_CreateKeyPair\",\"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"asymAlg\":' + asymAlg + ', \"keySpec\":' + keySpec + ',\"keyLength\":' + keyLength + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_EnumCertContiner = function () {\r\n var json = '{\"function\":\"SOF_EnumCertContiner\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.containerName;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.containerName;\r\n }\r\n\r\n return \"\";\r\n }\r\n }\r\n\r\n this.SOF_FindContainer = function (certSN) {\r\n var json = '{\"function\":\"SOF_FindContainer\",\"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.containerName;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.containerName;\r\n }\r\n\r\n return \"\";\r\n }\r\n }\r\n\r\n this.SOF_DeleteCert = function (certSN) {\r\n var json = '{\"function\":\"SOF_DeleteCert\",\"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_DeleteContainer = function (certSN) {\r\n var json = '{\"function\":\"SOF_DeleteContainer\", \"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SignByCert = function (certSN, plain) {\r\n var json = '{\"function\":\"SOF_SignByCert\", \"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\", \"inData\":\"' + plain + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_VerifyByCert = function (certSN, plain, signature, digestMethod) {\r\n\r\n var json = '{\"function\":\"SOF_VerifyByCert\", \"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\",\"digestMethod\":' + digestMethod + ', \"inData\":\"' + plain + '\", \"signed\":\"' + signature + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_VerifyByExtCert = function (cert, plain, signature, digestMethod) {\r\n var json = '{\"function\":\"SOF_VerifyByExtCert\",\"deviceName\":\"' + _curDevName + '\", \"cert\":\"' + cert + '\", \"digestMethod\":' + digestMethod + ', \"inData\":\"' + plain + '\", \"signed\":\"' + signature + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n // this.SOF_GenerateP10Request = function (container, dn, asymAlg, keySpec, keyLength) {\r\n // var json = '{\"function\":\"SOF_GenerateP10Request\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"certDN\":\"' + dn + '\", \"asymAlg\":' + asymAlg + ', \"keySpec\":' + keySpec + ',\"keyLength\":' + keyLength + '}';\r\n // if (linuxWin == 2) {\r\n // var retJSON = \"\";\r\n // try {\r\n // retJSON = AjaxIO(json);\r\n // } catch (e) {\r\n // return -3;\r\n // }\r\n //\r\n //\r\n // if (retJSON.length > 3) {\r\n // var obj = eval(\"(\" + retJSON + \")\");\r\n // return obj.outData;\r\n // } else {\r\n // return -2;\r\n //\r\n // }\r\n // } else {\r\n // try {\r\n // AjaxIO(json);\r\n // }\r\n // catch (e) {\r\n // return -3;\r\n // }\r\n //\r\n // var ret = GetHttpResult();\r\n // if (ret) {\r\n // return ret.outData;\r\n // }\r\n //\r\n // return null;\r\n // }\r\n // }\r\n this.SOF_GenerateP10Request = function (_curDevName, container, dn, asymAlg, keySpec, keyLength) {\r\n var json = '{\"function\":\"SOF_GenerateP10Request\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"certDN\":\"' + dn + '\", \"asymAlg\":' + asymAlg + ', \"keySpec\":' + keySpec + ',\"keyLength\":' + keyLength + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n this.SOF_ImportCert = function (container, cert, keySpec) {\r\n var json = '{\"function\":\"SOF_ImportCert\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"cert\":\"' + cert + '\", \"keySpec\":' + keySpec + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_ImportCryptoCertAndKey = function (container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode) {\r\n var json = '{\"function\":\"SOF_ImportCryptoCertAndKey\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"cert\":\"' + cert + '\", \"asymAlg\":' + nAsymAlg + ', \"sessionKey\":\"' + EncryptedSessionKeyData + '\", \"symAlg\":\"' + symAlg + '\", \"encrypedData\":\"' + EncryptedPrivateKeyData + ', + \"mode\":' + mode + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_GenerateRandom = function (length) {\r\n var json = '{\"function\":\"SOF_GenRandom\", \"deviceName\":\"' + _curDevName + '\", \"inDataLen\":' + length + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SymEncryptFile = function (sessionKey, srcfile, destfile, type) {\r\n var json = '{\"function\":\"SOF_SymEncryptFile\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inFile\":\"' + srcfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + destfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SymDecryptFile = function (sessionKey, srcfile, destfile, type) {\r\n var json = '{\"function\":\"SOF_SymDecryptFile\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inFile\":\"' + srcfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + destfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SymEncryptData = function (sessionKey, inData) {\r\n var json = '{\"function\":\"SOF_SymEncryptData\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inData\":\"' + inData + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_SymDecryptData = function (sessionKey, inData) {\r\n var json = '{\"function\":\"SOF_SymDecryptData\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inData\":\"' + inData + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n /////////////////////////////////////////////////////////////////\r\n this.SOF_GenerateQRCode = function (qrcode_text_in) {\r\n var qrcode_text = qrcode_text_in.replace(/\"/g, '\\\\\"');\r\n var json = '{\"module\":\"libQR\",\"function\":\"SOF_GenerateQRCode\", \"inData\":\"' + qrcode_text + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_VerifyPinMS = function (responseKey) {\r\n var json = '{\"function\":\"SOF_VerifyPinMS\", \"deviceName\":\"' + _curDevName + '\", \"passWd\":\"' + responseKey + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n /////////////////////////////////////////////////////////////////\r\n this.SOF_GetHardwareType = function () {\r\n var json = '{\"function\":\"SOF_GetHardwareType\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.type;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.type;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_VerifyFingerprint = function () {\r\n var json = '{\"function\":\"SOF_VerifyFingerprint\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_EnumFiles = function () {\r\n var json = '{\"function\":\"SOF_EnumFiles\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.array;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_ReadFile = function (fileName, offset, length) {\r\n var json = '{\"function\":\"SOF_ReadFile\", \"deviceName\":\"' + _curDevName + '\", \"fileName\":\"' + fileName + '\", \"offset\":' + offset + ',\"length\":' + length + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n }\r\n }\r\n\r\n this.SOF_WriteFile = function (fileName, offset, data) {\r\n var json = '{\"function\":\"SOF_WriteFile\", \"deviceName\":\"' + _curDevName + '\", \"fileName\":\"' + fileName + '\", \"offset\":' + offset + ',\"inData\":\"' + data + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SOF_CreateFile = function (fileName, length, readRight, writeRight) {\r\n var json = '{\"function\":\"SOF_CreateFile\", \"deviceName\":\"' + _curDevName + '\",\"fileName\":\"' + fileName + '\", \"length\" :' + length + ', \"readRight\":' + readRight + ',\"writeRight\":' + writeRight + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SOF_DeleteFile = function (fileName) {\r\n var json = '{\"function\":\"SOF_DeleteFile\", \"deviceName\":\"' + _curDevName + '\",\"fileName\":\"' + fileName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n //Socket API\r\n this.SocketConnect = function (HostName, Port) {\r\n var json = '{\"module\":\"libSocket\",\"function\":\"SocketConnect\", \"HostName\":\"' + HostName + '\", \"Port\":' + Port + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SocketDisConnect = function () {\r\n var json = '{\"module\":\"libSocket\",\"function\":\"SocketDisConnect\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SocketSendText = function (SendText) {\r\n var json = '{\"module\":\"libSocket\",\"function\":\"SocketSendText\", \"SendText\":\"' + SendText + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.RecvText;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.RecvText;\r\n }\r\n }\r\n }\r\n}\r\n","var map = {\n\t\"./admin.jpg\": 6296,\n\t\"./personal.jpg\": 1865,\n\t\"./personal1.jpg\": 456,\n\t\"./personal2.jpg\": 6964\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7021;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-dialog',{attrs:{\"title\":_vm.title,\"visible\":_vm.isShow,\"width\":\"350px\",\"append-to-body\":true},on:{\"close\":_vm.handleClose}},[_c('slide-verify',{ref:\"slideblock\",attrs:{\"l\":42,\"r\":10,\"w\":310,\"h\":155,\"imgs\":_vm.imgs,\"accuracy\":_vm.accuracy,\"slider-text\":_vm.sliderText},on:{\"success\":_vm.onSuccess,\"fail\":_vm.onFail,\"again\":_vm.onAgain,\"refresh\":_vm.onRefresh,\"fulfilled\":_vm.onFulfilled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <el-dialog\r\n :title=\"title\"\r\n :visible=\"isShow\"\r\n width=\"350px\"\r\n :append-to-body=\"true\"\r\n @close=\"handleClose\"\r\n >\r\n <slide-verify\r\n ref=\"slideblock\"\r\n :l=\"42\"\r\n :r=\"10\"\r\n :w=\"310\"\r\n :h=\"155\"\r\n :imgs=\"imgs\"\r\n :accuracy=\"accuracy\"\r\n :slider-text=\"sliderText\"\r\n @success=\"onSuccess\"\r\n @fail=\"onFail\"\r\n @again=\"onAgain\"\r\n @refresh=\"onRefresh\"\r\n @fulfilled=\"onFulfilled\"\r\n ></slide-verify>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n name: \"YcSlideVerify\",\r\n props: {\r\n title: {\r\n type: String,\r\n default: \"滑动验证\",\r\n },\r\n isShow: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n accuracy: 5,\r\n sliderText: \"拖动完成上方拼图\",\r\n countDownNum: 120,\r\n }\r\n },\r\n computed: {\r\n imgs() {\r\n const list = []\r\n for (let i = 1; i < 9; i++) {\r\n list.push(`/cloud-img/${i}.jpg`)\r\n }\r\n return list\r\n },\r\n },\r\n watch: {\r\n isShow(newVal) {\r\n // 这里第三方引用,ref没有渲染完成,reset报错,还不能用?号\r\n newVal &&\r\n this.$refs.slideblock &&\r\n this.$refs.slideblock.reset &&\r\n this.$refs.slideblock.reset()\r\n },\r\n },\r\n created() {},\r\n methods: {\r\n onSuccess() {\r\n this.$emit(\"success\")\r\n },\r\n onFail() {},\r\n onAgain() {},\r\n onRefresh() {},\r\n onFulfilled() {},\r\n handleClose() {\r\n this.$emit(\"close\")\r\n },\r\n },\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.el-dialog__wrapper {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n::v-deep .el-dialog {\r\n margin-top: 0 !important;\r\n border-radius: 8px;\r\n}\r\n::v-deep .el-dialog__header {\r\n background-color: #f2f6fc;\r\n border-radius: 8px 8px 0 0;\r\n}\r\n.el-dialog__body {\r\n display: flex;\r\n justify-content: center;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=33a7114a&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=33a7114a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"33a7114a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"customer\",staticStyle:{\"display\":\"none\"}},[_c('chat-vue',{attrs:{\"visible\":_vm.visible,\"jumpPage\":_vm.jumpPage,\"title\":_vm.title,\"json\":_vm.json,\"regular\":_vm.regular},on:{\"update:visible\":function($event){_vm.visible=$event}}}),_c('div',{staticClass:\"customerService\"},[_c('div',{staticClass:\"mobile\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"headset\",on:{\"click\":function($event){_vm.visible = !_vm.visible}}},[_vm._m(0),_vm._m(1)])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('i',{staticClass:\"el-icon-headset\"})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('a',[_vm._v(\"在线客服\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"chat\"},[_c('header',[_c('img',{attrs:{\"src\":require('assets/customerService/admin.jpg')}}),_c('span',[_vm._v(_vm._s(_vm.title))]),(_vm.jumpPage)?_c('i',{staticClass:\"icon-enlarge\",on:{\"click\":_vm.enlarge}},[_c('img',{attrs:{\"src\":require('assets/customerService/enlarge.png')}})]):_vm._e(),_c('i',{staticClass:\"el-icon-close\",on:{\"click\":_vm.close}})]),_c('main',{ref:\"main\"},_vm._l((_vm.messagelist),function(item,index){return _c('div',{key:index,class:['message', item.id]},[_c('img',{staticClass:\"avatar\",attrs:{\"src\":require(`assets/customerService/${item.id}.jpg`)}}),_c('div',{staticClass:\"content\"},[_vm._l((item.msg),function(msg,index){return _c('span',{key:msg + index,class:item.msg.length > 1 ? 'href' : '',domProps:{\"innerHTML\":_vm._s((item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg)},on:{\"click\":function($event){item.msg.length > 1 && _vm.regularClick(msg)}}})}),(item.based)?_c('div',{staticClass:\"based\",on:{\"click\":function($event){return _vm.handExpand(item)}}},[_c('span',[_vm._v(\"依据\")]),_c('span',{class:{ 'is-active': item.isActive }},[_vm._v(_vm._s(item.based)),_c('i',{staticClass:\"el-icon-d-arrow-right\"})])]):_vm._e()],2)])}),0),_c('nav',_vm._l((_vm.regular),function(item,index){return _c('el-button',{key:item + index,attrs:{\"size\":\"mini\",\"round\":\"\"},on:{\"click\":function($event){return _vm.regularClick(item)}}},[_vm._v(_vm._s(item))])}),1),_c('el-input',{attrs:{\"type\":\"textarea\",\"maxlength\":\"500\",\"autosize\":{ minRows: 2, maxRows: 3 },\"autofocus\":\"true\",\"resize\":\"none\",\"placeholder\":\"请反馈您的问题,我们将尽快回复\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.carriageReturn.apply(null, arguments)}},model:{value:(_vm.textareaValue),callback:function ($$v) {_vm.textareaValue=$$v},expression:\"textareaValue\"}}),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\",\"disabled\":!_vm.textareaValue},on:{\"click\":_vm.send}},[_vm._v(\"发送\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n props: {\r\n visible: Boolean,\r\n jumpPage: String,\r\n json: String,\r\n title: String,\r\n commit: String,\r\n regular: Array\r\n },\r\n data() {\r\n return {\r\n textareaValue: \"\",\r\n // regular: ['发票增值税率', '城市维护建设税', '教育费附加征收率'],\r\n messagelist: [\r\n {id: 'admin', msg: ['您好,38号客服很高兴为你服务!'], isActive: false},\r\n // {id: 'personal', msg: ['消费税?']}\r\n ],\r\n isActive: false\r\n }\r\n },\r\n computed: {\r\n questions() {\r\n return JSON.parse(this.json)\r\n }\r\n },\r\n methods: {\r\n close() {\r\n this.$emit(\"update:visible\", false);\r\n },\r\n carriageReturn() {\r\n let e = window.event || arguments[0];\r\n if ((e.key == \"Enter\" || e.code == \"Enter\" || e.keyCode == 13) && this.textareaValue) {\r\n this.send()\r\n }\r\n },\r\n send() {\r\n if(!this.textareaValue.replace(/[^\\w\\u4E00-\\u9FA5]/g, ''))\r\n return\r\n\r\n this.add(this.textareaValue, \"personal\", ()=> {this.textareaValue = ''})\r\n this.search(this.textareaValue)\r\n },\r\n regularClick(msg) {\r\n this.add(msg)\r\n this.search(msg)\r\n },\r\n search(msg) {\r\n const list = this.questions.filter(item => item.faq.replace(/[^\\w\\u4E00-\\u9FA5]/g, '').toLowerCase().includes(msg.replace(/[^\\w\\u4E00-\\u9FA5]/g, '').toLowerCase()))\r\n let [vlaue, based] = ['', '']\r\n \r\n if(list.length > 1) {\r\n vlaue = list.reduce((prev, curr) => [...prev, curr.faq], [])\r\n } else if(list.length == 1) {\r\n [vlaue, based] = [list[0].msg, list[0].based]\r\n } else if([\"您好\",\"你好\"].includes(msg.replace(/[^\\w\\u4E00-\\u9FA5]/g, ''))) {\r\n vlaue = '您好!'\r\n } else {\r\n vlaue = '请提关键词问题?<br/> 比如: 税率<br/><br/><a href=\"tel:4000770168\">客服热线:<span style=\"color: #FF575F;\">400 0770 168</span></a>'\r\n }\r\n this.add(vlaue, 'admin', null, based)\r\n },\r\n add(msg, id=\"personal\", fun, based = \"\") {\r\n this.messagelist.push({\r\n id,\r\n msg: Array.isArray(msg) ? msg : [msg],\r\n based,\r\n isActive: false\r\n })\r\n this.$nextTick(() => {\r\n fun && fun()\r\n // this.$refs.main.scrollTop += 70\r\n this.$refs.main.scrollTop = this.$refs.main.scrollHeight\r\n // console.log(this.$refs.main.scrollTop, this.$refs.main.scrollHeight)\r\n })\r\n },\r\n enlarge() {\r\n // this.$router.resolve({\r\n // name: this.jumpPage\r\n // })\r\n \r\n window.open(this.jumpPage, '_blank')\r\n },\r\n handExpand(item) {\r\n item.isActive = !item.isActive\r\n }\r\n }\r\n}","<template>\r\n <div class=\"chat\" v-show=\"visible\">\r\n <header>\r\n <img :src=\"require('assets/customerService/admin.jpg')\" />\r\n <span>{{ title }}</span>\r\n <i class=\"icon-enlarge\" v-if=\"jumpPage\" @click=\"enlarge\"\r\n ><img :src=\"require('assets/customerService/enlarge.png')\"\r\n /></i>\r\n <i class=\"el-icon-close\" @click=\"close\"></i>\r\n </header>\r\n <main ref=\"main\">\r\n <div\r\n v-for=\"(item, index) in messagelist\"\r\n :key=\"index\"\r\n :class=\"['message', item.id]\"\r\n >\r\n <img\r\n class=\"avatar\"\r\n :src=\"require(`assets/customerService/${item.id}.jpg`)\"\r\n />\r\n <div class=\"content\">\r\n <span\r\n v-for=\"(msg, index) in item.msg\"\r\n :key=\"msg + index\"\r\n v-html=\"(item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg\"\r\n :class=\"item.msg.length > 1 ? 'href' : ''\"\r\n @click=\"item.msg.length > 1 && regularClick(msg)\"\r\n ></span>\r\n <div class=\"based\" v-if=\"item.based\" @click=\"handExpand(item)\">\r\n <span>依据</span\r\n ><span :class=\"{ 'is-active': item.isActive }\"\r\n >{{ item.based }}<i class=\"el-icon-d-arrow-right\"></i\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n </main>\r\n <nav>\r\n <el-button\r\n size=\"mini\"\r\n round\r\n v-for=\"(item, index) in regular\"\r\n :key=\"item + index\"\r\n @click=\"regularClick(item)\"\r\n >{{ item }}</el-button\r\n >\r\n </nav>\r\n <el-input\r\n type=\"textarea\"\r\n maxlength=\"500\"\r\n :autosize=\"{ minRows: 2, maxRows: 3 }\"\r\n autofocus=\"true\"\r\n resize=\"none\"\r\n placeholder=\"请反馈您的问题,我们将尽快回复\"\r\n v-model=\"textareaValue\"\r\n @keyup.enter.native=\"carriageReturn\"\r\n >\r\n </el-input>\r\n <!-- <el-button size=\"mini\" type=\"primary\">发送</el-button> -->\r\n <el-button\r\n type=\"primary\"\r\n size=\"mini\"\r\n :disabled=\"!textareaValue\"\r\n @click=\"send\"\r\n >发送</el-button\r\n >\r\n </div>\r\n</template>\r\n<script>\r\nimport chatMixin from \"./chatMixin\"\r\nexport default {\r\n name: \"ChatMini\",\r\n mixins: [chatMixin],\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.chat {\r\n width: 350px;\r\n height: 480px;\r\n position: fixed;\r\n bottom: 10px;\r\n right: 55px;\r\n z-index: 2001;\r\n background-color: #ffffff;\r\n border-radius: 12px;\r\n border: 1px solid #e6ebf5;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);\r\n overflow: hidden;\r\n > header {\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n background-color: #ff575f;\r\n font-size: 16px;\r\n padding: 10px;\r\n font-weight: 400;\r\n color: #fafdff;\r\n > img {\r\n width: 44px;\r\n height: 44px;\r\n border-radius: 50%;\r\n margin-right: 10px;\r\n transition: all 0.3s linear;\r\n &:focus,\r\n &:hover {\r\n transform: scale(1.2, 1.2) rotate(15deg);\r\n }\r\n }\r\n i {\r\n cursor: pointer;\r\n position: absolute;\r\n top: 5px;\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 6px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n transition: all 0.3s linear;\r\n &:focus,\r\n &:hover {\r\n transform: scale(1.2, 1.2);\r\n background-color: rgba(255, 137, 122, 0.8);\r\n }\r\n &.el-icon-close {\r\n right: 10px;\r\n }\r\n &.icon-enlarge {\r\n right: 35px;\r\n }\r\n > img {\r\n width: 12px;\r\n }\r\n }\r\n }\r\n\r\n > main {\r\n width: 100%;\r\n height: 60%;\r\n overflow-y: auto;\r\n padding-bottom: 20px;\r\n background-color: #f7f7f9;\r\n // 滚动条宽度\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n // 滚动条轨道\r\n &::-webkit-scrollbar-track {\r\n background: rgb(239, 239, 239);\r\n border-radius: 2px;\r\n }\r\n // 小滑块\r\n &::-webkit-scrollbar-thumb {\r\n background: #ff8879;\r\n border-radius: 10px;\r\n }\r\n &::-webkit-scrollbar-thumb:hover {\r\n background: #ff755d;\r\n }\r\n .message {\r\n display: flex;\r\n gap: 15px;\r\n position: relative;\r\n margin: 20px 5px 0px 5px;\r\n opacity: 0;\r\n .avatar {\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 50%;\r\n }\r\n .content {\r\n width: fit-content;\r\n max-width: 250px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n color: #4c4c4d;\r\n line-height: 20px;\r\n padding: 10px;\r\n border-radius: 10px;\r\n background-color: #ffffff;\r\n .href {\r\n cursor: pointer;\r\n display: block;\r\n color: #ff575f;\r\n margin-bottom: 0.5rem;\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n > .based {\r\n cursor: pointer;\r\n color: #909399;\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n border-top: 1px solid #ebebed;\r\n padding-top: 5px;\r\n margin-top: 5px;\r\n gap: 5px;\r\n\r\n & > span:first-child {\r\n white-space: nowrap;\r\n color: #4c4c4d;\r\n border-radius: 10px;\r\n background-color: #eeeef0;\r\n padding: 0px 7px;\r\n }\r\n\r\n & > span:last-child {\r\n width: 100%;\r\n position: relative;\r\n display: inline-block;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n padding-right: 12px;\r\n\r\n .el-icon-d-arrow-right {\r\n position: absolute;\r\n right: 0px;\r\n bottom: 5px;\r\n transform: rotate(90deg);\r\n transition: all 0.35s linear;\r\n }\r\n &.is-active {\r\n overflow: visible;\r\n white-space: normal;\r\n .el-icon-d-arrow-right {\r\n transform: rotate(270deg);\r\n }\r\n }\r\n\r\n &:hover {\r\n color: #ff575f;\r\n }\r\n }\r\n }\r\n }\r\n &.admin {\r\n animation: animation01 0.3s linear 1.5s forwards;\r\n .content::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n left: 37px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #ffffff;\r\n }\r\n }\r\n &.personal {\r\n animation: animation01 0.3s linear 0.3s forwards;\r\n flex-direction: row-reverse;\r\n .content::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n right: 37px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent #ffffff transparent;\r\n }\r\n }\r\n @keyframes animation01 {\r\n 0% {\r\n transform: translateY(20px);\r\n opacity: 0;\r\n }\r\n\r\n 100% {\r\n transform: translateY(0px);\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n > nav {\r\n // overflow-x: auto;\r\n background-color: #f7f7f9;\r\n border-bottom: 1px solid #e7e7ea;\r\n padding: 5px 10px;\r\n display: flex;\r\n .el-button {\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: #4c4c4d;\r\n background-color: #fff !important;\r\n border: 1px solid #e7e7ea;\r\n padding: 5px 8px;\r\n }\r\n }\r\n > .el-textarea {\r\n border-color: transparent;\r\n textarea {\r\n overflow-y: hidden;\r\n padding-right: 65px;\r\n font-weight: 400;\r\n color: #19191a;\r\n font-size: 12px;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n }\r\n textarea,\r\n textarea:focus {\r\n border-color: transparent;\r\n }\r\n }\r\n > .el-button {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./chat.vue?vue&type=template&id=755436e0&scoped=true&\"\nimport script from \"./chat.vue?vue&type=script&lang=js&\"\nexport * from \"./chat.vue?vue&type=script&lang=js&\"\nimport style0 from \"./chat.vue?vue&type=style&index=0&id=755436e0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"755436e0\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div ref=\"customer\" style=\"display: none\">\r\n <chat-vue\r\n :visible.sync=\"visible\"\r\n :jumpPage=\"jumpPage\"\r\n :title=\"title\"\r\n :json=\"json\"\r\n :regular=\"regular\"\r\n />\r\n <div class=\"customerService\">\r\n <div class=\"mobile\">\r\n <slot></slot>\r\n <!-- <div><i class=\"el-icon-mobile\"></i></div>\r\n <div>\r\n <span>客服热线</span>\r\n <a href=\"tel:4000770168\">400 0770 168</a>\r\n <template v-if=\"!['/login', '/register'].includes($route.path)\">\r\n <span style=\"margin-top: 10px\">银行服务电话</span>\r\n <a href=\"tel:13973004180\">13973004180(蒋行长)</a>\r\n <a href=\"tel:15773001997\">15773001997(彭经理)</a>\r\n </template>\r\n </div> -->\r\n </div>\r\n <div class=\"headset\" @click=\"visible = !visible\">\r\n <div><i class=\"el-icon-headset\"></i></div>\r\n <div><a>在线客服</a></div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport chatVue from \"./chat.vue\"\r\nexport default {\r\n name: \"YcCustomerService\",\r\n components: {\r\n chatVue,\r\n },\r\n props: {\r\n jumpPage: String,\r\n title: String,\r\n json: String,\r\n regular: Array,\r\n },\r\n data() {\r\n return {\r\n visible: false,\r\n }\r\n },\r\n computed: {\r\n hasSlot() {\r\n return Boolean(this.$slots.default)\r\n },\r\n },\r\n watch: {\r\n $route(to) {\r\n if (to.path != this.jumpPage) {\r\n this.$refs.customer.style.display = \"block\"\r\n } else {\r\n this.$refs.customer.style.display = \"none\"\r\n }\r\n },\r\n },\r\n mounted() {\r\n this.$refs.customer.style.display = \"block\"\r\n },\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.customerService {\r\n position: fixed;\r\n right: 0px;\r\n bottom: 35px;\r\n z-index: 2001;\r\n > div {\r\n cursor: pointer;\r\n position: absolute;\r\n right: 0px;\r\n display: flex;\r\n align-items: center;\r\n background-color: #ffffff;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);\r\n &:hover {\r\n > div:first-child {\r\n color: #ff4949;\r\n i {\r\n animation-name: animateRotate;\r\n animation-duration: 0.5s;\r\n animation-iteration-count: infinite;\r\n }\r\n }\r\n }\r\n > div:first-child {\r\n width: 50px;\r\n height: 50px;\r\n text-align: center;\r\n line-height: 50px;\r\n font-size: 18px;\r\n }\r\n > div:last-child {\r\n opacity: 0;\r\n // transition: all 0.3s linear;\r\n padding: 10px;\r\n border-radius: 6px;\r\n position: absolute;\r\n min-height: 50px;\r\n display: flex;\r\n flex-direction: column;\r\n // align-items: center;\r\n justify-content: space-around;\r\n background-color: #ffffff;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);\r\n &::after {\r\n content: \"\";\r\n position: absolute;\r\n top: calc(50% - 10px);\r\n right: -20px;\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #ffffff;\r\n filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.2));\r\n }\r\n a {\r\n color: #333;\r\n font-size: 14px;\r\n display: block;\r\n }\r\n }\r\n }\r\n .mobile {\r\n bottom: 50px;\r\n border-bottom: 1px solid #e6ebf5;\r\n &:hover {\r\n > div:last-child {\r\n left: -210px;\r\n opacity: 1;\r\n animation-name: animateMobile;\r\n animation-duration: 0.5s;\r\n }\r\n }\r\n > div:last-child {\r\n left: -120vw;\r\n width: 190px;\r\n bottom: 0px;\r\n a {\r\n width: fit-content;\r\n position: relative;\r\n margin-top: 5px;\r\n text-indent: 5px;\r\n &:hover {\r\n color: #ff4949;\r\n &::before {\r\n width: 100%;\r\n right: auto;\r\n left: 0px;\r\n }\r\n }\r\n &::before {\r\n content: \"\";\r\n width: 0%;\r\n height: 1px;\r\n opacity: 0.6;\r\n background: #ff4949;\r\n transition: all 0.5s linear;\r\n position: absolute;\r\n right: 0px;\r\n bottom: -2px;\r\n }\r\n }\r\n &::after {\r\n top: calc(100% - 35px);\r\n }\r\n }\r\n @keyframes animateMobile {\r\n 0% {\r\n left: -200vw;\r\n opacity: 0;\r\n }\r\n 0.1% {\r\n left: -310px;\r\n opacity: 0;\r\n }\r\n 100% {\r\n left: -210px;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n .headset {\r\n bottom: 0px;\r\n &:hover {\r\n > div:last-child {\r\n left: -110px;\r\n opacity: 1;\r\n animation-name: animateHeadset;\r\n animation-duration: 0.5s;\r\n }\r\n }\r\n > div:last-child {\r\n left: -120vw;\r\n width: 90px;\r\n }\r\n @keyframes animateHeadset {\r\n 0% {\r\n left: -120vw;\r\n opacity: 0;\r\n }\r\n 0.1% {\r\n left: -210px;\r\n opacity: 0.5;\r\n }\r\n 100% {\r\n left: -110px;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n @keyframes animateRotate {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 20% {\r\n transform: rotate(7deg);\r\n }\r\n 40% {\r\n transform: rotate(0deg);\r\n }\r\n 80% {\r\n transform: rotate(-7deg);\r\n }\r\n 100% {\r\n transform: rotate(0deg);\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=849349a0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=849349a0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"849349a0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"YcQuestion\"},[_c('div',{staticClass:\"chatPage\"},[_c('header',{staticStyle:{\"background\":\"url(/cloud-img/customerService/chatTop.png) center\",\"background-size\":\"cover\"}},[_c('div',[_c('h3',[_vm._v(_vm._s(_vm.title))]),_c('span',[_vm._v(\"Problem Help\")])]),_c('p',[_vm._v(\"小优为您提供24小时服务\")])]),_c('div',{staticClass:\"main\"},[_c('div',[_c('main',{ref:\"main\"},[_c('p',[_vm._v(\"今天\"+_vm._s(_vm.currData))]),_vm._l((_vm.messagelist),function(item,index){return _c('div',{key:index,class:['message', item.id]},[_c('img',{staticClass:\"avatar\",attrs:{\"src\":require(`assets/customerService/${item.id}.jpg`)}}),_c('div',{staticClass:\"content\"},[_vm._l((item.msg),function(msg,index){return _c('span',{key:msg + index,class:item.msg.length > 1 ? 'href' : '',domProps:{\"innerHTML\":_vm._s((item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg)},on:{\"click\":function($event){item.msg.length > 1 && _vm.regularClick(msg)}}})}),(item.based)?_c('div',{staticClass:\"based\",on:{\"click\":function($event){$event.preventDefault();return _vm.handExpand(item)}}},[_c('span',[_vm._v(\"依据\")]),_c('span',{class:{ 'is-active': item.isActive }},[_vm._v(_vm._s(item.based)),_c('i',{staticClass:\"el-icon-d-arrow-right\"})])]):_vm._e()],2)])})],2),_c('footer',[_c('el-input',{attrs:{\"type\":\"textarea\",\"maxlength\":\"500\",\"autosize\":{ minRows: 6, maxRows: 6 },\"autofocus\":\"true\",\"resize\":\"none\",\"placeholder\":\"请输入你要咨询的问题\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.carriageReturn.apply(null, arguments)}},model:{value:(_vm.textareaValue),callback:function ($$v) {_vm.textareaValue=$$v},expression:\"textareaValue\"}}),_c('el-button',{style:(!_vm.textareaValue\n ? 'background-color: #F7F7F9;color: #FF575F;border-color: transparent;'\n : ''),attrs:{\"type\":\"primary\",\"disabled\":!_vm.textareaValue},on:{\"click\":_vm.send}},[_vm._v(\"发送\")])],1)]),_c('aside',[_c('el-collapse',{attrs:{\"accordion\":\"\"},model:{value:(_vm.activeNames),callback:function ($$v) {_vm.activeNames=$$v},expression:\"activeNames\"}},_vm._l((_vm.questionsList),function(item,key,index){return _c('el-collapse-item',{key:key,attrs:{\"name\":index}},[_c('template',{slot:\"title\"},[_c('img',{attrs:{\"src\":require(`assets/customerService/ellipticalWenh.png`)}}),_vm._v(_vm._s(key)+\" \")]),_vm._l((item),function(faq){return _c('div',{key:faq,domProps:{\"innerHTML\":_vm._s(faq)},on:{\"click\":function($event){return _vm.regularClick(faq)}}})})],2)}),1)],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"YcQuestion\">\r\n <div class=\"chatPage\">\r\n <header\r\n style=\"\r\n background: url(/cloud-img/customerService/chatTop.png) center\r\n no-repeat cover;\r\n background-size: cover;\r\n \"\r\n >\r\n <div>\r\n <h3>{{ title }}</h3>\r\n <span>Problem Help</span>\r\n </div>\r\n <p>小优为您提供24小时服务</p>\r\n </header>\r\n <div class=\"main\">\r\n <div>\r\n <main ref=\"main\">\r\n <p>今天{{ currData }}</p>\r\n <div\r\n v-for=\"(item, index) in messagelist\"\r\n :key=\"index\"\r\n :class=\"['message', item.id]\"\r\n >\r\n <img\r\n class=\"avatar\"\r\n :src=\"require(`assets/customerService/${item.id}.jpg`)\"\r\n />\r\n <div class=\"content\">\r\n <span\r\n v-for=\"(msg, index) in item.msg\"\r\n :key=\"msg + index\"\r\n v-html=\"(item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg\"\r\n :class=\"item.msg.length > 1 ? 'href' : ''\"\r\n @click=\"item.msg.length > 1 && regularClick(msg)\"\r\n ></span>\r\n <div\r\n class=\"based\"\r\n v-if=\"item.based\"\r\n @click.prevent=\"handExpand(item)\"\r\n >\r\n <span>依据</span\r\n ><span :class=\"{ 'is-active': item.isActive }\"\r\n >{{ item.based }}<i class=\"el-icon-d-arrow-right\"></i\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n </main>\r\n <footer>\r\n <el-input\r\n type=\"textarea\"\r\n maxlength=\"500\"\r\n :autosize=\"{ minRows: 6, maxRows: 6 }\"\r\n autofocus=\"true\"\r\n resize=\"none\"\r\n placeholder=\"请输入你要咨询的问题\"\r\n v-model=\"textareaValue\"\r\n @keyup.enter.native=\"carriageReturn\"\r\n >\r\n </el-input>\r\n <el-button\r\n type=\"primary\"\r\n :disabled=\"!textareaValue\"\r\n :style=\"\r\n !textareaValue\r\n ? 'background-color: #F7F7F9;color: #FF575F;border-color: transparent;'\r\n : ''\r\n \"\r\n @click=\"send\"\r\n >发送</el-button\r\n >\r\n </footer>\r\n </div>\r\n <aside>\r\n <el-collapse v-model=\"activeNames\" accordion>\r\n <el-collapse-item\r\n v-for=\"(item, key, index) in questionsList\"\r\n :key=\"key\"\r\n :name=\"index\"\r\n >\r\n <template slot=\"title\">\r\n <img\r\n :src=\"require(`assets/customerService/ellipticalWenh.png`)\"\r\n />{{ key }}\r\n </template>\r\n <div\r\n v-for=\"faq in item\"\r\n :key=\"faq\"\r\n v-html=\"faq\"\r\n @click=\"regularClick(faq)\"\r\n ></div>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </aside>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport chatMixin from \"comp/YcCustomerService/chatMixin\"\r\nexport default {\r\n name: \"YcQuestion\",\r\n mixins: [chatMixin],\r\n data() {\r\n return {\r\n activeNames: [1],\r\n }\r\n },\r\n computed: {\r\n currData() {\r\n const currData = new Date()\r\n return `${currData.getHours()}:${currData.getMinutes()}`\r\n },\r\n questionsList() {\r\n return this.questions.reduce((prev, curr) => {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (prev.hasOwnProperty(curr.type)) {\r\n prev[curr.type].push(curr.faq)\r\n } else {\r\n prev[curr.type] = [curr.faq]\r\n }\r\n return prev\r\n }, {})\r\n },\r\n },\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.YcQuestion {\r\n // min-width: auto;\r\n // overflow: hidden;\r\n // height: 100vh;\r\n ::v-deep .chatPage {\r\n background-color: #ffffff;\r\n\r\n > header {\r\n height: 8vw;\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n gap: 5vw;\r\n padding-left: 8vw;\r\n // background: url(\"~assets/customerService/chatTop.png\");\r\n // background-position: center center;\r\n // background-repeat: no-repeat;\r\n // background-size: cover;\r\n\r\n > div {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n // flex-direction: row-reverse;\r\n h3 {\r\n height: 1vw;\r\n margin-top: 0px;\r\n font-size: 2.125rem;\r\n font-weight: bold;\r\n color: #191a2c;\r\n font-family: Source Han Sans CN-Bold, Source Han Sans CN;\r\n }\r\n\r\n span {\r\n font-size: 1rem;\r\n font-family: LXGW New Clear Gothic-Regular, LXGW New Clear Gothic;\r\n font-weight: 400;\r\n color: #666;\r\n }\r\n }\r\n\r\n p {\r\n font-size: 1rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n color: #2e2f42;\r\n }\r\n }\r\n\r\n .main {\r\n display: flex;\r\n\r\n > div {\r\n width: 74vw;\r\n position: relative;\r\n\r\n > main {\r\n height: 62vh;\r\n overflow-y: auto;\r\n padding-bottom: 2vw;\r\n background-color: #f7f7f9;\r\n\r\n // 滚动条宽度\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n\r\n // 滚动条轨道\r\n &::-webkit-scrollbar-track {\r\n background: rgb(239, 239, 239);\r\n border-radius: 2px;\r\n }\r\n\r\n // 小滑块\r\n &::-webkit-scrollbar-thumb {\r\n background: #ff8879;\r\n border-radius: 10px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb:hover {\r\n background: #ff755d;\r\n }\r\n\r\n > p {\r\n text-align: center;\r\n font-size: 0.875rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n color: #909399;\r\n }\r\n\r\n .message {\r\n display: flex;\r\n gap: 15px;\r\n margin: 1.5vw 1.5vw 0px 1.5vw;\r\n opacity: 0;\r\n\r\n .avatar {\r\n width: 2.5vw;\r\n height: 2.5vw;\r\n min-width: 35px;\r\n min-height: 35px;\r\n border-radius: 50%;\r\n transition: all 0.3s linear;\r\n &:focus,\r\n &:hover {\r\n transform: scale(1.2, 1.2) rotate(15deg);\r\n }\r\n }\r\n\r\n .content {\r\n width: fit-content;\r\n max-width: 50vw;\r\n font-weight: 400;\r\n font-size: 1rem;\r\n color: #4c4c4d;\r\n padding: 10px;\r\n border-radius: 10px;\r\n position: relative;\r\n background-color: #ffffff;\r\n\r\n .href {\r\n cursor: pointer;\r\n display: block;\r\n color: #ff575f;\r\n margin-bottom: 1.5rem;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n > .based {\r\n cursor: pointer;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n color: #909399;\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n border-top: 1px solid #ebebed;\r\n padding-top: 0.625rem;\r\n margin-top: 0.625rem;\r\n gap: 0.625rem;\r\n\r\n & > span:first-child {\r\n white-space: nowrap;\r\n color: #4c4c4d;\r\n border-radius: 18px;\r\n background-color: #eeeef0;\r\n padding: 0.1875rem 0.625rem;\r\n margin-top: -0.1875rem;\r\n }\r\n\r\n & > span:last-child {\r\n width: 100%;\r\n position: relative;\r\n display: inline-block;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n padding-right: 12px;\r\n\r\n .el-icon-d-arrow-right {\r\n position: absolute;\r\n right: 0px;\r\n bottom: 0px;\r\n transform: rotate(90deg);\r\n transition: all 0.35s linear;\r\n }\r\n &.is-active {\r\n overflow: visible;\r\n white-space: normal;\r\n .el-icon-d-arrow-right {\r\n transform: rotate(270deg);\r\n }\r\n }\r\n\r\n &:hover {\r\n color: #ff575f;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.admin {\r\n animation: animation01 0.3s linear 1.5s forwards;\r\n\r\n .content {\r\n margin-top: 20px;\r\n\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n left: -10px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #fff;\r\n }\r\n\r\n &::after {\r\n content: \"小优客服【38号为您服务】\";\r\n width: 200px;\r\n font-size: 0.875rem;\r\n font-family: Source Han Sans CN-Medium, Source Han Sans CN;\r\n font-weight: 500;\r\n color: #8b8c8f;\r\n position: absolute;\r\n left: 0px;\r\n top: -20px;\r\n }\r\n }\r\n }\r\n\r\n &.personal {\r\n animation: animation01 0.3s linear 0.3s forwards;\r\n flex-direction: row-reverse;\r\n\r\n .content::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n right: -10px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent #ffffff transparent;\r\n }\r\n }\r\n\r\n @keyframes animation01 {\r\n 0% {\r\n transform: translateY(20px);\r\n opacity: 0;\r\n }\r\n\r\n 100% {\r\n transform: translateY(0px);\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n footer {\r\n height: 30vh;\r\n border: 1px solid #e7e7ea;\r\n\r\n > .el-textarea {\r\n border-color: transparent;\r\n\r\n textarea {\r\n overflow-y: hidden;\r\n // padding-right: 65px;\r\n font-weight: 400;\r\n color: #19191a;\r\n font-size: 1rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n }\r\n\r\n textarea,\r\n textarea:focus {\r\n border-color: transparent;\r\n }\r\n }\r\n\r\n > .el-button {\r\n float: right;\r\n // position: absolute;\r\n // bottom: 40px;\r\n // right: 40px;\r\n z-index: 1;\r\n font-size: 0.875rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n border-radius: 4px;\r\n margin-right: 2vw;\r\n width: 5vw;\r\n min-width: 92px;\r\n }\r\n }\r\n }\r\n\r\n aside {\r\n width: 26vw;\r\n height: calc(100vh - 8vw);\r\n padding: 1vw;\r\n overflow-y: auto;\r\n background-color: #ffffff;\r\n\r\n .el-collapse-item__header {\r\n color: #373a3c;\r\n font-size: 1.5rem;\r\n font-weight: 500;\r\n font-family: Source Han Sans CN-Medium, Source Han Sans CN;\r\n padding: 2rem;\r\n background-color: #f00;\r\n background: linear-gradient(#ffdad4, #ffa9a3);\r\n\r\n &.is-active {\r\n color: #ffffff;\r\n background: linear-gradient(#ff897a, #ff645a);\r\n\r\n i {\r\n color: #ffffff;\r\n }\r\n }\r\n\r\n img {\r\n width: 2.25rem;\r\n height: 2.25rem;\r\n float: left;\r\n margin-left: -0.5rem;\r\n margin-right: 0.5rem;\r\n }\r\n\r\n i {\r\n font-size: 2rem;\r\n color: #ff575f;\r\n font-weight: 900;\r\n }\r\n }\r\n\r\n .el-collapse-item__content {\r\n font-size: 1rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n padding: 20px 20px 20px 40px;\r\n color: #000000;\r\n background-color: #f7f7f9;\r\n\r\n > div {\r\n position: relative;\r\n margin-top: 1rem;\r\n cursor: pointer;\r\n transition: all 0.3s linear;\r\n\r\n &:first-child {\r\n margin-top: 0px;\r\n }\r\n\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 5px;\r\n left: -15px;\r\n // transform: rotate(-45deg);\r\n // float: left;\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #ffa9a3;\r\n }\r\n\r\n &:hover {\r\n color: #ff575f;\r\n transform: translate(0.5rem);\r\n\r\n &::before {\r\n border-color: transparent transparent transparent #ff575f;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6185ef7a&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=6185ef7a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6185ef7a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"rules\":_vm.loginRules}},[(_vm.loginForm.username == undefined)?_c('div',{staticClass:\"ca-bg-box\"},[_c('div',{staticClass:\"ca-bg-img\"}),_c('div',{staticClass:\"ca-bg-text\"},[_vm._v(\"请插入UKEY证书\")]),_c('img',{staticClass:\"ca-refresh\",class:{ start: _vm.caLoading },attrs:{\"src\":require('assets/ca/refresh.png'),\"alt\":\"\"},on:{\"click\":_vm.caRead}})]):_c('div',{staticClass:\"ca-bg-info\"},[_c('div',{staticClass:\"ca-bg-text\"},[_vm._v(\" CA名称:\"),_c('span',{staticClass:\"caName\"},[_vm._v(_vm._s(_vm.loginForm.username))])]),_c('img',{staticClass:\"ca-refresh\",class:{ start: _vm.caLoading },attrs:{\"src\":require('assets/ca/refresh.png'),\"alt\":\"\"},on:{\"click\":_vm.caRead}})]),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\",\"placeholder\":\"密码\",\"show-password\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleLogin.apply(null, arguments)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}},[_c('img',{staticClass:\"el-input__icon input-icon\",attrs:{\"slot\":\"prefix\",\"src\":require('assets/ca/password.png')},slot:\"prefix\"})])],1),_c('el-form-item',[_c('el-button',{staticClass:\"login-btn\",staticStyle:{\"width\":\"100%\"},attrs:{\"loading\":_vm.loading,\"size\":\"medium\",\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin.apply(null, arguments)}}},[(!_vm.loading)?_c('span',[_vm._v(\"登 录\")]):_c('span',[_vm._v(\"登 录 中...\")])])],1),_vm._t(\"default\")],2),_c('el-dialog',{attrs:{\"title\":\"提示\",\"visible\":_vm.dialogVisible.showInfo,\"width\":\"30%\",\"center\":\"\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialogVisible, \"showInfo\", $event)}}},[_c('span',{staticStyle:{\"color\":\"red\"}},[_vm._v(_vm._s(_vm.caInfo.error_text))]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogVisible.showInfo = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){_vm.dialogVisible.showInfo = false}}},[_vm._v(\"确 定\")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable no-unused-vars */\r\n/*******************************************************\r\n *\r\n * 函数名称:Base64encode()\r\n * 功 能:对数据进行Base64加密\r\n * 说\t明:函数中将数据使用_utf8_encode()进行编码转换后再加密,保证数据完整\r\n *\r\n **********************************************************/\r\n\r\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n\r\nexport function _Base64encode (input) {\r\n\r\n var output = \"\";\r\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n var i = 0;\r\n\r\n input = _utf8_encode(input);\r\n\r\n while (i < input.length) {\r\n\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\r\n }\r\n return output;\r\n}\r\n\r\n/*******************************************************\r\n *\r\n * 函数名称:Base64decode()\r\n * 功 能:对数据进行Base64解密\r\n * 说\t明:函数中将数据使用_utf8_decode()将解密后的数据编码,保证数据完整\r\n *\r\n **********************************************************/\r\nfunction _Base64decode (input) {\r\n var output = \"\";\r\n var chr1, chr2, chr3;\r\n var enc1, enc2, enc3, enc4;\r\n var i = 0;\r\n\r\n //input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\r\n // eslint-disable-next-line no-useless-escape\r\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\r\n while (i < input.length) {\r\n\r\n enc1 = _keyStr.indexOf(input.charAt(i++));\r\n enc2 = _keyStr.indexOf(input.charAt(i++));\r\n enc3 = _keyStr.indexOf(input.charAt(i++));\r\n enc4 = _keyStr.indexOf(input.charAt(i++));\r\n\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n\r\n output = output + String.fromCharCode(chr1);\r\n\r\n if (enc3 != 64) {\r\n output = output + String.fromCharCode(chr2);\r\n }\r\n if (enc4 != 64) {\r\n output = output + String.fromCharCode(chr3);\r\n }\r\n\r\n }\r\n\r\n output = _utf8_decode(output);\r\n\r\n return output;\r\n}\r\n\r\n/*******************************************************\r\n *\r\n * 函数名称:_utf8_encode()\r\n * 功 能:将数据进行utf8编码\r\n * 说\t明:\r\n *\r\n **********************************************************/\r\nfunction _utf8_encode (in_string) {\r\n var string = \"\" + in_string;\r\n string = string.replace(/\\r\\n/g, \"\\n\");\r\n var utftext = \"\";\r\n\r\n for (var n = 0; n < string.length; n++) {\r\n\r\n var c = string.charCodeAt(n);\r\n\r\n if (c < 128) {\r\n utftext += String.fromCharCode(c);\r\n } else if ((c > 127) && (c < 2048)) {\r\n utftext += String.fromCharCode((c >> 6) | 192);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n } else {\r\n utftext += String.fromCharCode((c >> 12) | 224);\r\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n }\r\n return utftext;\r\n}\r\n\r\n/*******************************************************\r\n *\r\n * 函数名称:_utf8_decode()\r\n * 功 能:将数据进行utf8解码\r\n * 说\t明:\r\n *\r\n **********************************************************/\r\nfunction _utf8_decode (utftext) {\r\n var string = \"\";\r\n var i = 0;\r\n var c1 = 0;\r\n var c2 = 0;\r\n var c3 = 0;\r\n var c = c1 = c2 = 0;\r\n\r\n while (i < utftext.length) {\r\n\r\n c = utftext.charCodeAt(i);\r\n\r\n if (c < 128) {\r\n string += String.fromCharCode(c);\r\n i++;\r\n } else if ((c > 191) && (c < 224)) {\r\n c2 = utftext.charCodeAt(i + 1);\r\n string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\r\n i += 2;\r\n } else {\r\n c2 = utftext.charCodeAt(i + 1);\r\n c3 = utftext.charCodeAt(i + 2);\r\n string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n i += 3;\r\n }\r\n }\r\n return string;\r\n}\r\n","/**\r\n * @name mTokenPlugin集成代码\r\n * @author Akay\r\n * @version 0.7.12\r\n * @date 2020.07.21\r\n *\r\n * @description\r\n *ver 0.7.12 2020.12.21\r\n * 1. 新增操作系统判断,根据不同的系统加载不同的配置\r\n *\r\n *ver 0.7.11 2020.07.21\r\n *\t1. 解决Https的问题\r\n *\r\n * ver 0.7.10 2020.04.04\r\n * 1. 新增获取设备序号\r\n * 2. 支持多Key\r\n *\r\n * ver 0.7.9 2020.01.08\r\n * 1. 支持SJK1137型号\r\n *\r\n * ver 0.7.8 2019.10.23\r\n * 1. 新增UKey适配\r\n *\r\n * ver 0.7.4 2019.09.18\r\n * 1. 新增证书生效,失效时间\r\n *\r\n * ver 0.7.3 2019.08.19\r\n * 1. 获取证书使用者信息\r\n *\r\n * ver 0.7.2 2019.08.08\r\n * 1. 新增远程解锁接口\r\n *\r\n * ver 0.7.1 2019.07.17\r\n * TODO: 未安装组件时,判断组件是否安装(暂定,未解决)\r\n *\r\n * ver 0.7.0 2019.07.04\r\n * 1. 更新核心文件,解决多Key插入问题\r\n * 2. Ukey目前仅支持国密证书\r\n *\r\n * ver 0.6.3 2019.06.24\r\n * 1. 修复部分Bug\r\n *\r\n * ver 0.6.1 2019.06.24\r\n * 1. 支持数字信封数据解密接口\r\n * 2. 修复加密接口错误部分。\r\n *\r\n * ver 0.6.0 2019.06.20\r\n * 1. 支持数字信封数据加密接口\r\n * 2. 暂不支持多Ukey\r\n *\r\n * ver 0.5.1 2019.06.19\r\n * 1. 修正新Ukey引入导致的Bug\r\n *\r\n * ver 0.5 2019.06.18\r\n * 1. 适配SJK1137型号Ukey\r\n *\r\n * ver 0.4 2019.03.16\r\n * 1. 新增方法 枚举Ukey获取证书“G项信息”列表\r\n * 2. 新增方法 将“证书G项信息”转化为“证书名称”方法\r\n *\r\n * ver 0.3 2018.12.10\r\n * 1. 新增修改Ukey密码的方法\r\n *\r\n * ver 0.2 2018.09.26\r\n * 1. 新增获取签名证书SN号的方法\r\n * 2. 修正部分Bug\r\n *\r\n * ver 0.1 2018.09.21\r\n * 1. 搭建初步框架\r\n * 2. 完成签名功能\r\n *\r\n */\r\nimport { mToken } from \"utils/mTokenPlugin/mToken\";\r\nimport { _Base64encode } from \"utils/mTokenPlugin/base64\";\r\nexport function hunca_mToken_core () {\r\n\r\n var token = new mToken(\"mTokenPlugin\");\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfoList = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var singleKey = 0;\r\n var libraryNameList = null;\r\n\r\n if ((navigator.platform == \"Win32\") || (navigator.platform == \"Windows\")) {\r\n libraryNameList = Array(\"GM3000\", \"HT\", \"SJK1137\");\r\n } else {\r\n //libraryNameList = Array(\"GM3000\"); //国产操作系统支持GM3000型号\r\n libraryNameList = Array(\"HT\"); //国产操作系统支持海泰型号\r\n }\r\n /**\r\n * 错误信息\r\n */\r\n var LAST_ERRORSTRING = \"\";\r\n\r\n /**\r\n * 证书用途\r\n */\r\n var KEY_SPEC_TYPE_ENCRYPT = 0;\r\n var KEY_SPEC_TYPE_SIGN = 1;\r\n\r\n /**\r\n * 摘要算法\r\n */\r\n var SGD_SM3 = 1;\r\n // eslint-disable-next-line no-unused-vars\r\n var SGD_SHA1 = 2;\r\n\r\n /**\r\n * 加密算法\r\n */\r\n //分组加密算法标识\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_ECB = 0x00000101;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_CBC = 0x00000102;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_CFB = 0x00000104;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_OFB = 0x00000108;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_MAC = 0x00000110;\r\n let SGD_SM4_ECB = 0x00000401;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_CBC = 0x00000402;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_CFB = 0x00000404;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_OFB = 0x00000408;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_MAC = 0x00000410;\r\n\r\n\r\n /**\r\n * 用户ID(固定)\r\n */\r\n var USER_ID = \"1234567812345678\";\r\n\r\n\r\n /**\r\n * 错误信息提示列表\r\n */\r\n var ERROR_MESSAGE_NOT_LOADLIBRARY = \"控件加载失败,错误码:\";\r\n var ERROR_MESSAGE_NOT_FIND_UKEY = \"未找到UKey!\\n1.请确认是否安装最新驱动!\\n2.计算机是否插入湖南CA UKey!\";\r\n // eslint-disable-next-line no-unused-vars\r\n var ERROR_MSSSAGE_FIND_MORE_UKEY = \"计算机插入多个UKey,请拔除多余“湖南CA UKey”!\";\r\n var ERROR_MESSAGE_NOT_INSTANCE_DEVICE = \"USBKey实例化失败,请确认此UKey是否插入计算机!\\n点击‘刷新’按钮,更新设备列表。\\n错误码:\";\r\n var ERROR_MESSAGE_USERPIN_LENGTH = \"Ukey密码必须为4~16位!\";\r\n var ERROR_MESSAGE_USERPIN_IS_ERROR = \"UKey密码错误\";\r\n var ERROR_MESSAGE_USERPIN_CHANGE_ERROR = \"UKey密码修改失败\";\r\n var ERROR_MESSAGE_KEY_NOT_EXIT = \"UKey不存在,请确认此UKey是否插入计算机,并点击'刷新'按钮,更新设备列表!\";\r\n var ERROR_MESSAGE_USERNAME_IS_NULL = \"请点击‘刷新’按钮,更新设备列表并选择相应设备!\";\r\n var ERROR_MESSAGE_KEY_EXPORT_CERT = \"证书获取失败,请加检测Key中是否存在证书!\";\r\n var ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR = \"设置摘要算法失败,请重新刷新浏览器!\";\r\n var ERROR_MESSAGE_SET_USERID_ERROR = \"设置用户ID失败,请重新刷新浏览器\";\r\n var ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL = \"签名失败,待签名原文不能为空\";\r\n var ERROR_MESSAGE_SIGN_ERROR = \"签名失败,返回错误码:\";\r\n var ERROR_MESSAGE_USERNAMEGN_IS_NULL = \"请点击‘刷新’按钮,更新设备列表并选择相应设备!\";\r\n var ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR = \"证书G项信息转化证书名称失败,请点击“刷新”按钮!\";\r\n var ERROR_MESSAGE_KEY_LIBRAY = \"加载国密库失败!\";\r\n var ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL = \"加密失败:待加密原文不能为空!\";\r\n var ERROR_MESSAGE_DECRYPT_DATA_IS_NULL = \"解密失败:待解密密文不能为空!\";\r\n var ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR = \"解密失败:请确认密文是否完整!\\n解密所采用的Ukey是否为加密时的Ukey!\";\r\n var ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL = \"申请解锁请求失败!\";\r\n var ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT = \"此型号Ukey不支持解锁!\";\r\n var ERROR_MESSAGE_REMOTE_UNLOCK_FAIL = \"Ukey解锁失败!\";\r\n\r\n /**\r\n * 私有变量\r\n */\r\n var tokenInfoList = null;\r\n\r\n /**\r\n * 私有变量\r\n */\r\n var signResultSignData = null;\r\n var signResultCert = null;\r\n\r\n /**\r\n * 证书信息\r\n */\r\n var certSn = null; //证书Sn\r\n var cert_subject_GN = null; //证书Gn\r\n var cert_subject = null; //证书使用者\r\n var cert_validTime = null; //证书失效时间\r\n var cert_notbeforetime = null; //证书生效时间\r\n\r\n /**\r\n * 返回错误信息\r\n */\r\n this.Hunca_GetLastError = function () {\r\n return LAST_ERRORSTRING;\r\n }\r\n\r\n /**\r\n * 获取证书列表\r\n */\r\n this.Hunca_GetUserList = function () {\r\n var deviceArray = null;\r\n var containerName = null;\r\n var userName = null;\r\n var tmpInfo = null;\r\n\r\n signResultCert = null;\r\n signResultSignData = null;\r\n tokenInfoList = new Array(); //清空信息\r\n\r\n for (var index = 0; index < libraryNameList.length; index++) {\r\n var libraryName = libraryNameList[index];\r\n if (!SOF_LoadLibrary(libraryName)) {\r\n continue;\r\n }\r\n\r\n deviceArray = SOF_EnumDevice();\r\n if (null == deviceArray) {\r\n continue;\r\n }\r\n\r\n for (var i = 0; i < deviceArray.length; i++) {\r\n var tokenInfo = new Object();\r\n //实例化设备失败\r\n if (!SOF_GetDeviceInstance(deviceArray[i])) {\r\n break;\r\n }\r\n\r\n //获取设备信息\r\n tmpInfo = SOF_GetUserList();\r\n if (null != tmpInfo || tmpInfo.length != 0) {\r\n containerName = tmpInfo[0][1];\r\n userName = tmpInfo[0][0];\r\n\r\n tokenInfo.libraryName = libraryName; //Ukey型号\r\n tokenInfo.serial = deviceArray[i]; //设备序列号\r\n tokenInfo.userName = userName; //证书名称\r\n tokenInfo.containerName = containerName; //应用名称\r\n\r\n tokenInfoList.push(tokenInfo);\r\n } else {\r\n continue;\r\n }\r\n SOF_LogOut();\r\n }\r\n }\r\n\r\n //返回证书信息\r\n var userNameList = new Array();\r\n for (let i = 0; i < tokenInfoList.length; i++) {\r\n userNameList[i] = tokenInfoList[i].userName;\r\n }\r\n\r\n if (userNameList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n return userNameList;\r\n }\r\n\r\n /**\r\n * 获取证书G项信息列表\r\n */\r\n this.Hunca_GetUserListGN = function Hunca_GetUserListGN () {\r\n var deviceArray = null;\r\n var containerName = null;\r\n var userName = null;\r\n var tmpInfo = null;\r\n var certB64 = null;\r\n var deviceSerial = \"\";\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultCert = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultSignData = null;\r\n tokenInfoList = new Array(); //清空信息\r\n var LAST_ERRORSTRING = \"\";\r\n\r\n for (var index = 0; index < libraryNameList.length; index++) {\r\n var libraryName = libraryNameList[index];\r\n //加载控件\r\n if (!SOF_LoadLibrary(libraryName)) {\r\n continue;\r\n }\r\n\r\n deviceArray = SOF_EnumDevice();\r\n if (null == deviceArray) {\r\n continue;\r\n }\r\n\r\n for (var i = 0; i < deviceArray.length; i++) {\r\n cert_subject_GN = null;\r\n certSn = null;\r\n deviceSerial = deviceArray[i];\r\n\r\n var tokenInfo = new Object();\r\n\r\n //实例化设备失败\r\n if (!SOF_GetDeviceInstance(deviceSerial)) {\r\n break;\r\n }\r\n\r\n //获取设备信息\r\n tmpInfo = SOF_GetUserList();\r\n if (null != tmpInfo || tmpInfo.length != 0) {\r\n containerName = tmpInfo[0][1];\r\n userName = tmpInfo[0][0];\r\n\r\n tokenInfo.libraryName = libraryName;\r\n tokenInfo.serial = deviceArray[i]; //设备序列号\r\n tokenInfo.userName = userName; //证书名称\r\n tokenInfo.containerName = containerName;\r\n } else {\r\n continue;\r\n }\r\n\r\n //获取证书G项信息\r\n certB64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);\r\n if (SOF_GetCertInfo(certB64)) {\r\n tokenInfo.subjectGN = cert_subject_GN; //设备证书G项目;\r\n } else {\r\n continue;\r\n }\r\n\r\n tokenInfoList.push(tokenInfo);\r\n SOF_LogOut();\r\n }\r\n }\r\n\r\n //返回证书G项信息\r\n var userNameGNList = new Array();\r\n for (let i = 0; i < tokenInfoList.length; i++) {\r\n userNameGNList[i] = tokenInfoList[i].subjectGN;\r\n }\r\n\r\n if (userNameGNList.length == 0) {\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n /*****\r\n if (userNameGNList.length > 1){\r\n LAST_ERRORSTRING = ERROR_MSSSAGE_FIND_MORE_UKEY;\r\n return \"\";\r\n }\r\n ****/\r\n return userNameGNList;\r\n }\r\n\r\n /**\r\n * 将证书G项信息转化为证书名称\r\n */\r\n this.Hunca_userNameGNToUserName = function (userNameGN) {\r\n var userName = null;\r\n LAST_ERRORSTRING = \"\";\r\n if (null == userNameGN || userNameGN.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAMEGN_IS_NULL;\r\n }\r\n\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n if (userNameGN == tokenInfoList[i].subjectGN) {\r\n userName = tokenInfoList[i].userName;\r\n break;\r\n }\r\n }\r\n\r\n if (null == userName || userName.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR;\r\n return null;\r\n }\r\n return userName;\r\n }\r\n\r\n this.Hunca_GenRemoteUnblockRequest = function (userName) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var request = \"\";\r\n\r\n LAST_ERRORSTRING = \"\";\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //判断设备是否支持远程解锁\r\n if (tokenInfo.libraryName != \"GM3000\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //枚举容器,并选择第一个容器\r\n if (SOF_GetUserList() == null) {\r\n return false;\r\n }\r\n\r\n //远程解锁\r\n request = SOF_GenRemoteUnblockRequest()\r\n\r\n return request;\r\n }\r\n\r\n this.HUnca_GetDeviceNumber = function (userName) {\r\n var m_devNumber = null;\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n let tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n // eslint-disable-next-line no-undef\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n // eslint-disable-next-line no-undef\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n // eslint-disable-next-line no-undef\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n // eslint-disable-next-line no-undef\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n m_devNumber = SOF_GetDeviceNumber();\r\n\r\n return m_devNumber + \"\";\r\n }\r\n\r\n this.Hunca_RemoteUnlockPIN = function (userName, response) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var result = false;\r\n\r\n LAST_ERRORSTRING = \"\";\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //判断设备是否支持远程解锁\r\n if (tokenInfo.libraryName != \"GM3000\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //枚举容器,并选择第一个容器\r\n if (SOF_GetUserList() == null) {\r\n return false;\r\n }\r\n\r\n //远程解锁\r\n result = SOF_RemoteUnlockPIN(response)\r\n return result;\r\n }\r\n\r\n /**\r\n * 修改Ukey密码\r\n */\r\n this.Hunca_ChangeUserPin = function (userName, oldUserPin, newUserPin) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n LAST_ERRORSTRING = \"\";\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //修改密码\r\n if (!SOF_ChangeUserPin(oldUserPin, newUserPin)) {\r\n return false;\r\n }\r\n\r\n SOF_LogOut();\r\n return true;\r\n }\r\n\r\n /**\r\n * 对数据进行签名,并返回签名是否成功\r\n * @param {string} originalData 待签名原文\r\n * @param {string} userName Ukey用户名称\r\n * @param {string} userPin Ukey密码\r\n */\r\n this.Hunca_PKCS1 = function (originalData, userName, userPin) {\r\n // eslint-disable-next-line no-unused-vars\r\n var libraryName = null;\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var certBase64 = null; //签名证书值\r\n\r\n var LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultInfo = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfo = new Object();\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //登陆应用\r\n if (!SOF_Login(userPin)) {\r\n return false;\r\n }\r\n\r\n //获取签名证书Base64\r\n certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);\r\n if (null == certBase64) {\r\n return false;\r\n }\r\n\r\n //设置摘要算法\r\n if (!SOF_SetDigestMethod(SGD_SM3)) {\r\n return false;\r\n }\r\n\r\n if (!SOF_SetUserID()) {\r\n return false;\r\n }\r\n\r\n //进行签名\r\n if (!SOF_SignData(tokenInfo.containerName, SGD_SM3, originalData, certBase64)) {\r\n return false;\r\n }\r\n\r\n //获取证书信息\r\n if (!SOF_GetCertInfo(certBase64)) {\r\n return false;\r\n }\r\n\r\n SOF_LogOut();\r\n return true;\r\n }\r\n\r\n /**\r\n * 获取签名结果\r\n */\r\n this.Hunca_GetSignData = function () {\r\n return signResultSignData;\r\n }\r\n\r\n /**\r\n * 获取签名证书\r\n */\r\n this.Hunca_GetSignCert = function () {\r\n return signResultCert;\r\n }\r\n\r\n this.Hunca_GetSignCertSn = function () {\r\n return certSn\r\n }\r\n\r\n this.Hunca_GetSignCertSubject = function () {\r\n return cert_subject;\r\n }\r\n\r\n this.Hunca_GetValidTime = function () {\r\n return cert_validTime;\r\n }\r\n\r\n this.HUnca_GetNotBeforeTime = function () {\r\n return cert_notbeforetime;\r\n }\r\n /**\r\n * 处理设备中签名证书信息\r\n * @param {*} userName\r\n */\r\n this.Hunca_DealCertInfo = function (userName) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var certBase64 = null; //签名证书值\r\n\r\n LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-undef\r\n signResultInfo = null;\r\n // eslint-disable-next-line no-undef\r\n certInfo = new Object();\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //导出证书\r\n certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);\r\n if (null == certBase64 || certBase64.length == 0) {\r\n return false;\r\n }\r\n\r\n SOF_GetCertInfo(certBase64);\r\n SOF_LogOut();\r\n return true;\r\n }\r\n\r\n /**\r\n * 对数据进行数字信封加密\r\n * @param {string} inData 待加密原文\r\n * @param {string} userName Ukey用户名称\r\n * @param {string} EncryptMethod 对称加密方式\r\n * @param {string} EncryptIV 加密IV值\r\n * @returns {string} \"\",加密失败;非空,加密成功\r\n */\r\n this.Hunca_EncryptDataPKCS7 = function (inData, userName, EncryptMethod, EncryptIV) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var certBase64 = null; //签名证书值\r\n var m_EncryptMethod = \"\",\r\n m_EncryptIV = \"\";\r\n\r\n var LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultInfo = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfo = new Object();\r\n\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return \"\";\r\n }\r\n\r\n //加载链接库\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return \"\";\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return \"\";\r\n }\r\n\r\n //导出加密证书\r\n certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT);\r\n if (null == certBase64 || certBase64.length == 0) {\r\n return \"\";\r\n }\r\n\r\n //设置加密方式\r\n\r\n m_EncryptMethod = EncryptMethod + \"\";\r\n m_EncryptIV = EncryptIV + \"\";\r\n\r\n if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {\r\n m_EncryptMethod = SGD_SM4_ECB;\r\n m_EncryptIV = \"\";\r\n }\r\n\r\n if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {\r\n return \"\";\r\n }\r\n\r\n //对数据进行加密\r\n // eslint-disable-next-line no-undef\r\n encryptData = SOF_EncryptDataPKCS7(certBase64, inData);\r\n\r\n SOF_LogOut();\r\n\r\n // eslint-disable-next-line no-undef\r\n return encryptData;\r\n }\r\n\r\n /**\r\n * 对密文进行数字信封解密操作\r\n * @param {string} encryptData 待解密密文\r\n * @param {string} userName Ukey用户名称\r\n * @param {string} userPin Ukey用户PIN码\r\n * @param {string} EncryptMethod 对称加密方式\r\n * @param {string} EncryptIV 加密IV值\r\n * @returns {string} \"\",加密失败;非空,加密成功\r\n */\r\n this.Hunca_DecryptDataPKCS7 = function (encryptData, userName, userPin, EncryptMethod, EncryptIV) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var m_EncryptMethod = \"\",\r\n m_EncryptIV = \"\";\r\n var m_EncryptData = \"\";\r\n var m_DecryptData = \"\";\r\n var resData = \"\";\r\n\r\n var LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultInfo = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfo = new Object();\r\n\r\n\r\n m_EncryptData = \"\" + encryptData;\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return \"\";\r\n }\r\n\r\n //加载链接库\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return \"\";\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return \"\";\r\n }\r\n\r\n //登陆应用\r\n if (!SOF_Login(userPin)) {\r\n return \"\";\r\n }\r\n\r\n //设置加密方式\r\n m_EncryptMethod = EncryptMethod + \"\";\r\n m_EncryptIV = EncryptIV + \"\";\r\n if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {\r\n m_EncryptMethod = SGD_SM4_ECB;\r\n m_EncryptIV = \"\";\r\n }\r\n\r\n if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {\r\n return \"\";\r\n }\r\n\r\n m_DecryptData = SOF_DecryptDataPKCS7(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT, m_EncryptData);\r\n if (m_DecryptData.length == 0) {\r\n return \"\";\r\n }\r\n\r\n try {\r\n // eslint-disable-next-line no-undef\r\n resData = _Base64decode(m_DecryptData);\r\n } catch (e) {\r\n resData = m_DecryptData;\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = \"解密失败:Base64解码失败\";\r\n }\r\n\r\n return resData;\r\n }\r\n\r\n /**\r\n * 加载底层文件\r\n * @returns {boolean} true,加载成功;false加载失败;\r\n */\r\n function SOF_LoadLibrary (libraryName) {\r\n var resultCode = 0;\r\n if (libraryName == \"GM3000\") {\r\n resultCode = token.SOF_LoadLibrary(token.GM3000);\r\n }\r\n else if (libraryName == \"HT\") {\r\n resultCode = token.SOF_LoadLibrary(token.HT);\r\n }\r\n else if (libraryName == \"SJK1137\") {\r\n resultCode = token.SOF_LoadLibrary(token.SJK1137);\r\n }\r\n\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_LOADLIBRARY + token.SOF_GetLastError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 枚举设备\r\n */\r\n function SOF_EnumDevice () {\r\n var deviceNameList = \"\";\r\n\r\n deviceNameList = token.SOF_EnumDevice();\r\n\r\n //检测是否插入USBKey\r\n if (null == deviceNameList || deviceNameList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return null;\r\n }\r\n\r\n return deviceNameList;\r\n }\r\n\r\n /**\r\n * 实例化设备,为后续一系列操作准备\r\n * @param {string} deviceName 设备名称\r\n */\r\n function SOF_GetDeviceInstance (deviceName) {\r\n var resultCode = 0;\r\n\r\n resultCode = token.SOF_GetDeviceInstance(deviceName, \"\");\r\n //设备未正常实例化\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_INSTANCE_DEVICE + token.SOF_GetLastError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 枚举应用中的容器\r\n */\r\n function SOF_GetUserList () {\r\n var userList = \"\";\r\n\r\n userList = token.SOF_GetUserList();\r\n if (null == userList || userList.length == 0) {\r\n LAST_ERRORSTRING = \"USBkey中未找到证书!\";\r\n return null;\r\n }\r\n\r\n return userList;\r\n }\r\n\r\n /**\r\n * 登陆应用,验证密码是否正确\r\n * @param {string} userPin\r\n */\r\n function SOF_Login (userPin) {\r\n var resultCode = 0;\r\n var m_userPin = \"\" + userPin;\r\n var RetryCount = 0;\r\n\r\n if (null == m_userPin || m_userPin.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (m_userPin.length < 4 || m_userPin.length > 16) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n resultCode = token.SOF_Login(m_userPin);\r\n if (resultCode != 0) {\r\n RetryCount = SOF_GetPinRetryCount();\r\n if (RetryCount > 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_IS_ERROR + \",还剩 \" + RetryCount + \" 次重试机会!\";\r\n } else {\r\n LAST_ERRORSTRING = \"UKey已经锁死,请联系管理员进行解锁!\"\r\n }\r\n return false;\r\n }\r\n return true\r\n }\r\n\r\n /**\r\n * 修改UKey密码\r\n * @param {*} oldUserPin\r\n * @param {*} newUserPin\r\n */\r\n function SOF_ChangeUserPin (oldUserPin, newUserPin) {\r\n var resultCode = 0;\r\n var m_oldUserPin = \"\" + oldUserPin;\r\n var m_newUserPin = \"\" + newUserPin;\r\n var RetryCount = 0;\r\n\r\n if (null == m_oldUserPin || m_oldUserPin.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (null == m_newUserPin || m_newUserPin.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (m_oldUserPin.length < 4 || m_oldUserPin.length > 16) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (m_newUserPin.length < 4 || m_newUserPin.length > 16) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n resultCode = token.SOF_ChangePassWd(m_oldUserPin, m_newUserPin);\r\n if (resultCode != 0) {\r\n RetryCount = SOF_GetPinRetryCount();\r\n if (RetryCount > 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_CHANGE_ERROR + \",还剩 \" + RetryCount + \" 次重试机会!\";\r\n } else {\r\n LAST_ERRORSTRING = \"UKey已经锁死,请联系管理员进行解锁!\"\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 返回重试次数\r\n */\r\n function SOF_GetPinRetryCount () {\r\n var retryCount = 0;\r\n retryCount = token.SOF_GetPinRetryCount();\r\n return retryCount;\r\n }\r\n\r\n function SOF_GetDeviceNumber () {\r\n var deviceNumber = null;\r\n deviceNumber = token.SOF_GetDeviceInfo(token.SGD_DEVICE_SERIAL_NUMBER);\r\n return deviceNumber;\r\n }\r\n\r\n /**\r\n * 导出证书值\r\n * @param {string} containerName 容器名称\r\n * @param {int} keySec 证书用途\r\n */\r\n function SOF_ExportUserCert (containerName, keySec) {\r\n var certBase64;\r\n certBase64 = token.SOF_ExportUserCert(containerName, keySec);\r\n if (null == certBase64 || certBase64.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_EXPORT_CERT;\r\n return null;\r\n }\r\n return certBase64;\r\n }\r\n\r\n /**\r\n * 设置加密算法\r\n * @param {*} EncryptMethod 设置加密算法\r\n * @param {*} EncryptIV 设置IV值\r\n */\r\n function SOF_SetEncryptMethodAndIV (EncryptMethod, EncryptIV) {\r\n var resCode = 1;\r\n\r\n if (EncryptMethod == undefined || EncryptMethod == null) {\r\n LAST_ERRORSTRING = \"请设置加密方式!\";\r\n return false;\r\n }\r\n\r\n resCode = token.SOF_SetEncryptMethodAndIV(EncryptMethod, _Base64encode(EncryptIV));\r\n if (resCode != 0) {\r\n LAST_ERRORSTRING = token.SOF_GetLastError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 设置签名算法\r\n * @param {}} digestMethod\r\n */\r\n function SOF_SetDigestMethod (digestMethod) {\r\n var resultCode = 0;\r\n resultCode = token.SOF_SetDigestMethod(digestMethod);\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * 设置默认USERID\r\n */\r\n function SOF_SetUserID () {\r\n var resultCode = 0;\r\n resultCode = token.SOF_SetUserID(USER_ID);\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SET_USERID_ERROR;\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 数字信封加密\r\n * @param {String} Base64EncodeCert 加密证书值\r\n * @param {String} inData 待加密原文\r\n * @returns {*} \"\",表示加密失败;非空,加密成功\r\n */\r\n function SOF_EncryptDataPKCS7 (Base64EncodeCert, inData) {\r\n var encryptData = \"\";\r\n var inDataBase64 = \"\";\r\n var m_inData = \"\";\r\n\r\n m_inData = \"\" + inData;\r\n if (m_inData.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n inDataBase64 = _Base64encode(m_inData)\r\n encryptData = token.SOF_EncryptDataPKCS7(Base64EncodeCert, inDataBase64, inData.length);\r\n\r\n if (encryptData == null || encryptData.length == 0) {\r\n LAST_ERRORSTRING = \"加密失败,\" + token.SOF_GetLastError();\r\n return \"\";\r\n }\r\n return encryptData;\r\n }\r\n\r\n /**\r\n * 数字信封解密\r\n * @param {*} containerName 应用名称\r\n * @param {int} cerType\r\n * @param {*} encrypedData\r\n */\r\n function SOF_DecryptDataPKCS7 (containerName, cerType, encrypedData) {\r\n var m_EncrypedData = \"\",\r\n m_DecryptData = \"\";\r\n\r\n m_EncrypedData = \"\" + encrypedData;\r\n if (containerName == null || containerName.length == 0) {\r\n LAST_ERRORSTRING = \"应用名称不能为空!\";\r\n return \"\";\r\n }\r\n\r\n if (m_EncrypedData.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_DECRYPT_DATA_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n try {\r\n m_DecryptData = token.SOF_DecryptDataPKCS7(containerName, cerType, m_EncrypedData);\r\n } catch (e) {\r\n m_DecryptData = \"\";\r\n }\r\n if (undefined == m_DecryptData || m_DecryptData == null || m_DecryptData == \"\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR;\r\n return \"\";\r\n }\r\n\r\n return m_DecryptData;\r\n }\r\n\r\n /**\r\n * 数据签名\r\n * @param {*} containerName\r\n * @param {*} ulKeySpec\r\n * @param {*} data\r\n * @param {*} certBase64\r\n */\r\n function SOF_SignData (containerName, ulKeySpec, data, certBase64) {\r\n var signData = null;\r\n var b64Data = null;\r\n var m_data = \"\" + data;\r\n\r\n\r\n if (null == m_data || m_data.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL;\r\n return false;\r\n }\r\n\r\n b64Data = _Base64encode(m_data);\r\n signData = token.SOF_SignData(containerName, ulKeySpec, _Base64encode(b64Data), b64Data.length)\r\n if (null == signData || signData.length == 0) {\r\n // eslint-disable-next-line no-undef\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SIGN_ERROR + SOF_GetLastError();\r\n return false;\r\n }\r\n\r\n signResultCert = certBase64;\r\n signResultSignData = signData;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * 导出证书\r\n * @param {*} certBase64\r\n */\r\n function SOF_GetCertInfo (certBase64) {\r\n var str = null;\r\n var subject = null;\r\n var tmpList = null;\r\n var validTime = null;\r\n var notBeforetime = null;\r\n var key, value;\r\n\r\n if (null == certBase64 || certBase64.length == 0) {\r\n return false;\r\n }\r\n\r\n cert_subject_GN = \"\";\r\n certSn = \"\";\r\n cert_subject = \"\";\r\n\r\n str = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_SERIAL);\r\n certSn = hexToDec(str);\r\n\r\n subject = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_SUBJECT);\r\n cert_subject = subject;\r\n\r\n validTime = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_VALID_TIME);\r\n cert_validTime = validTime;\r\n\r\n notBeforetime = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_NOT_BEFORE);\r\n cert_notbeforetime = notBeforetime;\r\n\r\n tmpList = subject.split(',');\r\n for (var i = 0; i < tmpList.length; i++) {\r\n if (tmpList[i].indexOf(\"=\") == -1) {\r\n continue;\r\n }\r\n\r\n key = tmpList[i].split('=')[0];\r\n value = tmpList[i].split('=')[1];\r\n\r\n if (key == 'GN') {\r\n cert_subject_GN = value;\r\n break;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n\r\n /**\r\n * 登出UKey\r\n */\r\n function SOF_LogOut () {\r\n token.SOF_LogOut();\r\n }\r\n\r\n /**\r\n * 生成解锁请求\r\n */\r\n function SOF_GenRemoteUnblockRequest () {\r\n var request = token.SOF_GenRemoteUnblockRequest();\r\n if (request == null || request == \"\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL;\r\n return \"\";\r\n }\r\n\r\n return request;\r\n }\r\n\r\n function SOF_RemoteUnlockPIN (response) {\r\n var result = false;\r\n\r\n if (null == response || response.length == 0) {\r\n LAST_ERRORSTRING = \"解锁失败解:响应不能为空!\";\r\n return false;\r\n }\r\n\r\n result = token.SOF_RemoteUnblockPIN(response);\r\n if (result != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_REMOTE_UNLOCK_FAIL;\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n function add (x, y, base) {\r\n var z = [];\r\n var n = Math.max(x.length, y.length);\r\n var carry = 0;\r\n var i = 0;\r\n while (i < n || carry) {\r\n var xi = i < x.length ? x[i] : 0;\r\n var yi = i < y.length ? y[i] : 0;\r\n var zi = carry + xi + yi;\r\n z.push(zi % base);\r\n carry = Math.floor(zi / base);\r\n i++;\r\n }\r\n return z;\r\n }\r\n\r\n function multiplyByNumber (num, x, base) {\r\n if (num < 0) return null;\r\n if (num == 0) return [];\r\n\r\n var result = [];\r\n var power = x;\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n if (num & 1) {\r\n result = add(result, power, base);\r\n }\r\n num = num >> 1;\r\n if (num === 0) break;\r\n power = add(power, power, base);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function parseToDigitsArray (str, base) {\r\n var digits = str.split('');\r\n var ary = [];\r\n for (var i = digits.length - 1; i >= 0; i--) {\r\n var n = parseInt(digits[i], base);\r\n if (isNaN(n)) return null;\r\n ary.push(n);\r\n }\r\n return ary;\r\n }\r\n\r\n\r\n function convertBase (str, fromBase, toBase) {\r\n var digits = parseToDigitsArray(str, fromBase);\r\n if (digits === null) return null;\r\n\r\n var outArray = [];\r\n var power = [1];\r\n for (var i = 0; i < digits.length; i++) {\r\n // invariant: at this point, fromBase^i = power\r\n if (digits[i]) {\r\n outArray = add(outArray, multiplyByNumber(digits[i], power, toBase), toBase);\r\n }\r\n power = multiplyByNumber(fromBase, power, toBase);\r\n }\r\n\r\n var out = '';\r\n for (let i = outArray.length - 1; i >= 0; i--) {\r\n out += outArray[i].toString(toBase);\r\n }\r\n return out;\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n function decToHex (decStr) {\r\n var hex = convertBase(decStr, 10, 16);\r\n return hex ? '0x' + hex : null;\r\n }\r\n\r\n\r\n function hexToDec (hexStr) {\r\n if (hexStr.substring(0, 2) === '0x') hexStr = hexStr.substring(2);\r\n hexStr = hexStr.toLowerCase();\r\n return convertBase(hexStr, 16, 10);\r\n }\r\n}\r\n","// 过滤时间\r\nexport function formateTime(dateStr) {\r\n let year = dateStr.slice(0, 4);\r\n let month = dateStr.slice(4, 6);\r\n let date = dateStr.slice(6, 8);\r\n let hours = dateStr.slice(8, 10);\r\n let minute = dateStr.slice(10, 12);\r\n let second = dateStr.slice(12);\r\n return `${year}-${month}-${date} ${hours}:${minute}:${second}`;\r\n}\r\n","<template>\r\n <div>\r\n <el-form\r\n ref=\"loginForm\"\r\n :model=\"loginForm\"\r\n :rules=\"loginRules\"\r\n class=\"login-form\"\r\n >\r\n <div class=\"ca-bg-box\" v-if=\"loginForm.username == undefined\">\r\n <div class=\"ca-bg-img\"></div>\r\n <div class=\"ca-bg-text\">请插入UKEY证书</div>\r\n <img\r\n :src=\"require('assets/ca/refresh.png')\"\r\n class=\"ca-refresh\"\r\n :class=\"{ start: caLoading }\"\r\n @click=\"caRead\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"ca-bg-info\" v-else>\r\n <div class=\"ca-bg-text\">\r\n CA名称:<span class=\"caName\">{{ loginForm.username }}</span>\r\n </div>\r\n <img\r\n :src=\"require('assets/ca/refresh.png')\"\r\n class=\"ca-refresh\"\r\n :class=\"{ start: caLoading }\"\r\n @click=\"caRead\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <el-form-item prop=\"password\">\r\n <el-input\r\n v-model=\"loginForm.password\"\r\n type=\"password\"\r\n auto-complete=\"off\"\r\n placeholder=\"密码\"\r\n show-password\r\n @keyup.enter.native=\"handleLogin\"\r\n >\r\n <img\r\n slot=\"prefix\"\r\n class=\"el-input__icon input-icon\"\r\n :src=\"require('assets/ca/password.png')\"\r\n />\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button\r\n :loading=\"loading\"\r\n size=\"medium\"\r\n type=\"primary\"\r\n class=\"login-btn\"\r\n style=\"width: 100%\"\r\n @click.native.prevent=\"handleLogin\"\r\n >\r\n <span v-if=\"!loading\">登 录</span>\r\n <span v-else>登 录 中...</span>\r\n </el-button>\r\n </el-form-item>\r\n <slot></slot>\r\n </el-form>\r\n <el-dialog\r\n title=\"提示\"\r\n :visible.sync=\"dialogVisible.showInfo\"\r\n width=\"30%\"\r\n center\r\n >\r\n <span style=\"color: red\">{{ caInfo.error_text }}</span>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible.showInfo = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"dialogVisible.showInfo = false\"\r\n >确 定</el-button\r\n >\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { hunca_mToken_core } from \"utils/mTokenPlugin/hunca_mToken_core2\"\r\n// 北京ca\r\nimport \"utils/mTokenPluginBeijin/xtxasyn\"\r\nimport { formateTime } from \"utils/mTokenPluginBeijin/formateTime\"\r\nexport default {\r\n name: \"YcCA\",\r\n props: {\r\n region: {\r\n /** 1背景CA,0湖南CA */\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n data() {\r\n return {\r\n form: {},\r\n caInfo: {\r\n error_text: \"\",\r\n have_error_info: false,\r\n },\r\n loginForm: {\r\n username: \"\",\r\n password: \"\",\r\n uuid: \"\",\r\n caInfo: \"\",\r\n },\r\n dialogVisible: {\r\n ca: false,\r\n showInfo: false,\r\n },\r\n loginRules: {\r\n password: [\r\n { required: true, trigger: \"blur\", message: \"请输入您的密码\" },\r\n ],\r\n },\r\n loading: false,\r\n caLoading: false,\r\n }\r\n },\r\n computed: {\r\n isBJCA() {\r\n return this.region == 1\r\n },\r\n },\r\n watch: {\r\n region() {\r\n this.caRead()\r\n },\r\n },\r\n created() {\r\n // this.caRead()\r\n },\r\n methods: {\r\n //读取CA\r\n caRead() {\r\n if (this.isBJCA) {\r\n this.caReadBeijin()\r\n } else {\r\n window.mToken = new hunca_mToken_core()\r\n let tempName = window.mToken.Hunca_GetUserListGN()\r\n this.loginForm.username = tempName[0]\r\n }\r\n },\r\n async caReadBeijin() {\r\n if (this.caLoading) return\r\n this.caLoading = true\r\n setTimeout(() => {\r\n this.caLoading = false\r\n }, 1000)\r\n let retObj = await new Promise((resolve) => {\r\n window.SOF_GetUserList(function (retObj) {\r\n resolve(retObj)\r\n })\r\n })\r\n this.loginForm.username = retObj.retVal.split(\"||\")[0]\r\n },\r\n // CA登录选择\r\n caLogin(flag) {\r\n switch (flag) {\r\n case 0:\r\n this.HNCALogin()\r\n break\r\n default:\r\n this.$message({\r\n type: \"warning\",\r\n message: \"请选择CA平台!!!\",\r\n })\r\n }\r\n },\r\n // 湖南CA平台登录\r\n HNCALogin() {\r\n window.mToken = new hunca_mToken_core()\r\n this.loginForm.username = window.mToken.Hunca_GetUserListGN()\r\n let tempuserName = window.mToken.Hunca_userNameGNToUserName(\r\n this.loginForm.username[0]\r\n ) //将证书G项信息转化为证书名称\r\n let rn = Math.random()\r\n if (\r\n !window.mToken.Hunca_PKCS1(rn, tempuserName, this.loginForm.password)\r\n ) {\r\n this.caInfo.error_text = window.mToken.Hunca_GetLastError()\r\n this.caInfo.have_error_info = true\r\n this.dialogVisible.showInfo = true\r\n return false\r\n }\r\n this.ca_cert = window.mToken.Hunca_GetSignCert()\r\n this.sign = window.mToken.Hunca_GetSignData()\r\n this.certSn = window.mToken.Hunca_GetSignCertSn() //CA唯一码\r\n this.cert_subject = window.mToken.Hunca_GetSignCertSubject() //CA信息\r\n this.cert_validTime = window.mToken.Hunca_GetValidTime() //过期时间\r\n this.cert_notBeforeTime = window.mToken.HUnca_GetNotBeforeTime() //生效时间\r\n let tempinfo = this.cert_subject.split(\",\")\r\n let tempinfo1 = {}\r\n tempinfo.forEach((e) => {\r\n tempinfo1[e.split(\"=\")[0]] = e.split(\"=\")[1]\r\n })\r\n this.loginForm = {\r\n cert: this.ca_cert,\r\n sign: this.sign,\r\n rn: rn,\r\n caInfo: this.cert_subject, //CA信息\r\n caAddr: tempinfo1.ST + tempinfo1.OU, //设备归属地\r\n caCode: tempinfo1.TITLE, //证书代码\r\n caName: tempinfo1.GN, //ca名字\r\n caSn: this.certSn, //CA唯一码\r\n caEffectiveDate: this.cert_notBeforeTime, //生效时间\r\n caExpireDate: this.cert_validTime, //过期时间\r\n loginType: \"3\",\r\n username: tempinfo1.GN,\r\n }\r\n return true\r\n },\r\n handleLogin() {\r\n this.$refs.loginForm.validate((valid) => {\r\n if (valid) {\r\n this.loading = true\r\n if (this.isBJCA) {\r\n this.BJCALogin()\r\n } else {\r\n this.HNCALogin()\r\n if (this.dialogVisible.showInfo == true) {\r\n this.loading = false\r\n } else if (this.loginForm.username != undefined) {\r\n this.loading = true\r\n this.$emit(\"caSuccess\", this.loginForm, () => {\r\n this.loading = false\r\n })\r\n } else {\r\n this.msgErr(\"请插入CA\")\r\n }\r\n }\r\n }\r\n })\r\n },\r\n async BJCALogin() {\r\n if (this.loginForm.password == undefined) {\r\n this.msgErr(\"请插入CA\")\r\n return\r\n } else {\r\n let certId = await new Promise((resolve) => {\r\n window.SOF_GetUserList(function (retObj) {\r\n resolve(retObj.retVal.split(\"&&&\")[0].split(\"||\")[1])\r\n })\r\n })\r\n // --------------执行ca登录接口开始\r\n var time_begin = new Date()\r\n let passwd = this.loginForm.password\r\n if (!certId || !passwd) {\r\n return\r\n }\r\n var platform = navigator.platform.toLowerCase()\r\n if (platform.indexOf(\"win\") != -1) {\r\n window.SOF_LoginEx(certId, passwd, 0, this.login_callback, {\r\n begin: time_begin,\r\n certId: certId,\r\n })\r\n } else {\r\n window.SOF_Login(certId, passwd, this.login_callback, {\r\n begin: time_begin,\r\n certId: certId,\r\n })\r\n }\r\n // --------------执行ca登录接口结束\r\n }\r\n },\r\n login_callback(retObj) {\r\n const that = this\r\n var certId = retObj.ctx.certId\r\n if (retObj.retVal) {\r\n // 登录成功对数据进行签名\r\n this.BJSignData()\r\n } else {\r\n //当登录失败时,调用SOF_GetLastError取错误码,errcode为79时表示pin码复杂度不符合\r\n window.SOF_GetLastError(function (retObj) {\r\n var err = retObj.retVal\r\n if (err == 79) {\r\n that.msgErr(\"请核对pin码复杂度是否符合要求\")\r\n }\r\n }, retObj.ctx)\r\n // 实际情况可能仅在登录失败时获取一下重试次数做个提醒\r\n window.SOF_GetPinRetryCount(\r\n certId,\r\n function (retObj) {\r\n var certId = retObj.ctx.certId\r\n that.msgErr(\r\n \"证书[\" + certId + \"]重试次数剩余:\" + retObj.retVal + \"次...\"\r\n )\r\n },\r\n retObj.ctx\r\n )\r\n }\r\n },\r\n async BJSignData() {\r\n let certId = await new Promise((resolve) => {\r\n window.SOF_GetUserList(function (retObj) {\r\n resolve(retObj.retVal.split(\"&&&\")[0].split(\"||\")[1])\r\n })\r\n })\r\n let rn = Math.random()\r\n this.form[\"rn\"] = rn\r\n window.SOF_SignData(certId, rn, this.signData_callback, {\r\n certId: certId,\r\n })\r\n // --------------登录成功对数据进行签名结束\r\n },\r\n async signData_callback(retObj) {\r\n if (retObj.retVal == \"\") {\r\n this.caInfo.error_text = \"数据签名失败\"\r\n this.caInfo.have_error_info = true\r\n this.dialogVisible.showInfo = true\r\n return\r\n }\r\n this.form[\"sign\"] = retObj.retVal\r\n // 签名成功获取其他信息后端登录接口所需信息-------\r\n var certId = retObj.ctx.certId\r\n // 导出用户证书\r\n let userCert = await new Promise((resolve) => {\r\n window.SOF_ExportUserCert(certId, function (retObj) {\r\n resolve(retObj.retVal)\r\n })\r\n })\r\n this.form[\"username\"] = userCert\r\n if (userCert) {\r\n var certInfoTypeArray = {\r\n caAddrProvince: { type: 16, label: \"使用者省州名ST\" }, //caAddr\r\n caAddrcity: { type: 18, label: \"使用者城市名L\" }, //caAddr\r\n caEffectiveDate: { type: 11, label: \"证书有效开始日期\" }, //caEffectiveDate\r\n caExpireDate: { type: 12, label: \"证书有效结束日期\" }, //caExpireDate\r\n caInfo: { type: 35, label: \"使用者DN项第2种格式\" }, //caInfo\r\n //caCode\r\n //username\r\n caSn: { type: 2, label: \"证书序列号\" }, //caSn\r\n caType: { type: 34, label: \"颁发者DN项第1种格式\" }, //caType\r\n }\r\n // 导出证书成功,解析证书基本项\r\n for (let key in certInfoTypeArray) {\r\n let certInfo = await new Promise((resolve) => {\r\n window.SOF_GetCertInfo(\r\n userCert,\r\n certInfoTypeArray[key].type,\r\n function (retObj) {\r\n resolve(retObj)\r\n },\r\n { key: key }\r\n )\r\n })\r\n this.form[certInfo.ctx.key] = certInfo.retVal\r\n }\r\n let bindParams = {\r\n caSn: this.form[\"caSn\"],\r\n caInfo: this.form[\"caInfo\"],\r\n caAddr: this.form[\"caAddrProvince\"] + this.form[\"caAddrcity\"],\r\n caCode: this.form[\"caInfo\"]\r\n .split(\",\")\r\n .filter((v) => {\r\n return v.search(/^title=/i) != -1\r\n })[0]\r\n .replace(/title=/i, \"\"),\r\n username: this.form[\"caInfo\"]\r\n .split(\",\")\r\n .filter((v) => {\r\n return v.search(/^cn=/i) != -1\r\n })[0]\r\n .replace(/cn=/i, \"\"),\r\n caEffectiveDate: formateTime(this.form[\"caEffectiveDate\"]),\r\n caExpireDate: formateTime(this.form[\"caExpireDate\"]),\r\n // region: this.readForm.region,\r\n pass: this.loginForm.password,\r\n caType: \"北京ca\",\r\n sign: this.form.sign,\r\n rn: this.form.rn,\r\n cert: this.form.username,\r\n }\r\n this.form = bindParams\r\n this.loginForm = {\r\n cert: this.form.cert,\r\n sign: this.form.sign,\r\n rn: this.form.rn,\r\n caInfo: this.form.caInfo, //CA信息\r\n caAddr: this.form.caAddr, //设备归属地\r\n caCode: this.form.caCode, //证书代码\r\n caName: this.form.username, //证书名称\r\n caSn: this.form.caSn, //CA唯一码\r\n caEffectiveDate: this.form.caEffectiveDate, //生效时间\r\n caExpireDate: this.form.caExpireDate, //过期时间\r\n loginType: \"3\",\r\n username: this.form.username,\r\n }\r\n if (this.dialogVisible.showInfo == true) {\r\n this.loading = false\r\n } else if (this.loginForm.username != undefined) {\r\n this.$emit(\"caSuccess\", this.loginForm, () => {\r\n this.loading = false\r\n })\r\n } else {\r\n this.msgErr(\"请插入CA\")\r\n }\r\n }\r\n },\r\n handleClose(done) {\r\n this.$confirm(\"确认关闭?\")\r\n .then(() => {\r\n done()\r\n this.loading = false\r\n })\r\n .catch(() => {})\r\n },\r\n msgErr(msg) {\r\n this.loading = false\r\n this.$message.error(msg)\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n::v-deep .el-input__prefix {\r\n display: flex;\r\n align-items: center;\r\n left: 1.04vw;\r\n}\r\n::v-deep .el-form-item__error {\r\n font-size: 0.04vw;\r\n}\r\n::v-deep .el-input__icon {\r\n color: #409eff;\r\n width: 0.98vw;\r\n height: 1.14vw;\r\n}\r\n::v-deep .el-input__inner {\r\n padding: 0 3.64vw;\r\n height: 2.81vw;\r\n font-size: 1.04vw;\r\n border: 0.1vw solid #409eff;\r\n}\r\n::v-deep .el-input .el-input__clear {\r\n font-size: 1.24vw;\r\n}\r\n::v-deep .el-input__suffix {\r\n right: 1.04vw;\r\n top: 0.46vw;\r\n}\r\n.el-form-item {\r\n margin-bottom: 1.2vw;\r\n margin-top: 1vw;\r\n}\r\n.ca-download-box {\r\n display: flex;\r\n justify-content: right;\r\n align-items: center;\r\n margin: 10px 0;\r\n .ca-download-text {\r\n color: #53a8ff;\r\n font-size: 14px;\r\n font-weight: 400;\r\n }\r\n .ca-download-img {\r\n width: 10px;\r\n height: 10px;\r\n background: url(\"assets/ca/ca-download.png\") no-repeat;\r\n background-size: 100% 100%;\r\n margin-left: 2px;\r\n }\r\n}\r\n.contentBox {\r\n width: 100%;\r\n height: 50px;\r\n margin-bottom: 15px;\r\n}\r\n.ca-bg-box {\r\n background-color: #ecf5ff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 30px 70px;\r\n position: relative;\r\n -webkit-animation: fadeinout 1s linear forwards;\r\n animation: fadeinout 1s linear forwards;\r\n .ca-bg-img {\r\n width: 97px;\r\n height: 57px;\r\n background: url(\"assets/ca/ca-bg.png\") no-repeat;\r\n background-size: 100% 100%;\r\n }\r\n}\r\n@-webkit-keyframes fadeinout {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 50% {\r\n opacity: 0.5;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fadeinout {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 50% {\r\n opacity: 0.5;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n.ca-bg-info {\r\n display: flex;\r\n padding: 40px 70px 40px 25px;\r\n position: relative;\r\n background: url(\"assets/ca/caBg.png\") no-repeat;\r\n background-size: 100% 100%;\r\n -webkit-animation: fadeinout 1s linear forwards;\r\n animation: fadeinout 1s linear forwards;\r\n}\r\n.ca-bg-text {\r\n margin-left: 15px;\r\n font-size: 18px;\r\n font-weight: 500;\r\n color: #53a8ff;\r\n}\r\n.caName {\r\n margin-left: 10px;\r\n color: #303133;\r\n}\r\n.ca-refresh {\r\n position: absolute;\r\n top: 6px;\r\n right: 8px;\r\n width: 25px;\r\n height: 25px;\r\n cursor: pointer;\r\n &.start {\r\n animation: rotate 0.7s linear;\r\n }\r\n @keyframes rotate {\r\n 0% {\r\n transform: rotate(0deg); /* 初始状态 */\r\n }\r\n 100% {\r\n transform: rotate(360deg); /* 结束状态 */\r\n }\r\n }\r\n}\r\n.login-btn {\r\n height: 2.81vw;\r\n font-size: 1.04vw;\r\n font-weight: bold;\r\n background: url(\"assets/ca/login-btn-bg.png\") no-repeat;\r\n background-size: 100% 100%;\r\n border: none;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=eeb04946&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=eeb04946&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eeb04946\",\n null\n \n)\n\nexport default component.exports","import YcSlideVerify from 'comp/YcSlideVerify'\r\nimport YcCustomerService from 'comp/YcCustomerService'\r\nimport YcQuestion from 'comp/YcQuestion'\r\nimport YcCA from 'comp/YcCA'\r\n\r\n\r\nconst components = [\r\n YcSlideVerify,\r\n YcCustomerService,\r\n YcQuestion,\r\n YcCA\r\n]\r\n// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册\r\nconst install = function (Vue) {\r\n // 遍历注册全局组件\r\n components.forEach(component => {\r\n Vue.component(component.name, component)\r\n })\r\n\r\n // 判断是否是直接引入文件,如果是,就不用调用 Vue.use()\r\n if (typeof window !== 'undefined' && window.Vue) {\r\n install(window.Vue)\r\n }\r\n}\r\n\r\n// 导出的对象必须具有 install,才能被 Vue.use() 方法安装\r\nexport default {\r\n install\r\n}\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","define","amd","self","this","isCallable","tryToString","$TypeError","TypeError","argument","isObject","$String","String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","value","O","length","index","includes","indexOf","DESCRIPTORS","isArray","getOwnPropertyDescriptor","Object","SILENT_ON_NON_WRITABLE_LENGTH_SET","undefined","defineProperty","writable","error","uncurryThis","toString","stringSlice","slice","it","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","target","source","exceptions","keys","f","i","key","createPropertyDescriptor","object","bitmap","enumerable","configurable","makeBuiltIn","defineGlobalProperty","options","simple","name","global","unsafe","nonConfigurable","nonWritable","fails","get","documentAll","document","all","IS_HTMLDDA","EXISTS","createElement","MAX_SAFE_INTEGER","navigator","userAgent","match","version","process","Deno","versions","v8","split","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","prototype","dontCallGetSet","forced","sham","exec","test","bind","hasOwnProperty","NATIVE_BIND","call","Function","apply","arguments","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","fn","aFunction","namespace","method","aCallable","isNullOrUndefined","V","P","func","check","Math","globalThis","window","g","toObject","a","classof","$Object","propertyIsEnumerable","store","functionToString","inspectSource","set","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","getterFor","TYPE","state","type","metadata","facade","STATE","Array","$documentAll","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","toLength","obj","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","join","CONFIGURABLE_LENGTH","TEMPLATE","getter","setter","arity","constructor","ceil","floor","trunc","x","n","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","enumBugKeys","concat","getOwnPropertyNames","getOwnPropertySymbols","push","names","result","$propertyIsEnumerable","NASHORN_BUG","input","pref","val","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","uid","SHARED","IS_PURE","mode","copyright","license","V8_VERSION","symbol","Symbol","toIntegerOrInfinity","max","min","integer","IndexedObject","requireObjectCoercible","number","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","id","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","proto","item","len","argCount","xtxasyn","XTXAsynHashMap","map","put","remove","removeAll","keySet","_keys","HashMap","initUtilObject","util","checkBrowserISIE","ActiveXObject","checkLocationIsHttps","location","protocol","evalFunction","cb","eval","consolelog","param","console","log","isEmpty","loadIECtl","clsid","ctlName","checkFunc","ctl","getElementById","loadObjString","write","e","getAutoExecFunctionString","ret","attachIEEvent","eventName","eventFunc","attachEvent","handler","setAttribute","eventScript","appendChild","createTextNode","getElementsByTagName","loadWebSocketCtl","wsUrl","wssUrl","wsObject","url","socket","wsMessageQueue","wsMessageQueueId","wsEventQueue","wsURL","wsCacheMessage","custom","defaultUsbkeyChange","WebSocket","onopen","evt","SOF_GetVersion","retVal","tb_send","shift","send","onclose","XTXAppWebSocket","onmessage","res","JSON","parse","cmdId","methodName","execFunc","messageQueue","ctx","returnType","Number","token","setToken","retObj","onerror","attachWebSocketEvent","callWebSocketMethod","argsArray","sendArray","href","strParam","getToken","readyState","OPEN","stringify","CONNECTING","SynToAsyn","initCustomActions","softCertListID","hardCertListID","allCertListID","loginCertID","logoutFunc","UsbkeyChangeFunc","loginToken","errorReportFunc","msg","alert","setAutoLogoutParameter","strCertID","clearDropList","dropListId","pushOneDropListBox","userListArray","strListID","certObj","objItem","Option","certName","certID","add","pushUserListToAllDroplist","strUserList","allListArray","strOneUser","substring","strName","GetDeviceInfo","setUserCertList","certListId","certType","CERT_TYPE_ALL","CERT_TYPE_HARD","CERT_TYPE_SOFT","SOF_GetUserList","setOnUsbKeyChangeCallBack","callback","setErrorReportFunc","errFunc","autoLogoutCallBack","initXTXAppCOM","XTXAppCOM","xtx_clsid","GetPicObj","getpic_clsid","GetPic","Hash","inData","ConvertPicFormat","ConvertGif2Jpg","GetPic1","ConvertPicSize","strPicture","w","h","XTXVersionOBJ","xtx_version_clsid","GetEnvVersion","initXTXAppWebSocket","initXTXAppObject","getImplmentFunction","methodInfo","inParams","funcName","outParamType","export_functions","aliasName","SetAutoLogoutParameter","SetUserCertList","SetOnUsbKeyChangeCallBack","SetAlertFunction","custom_alert","GetLoginToken","SetLoginToken","tokenData","GetUserListByType","strType","GetDeviceType","userList","GetUserList_USBKey","GetUserList_Soft","SignByP7","strInData","bDetach","SOF_SignMessage","GetSymKeyLength","HashFile","strFilePath","SOF_HashFile","ParseDateString","strDate","strYear","strMonth","strDay","strHour","strMin","strSecond","RtnDate","Date","setFullYear","setHours","setMinutes","setSeconds","__loginSignRandomCallBack","objForm","UserSignedData","LoginToken","action","submit","__loginVerifyServerSignatureCallBack","SOF_SignData","strServerRan","__loginCheckCertValidNotAfter","notAfterDate","milliseconds","getTime","days","parseInt","hours","minutes","SOF_VerifySignedData","strServerCert","strServerSignedData","__loginCheckCertValidNotBefore","notBeforeDate","strUserCert","UserCert","SOF_GetCertInfo","__loginGetSignCertCallBack","__loginGetPINRetryCallBack","retryCount","__loginVerifyPINCallBack","CertID","ContainerName","SOF_ExportUserCert","SOF_GetPinRetryCount","Login","formName","strPin","strAction","custom_cb","insertAdjacentHTML","SOF_Login","mToken","SAR_OK","SAR_FALSE","SGD_SM1_ECB","SGD_SM1_CBC","SGD_SM1_CFB","SGD_SM1_OFB","SGD_SM1_MAC","SGD_SSF33_ECB","SGD_SSF33_CBC","SGD_SSF33_CFB","SGD_SSF33_OFB","SGD_SSF33_MAC","SGD_SM4_ECB","SGD_SM4_CBC","SGD_SM4_CFB","SGD_SM4_OFB","SGD_SM4_MAC","SGD_VENDOR_DEFINED","SGD_DES_ECB","SGD_DES_CBC","SGD_3DES168_ECB","SGD_3DES168_CBC","SGD_3DES112_ECB","SGD_3DES112_CBC","SGD_AES128_ECB","SGD_AES128_CBC","SGD_AES192_ECB","SGD_AES192_CBC","SGD_AES256_ECB","SGD_AES256_CBC","SGD_RSA","SGD_SM2_1","SGD_SM2_2","SGD_SM2_3","SGD_SM3","SGD_SHA1","SGD_SHA256","SGD_RAW","SGD_MD5","SGD_SHA384","SGD_SHA512","SGD_CERT_VERSION","SGD_CERT_SERIAL","SGD_CERT_ISSUE","SGD_CERT_VALID_TIME","SGD_CERT_SUBJECT","SGD_CERT_DER_PUBLIC_KEY","SGD_CERT_DER_EXTENSIONS","SGD_CERT_NOT_BEFORE","SGD_CERT_ISSUER_CN","SGD_CERT_ISSUER_O","SGD_CERT_ISSUER_OU","SGD_CERT_ISSUER_C","SGD_CERT_ISSUER_P","SGD_CERT_ISSUER_L","SGD_CERT_ISSUER_S","SGD_CERT_ISSUER_EMAIL","SGD_CERT_SUBJECT_CN","SGD_CERT_SUBJECT_O","SGD_CERT_SUBJECT_OU","SGD_CERT_SUBJECT_EMALL","SGD_REMAIN_TIME","SGD_SIGNATURE_ALG","SGD_CERT_SUBJECT_C","SGD_CERT_SUBJECT_P","SGD_CERT_SUBJECT_L","SGD_CERT_SUBJECT_S","SGD_CERT_CRL","SGD_DEVICE_SORT","SGD_DEVICE_TYPE","SGD_DEVICE_NAME","SGD_DEVICE_MANUFACTURER","SGD_DEVICE_HARDWARE_VERSION","SGD_DEVICE_SOFTWARE_VERSION","SGD_DEVICE_STANDARD_VERSION","SGD_DEVICE_SERIAL_NUMBER","SGD_DEVICE_SUPPORT_SYM_ALG","SGD_DEVICE_SUPPORT_ASYM_ALG","SGD_DEVICE_SUPPORT_HASH_ALG","SGD_DEVICE_SUPPORT_STORANGE_SPACE","SGD_DEVICE_SUPPORT_FREE_SAPCE","SGD_DEVICE_RUNTIME","SGD_DEVICE_USED_TIMES","SGD_DEVICE_LOCATION","SGD_DEVICE_DESCRIPTION","SGD_DEVICE_MANAGER_INFO","SGD_DEVICE_MAX_DATA_SIZE","TRUE","FALSE","GM3000","K5","TF","HT","SJK1137","TYPE_UKEY","TYPE_FPKEY","g_mTokenPlugin","isMobile","browser","u","appVersion","trident","presto","webKit","gecko","mobile","ios","android","iPhone","iPad","webApp","language","browserLanguage","SOF_GetLastError","SOF_LoadLibrary","os","check_os","mTokenPlugin","SOF_EnumDevice","array","SOF_GetDeviceInstance","DeviceName","ApplicationName","SOF_ReleaseDeviceInstance","list","user","KeySpec","SOF_GetDeviceInfo","Type","Base64EncodeCert","SOF_GetCertInfoByOid","OID","PassWd","SOF_LogOut","SOF_ChangePassWd","OldPassWd","NewPassWd","SOF_SetDigestMethod","DigestMethod","SOF_SetUserID","UserID","SOF_SetEncryptMethodAndIV","EncryptMethod","EncryptIV","SOF_EncryptFileToPKCS7","Cert","InFile","OutFile","SOF_SignFileToPKCS7","SOF_VerifyFileToPKCS7","strPkcs7Data","InFilePath","SOF_DecryptFileToPKCS7","keySpec","Pkcs7Data","SOF_DigestData","nData","InDataLen","ulKeySpec","InData","SOF_SignDataInteractive","SOF_SignDataToPKCS7","ulDetached","SOF_VerifyDataToPKCS7","SignedValue","digestMethod","SOF_EncryptDataPKCS7","SOF_DecryptDataPKCS7","SOF_GenRemoteUnblockRequest","SOF_GenResetpwdResponse","request","soPin","userPin","SOF_RemoteUnblockPIN","OriginalText","SOF_ExportPubKey","containerName","cerType","expType","SOF_EncryptByPubKey","strPubKey","strInput","SOF_DecryptByPrvKey","strAsymCipher","SOF_GenerateP10Request","deviceName","container","dn","asymAlg","keyLength","SOF_EnumCertContiner","SOF_FindContainer","certSN","SOF_DeleteCert","SOF_DeleteContainer","SOF_SignByCert","plain","SOF_VerifyByCert","signature","SOF_ImportCert","cert","SOF_ImportCryptoCertAndKey","nAsymAlg","EncryptedSessionKeyData","symAlg","EncryptedPrivateKeyData","SOF_VerifyByExtCert","SOF_GenerateRandom","SOF_SymEncryptFile","sessionKey","srcfile","destfile","SOF_SymDecryptFile","SOF_SymEncryptData","SOF_SymDecryptData","SOF_GenerateQRCode","qrcode_text","SOF_VerifyPinMS","responseKey","SOF_GetHardwareType","SOF_VerifyFingerprint","SOF_EnumFiles","SOF_ReadFile","fileName","offset","SOF_WriteFile","SOF_CreateFile","readRight","writeRight","SOF_DeleteFile","hasPlugin","plugins","windows","linux","linuxWin","undef","nativeSplit","compliantExecNpcg","str","separator","limit","separator2","lastIndex","lastLength","output","flags","ignoreCase","multiline","extended","sticky","lastLastIndex","RegExp","_xmlhttp","retJSON","_curDevName","AjaxIO","json_in","router","json","invoke","_url","XMLHttpRequest","open","setRequestHeader","GetHttpResult","status","responseText","errorCode","rtn","mac","info","envelopData","signed","digest","InDataBase64","encrypedData","decryptedData","pkcs7","pubKey","asymCipher","asymPlain","SOF_CreateKeyPair","outData","qrcode_text_in","SocketConnect","HostName","Port","SocketDisConnect","SocketSendText","SendText","RecvText","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","resolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","__esModule","d","definition","prop","r","toStringTag","p","currentScript","src","render","_vm","_c","_self","attrs","title","isShow","on","handleClose","ref","imgs","accuracy","sliderText","onSuccess","onFail","onAgain","onRefresh","onFulfilled","staticRenderFns","props","default","Boolean","countDownNum","computed","watch","newVal","$refs","slideblock","reset","created","methods","$emit","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","component","staticStyle","visible","jumpPage","regular","$event","staticClass","_t","_m","_v","directives","rawName","expression","require","_s","enlarge","_e","close","_l","messagelist","class","domProps","regularClick","based","handExpand","isActive","minRows","maxRows","nativeOn","_k","keyCode","carriageReturn","model","textareaValue","$$v","commit","questions","event","search","filter","faq","vlaue","reduce","prev","curr","fun","$nextTick","main","scrollTop","scrollHeight","mixins","chatMixin","components","chatVue","hasSlot","$slots","$route","to","path","customer","style","display","mounted","currData","preventDefault","activeNames","questionsList","slot","getHours","getMinutes","loginForm","loginRules","username","start","caLoading","caRead","handleLogin","password","$set","loading","dialogVisible","showInfo","caInfo","error_text","_keyStr","_Base64encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","_utf8_encode","charCodeAt","isNaN","charAt","in_string","utftext","c","fromCharCode","hunca_mToken_core","libraryNameList","platform","LAST_ERRORSTRING","KEY_SPEC_TYPE_ENCRYPT","KEY_SPEC_TYPE_SIGN","USER_ID","ERROR_MESSAGE_NOT_LOADLIBRARY","ERROR_MESSAGE_NOT_FIND_UKEY","ERROR_MESSAGE_NOT_INSTANCE_DEVICE","ERROR_MESSAGE_USERPIN_LENGTH","ERROR_MESSAGE_USERPIN_IS_ERROR","ERROR_MESSAGE_USERPIN_CHANGE_ERROR","ERROR_MESSAGE_KEY_NOT_EXIT","ERROR_MESSAGE_USERNAME_IS_NULL","ERROR_MESSAGE_KEY_EXPORT_CERT","ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR","ERROR_MESSAGE_SET_USERID_ERROR","ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL","ERROR_MESSAGE_SIGN_ERROR","ERROR_MESSAGE_USERNAMEGN_IS_NULL","ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR","ERROR_MESSAGE_KEY_LIBRAY","ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL","ERROR_MESSAGE_DECRYPT_DATA_IS_NULL","ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR","ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL","ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT","ERROR_MESSAGE_REMOTE_UNLOCK_FAIL","tokenInfoList","signResultSignData","signResultCert","certSn","cert_subject_GN","cert_subject","cert_validTime","cert_notbeforetime","libraryName","resultCode","deviceNameList","m_userPin","RetryCount","SOF_ChangeUserPin","oldUserPin","newUserPin","m_oldUserPin","m_newUserPin","SOF_GetDeviceNumber","deviceNumber","keySec","certBase64","resCode","encryptData","inDataBase64","m_inData","m_EncrypedData","m_DecryptData","signData","b64Data","m_data","subject","tmpList","validTime","notBeforetime","hexToDec","SOF_RemoteUnlockPIN","response","y","base","z","carry","xi","yi","zi","multiplyByNumber","num","power","parseToDigitsArray","digits","ary","convertBase","fromBase","toBase","outArray","out","hexStr","Hunca_GetLastError","Hunca_GetUserList","deviceArray","userName","tmpInfo","tokenInfo","serial","userNameList","Hunca_GetUserListGN","certB64","deviceSerial","subjectGN","userNameGNList","Hunca_userNameGNToUserName","userNameGN","Hunca_GenRemoteUnblockRequest","tempTokenInfo","HUnca_GetDeviceNumber","m_devNumber","Hunca_RemoteUnlockPIN","Hunca_ChangeUserPin","Hunca_PKCS1","originalData","Hunca_GetSignData","Hunca_GetSignCert","Hunca_GetSignCertSn","Hunca_GetSignCertSubject","Hunca_GetValidTime","HUnca_GetNotBeforeTime","Hunca_DealCertInfo","signResultInfo","certInfo","Hunca_EncryptDataPKCS7","m_EncryptMethod","m_EncryptIV","Hunca_DecryptDataPKCS7","m_EncryptData","resData","_Base64decode","formateTime","dateStr","year","month","date","minute","second","region","form","have_error_info","uuid","ca","required","trigger","message","isBJCA","caReadBeijin","tempName","setTimeout","Promise","caLogin","flag","HNCALogin","$message","tempuserName","rn","ca_cert","sign","cert_notBeforeTime","tempinfo","tempinfo1","forEach","caAddr","ST","OU","caCode","TITLE","caName","GN","caSn","caEffectiveDate","caExpireDate","loginType","validate","valid","BJCALogin","msgErr","certId","time_begin","passwd","SOF_LoginEx","login_callback","begin","that","BJSignData","err","signData_callback","userCert","certInfoTypeArray","caAddrProvince","label","caAddrcity","caType","bindParams","v","pass","done","$confirm","then","catch","YcSlideVerify","YcCustomerService","YcQuestion","YcCA","install","Vue"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"yc-ui2.umd.min.js","mappings":"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","sources":["webpack://yc-ui2/webpack/universalModuleDefinition","webpack://yc-ui2/./node_modules/core-js/internals/a-callable.js","webpack://yc-ui2/./node_modules/core-js/internals/an-object.js","webpack://yc-ui2/./node_modules/core-js/internals/array-includes.js","webpack://yc-ui2/./node_modules/core-js/internals/array-set-length.js","webpack://yc-ui2/./node_modules/core-js/internals/classof-raw.js","webpack://yc-ui2/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://yc-ui2/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://yc-ui2/./node_modules/core-js/internals/create-property-descriptor.js","webpack://yc-ui2/./node_modules/core-js/internals/define-built-in.js","webpack://yc-ui2/./node_modules/core-js/internals/define-global-property.js","webpack://yc-ui2/./node_modules/core-js/internals/descriptors.js","webpack://yc-ui2/./node_modules/core-js/internals/document-all.js","webpack://yc-ui2/./node_modules/core-js/internals/document-create-element.js","webpack://yc-ui2/./node_modules/core-js/internals/does-not-exceed-safe-integer.js","webpack://yc-ui2/./node_modules/core-js/internals/engine-user-agent.js","webpack://yc-ui2/./node_modules/core-js/internals/engine-v8-version.js","webpack://yc-ui2/./node_modules/core-js/internals/enum-bug-keys.js","webpack://yc-ui2/./node_modules/core-js/internals/export.js","webpack://yc-ui2/./node_modules/core-js/internals/fails.js","webpack://yc-ui2/./node_modules/core-js/internals/function-bind-native.js","webpack://yc-ui2/./node_modules/core-js/internals/function-call.js","webpack://yc-ui2/./node_modules/core-js/internals/function-name.js","webpack://yc-ui2/./node_modules/core-js/internals/function-uncurry-this.js","webpack://yc-ui2/./node_modules/core-js/internals/get-built-in.js","webpack://yc-ui2/./node_modules/core-js/internals/get-method.js","webpack://yc-ui2/./node_modules/core-js/internals/global.js","webpack://yc-ui2/./node_modules/core-js/internals/has-own-property.js","webpack://yc-ui2/./node_modules/core-js/internals/hidden-keys.js","webpack://yc-ui2/./node_modules/core-js/internals/ie8-dom-define.js","webpack://yc-ui2/./node_modules/core-js/internals/indexed-object.js","webpack://yc-ui2/./node_modules/core-js/internals/inspect-source.js","webpack://yc-ui2/./node_modules/core-js/internals/internal-state.js","webpack://yc-ui2/./node_modules/core-js/internals/is-array.js","webpack://yc-ui2/./node_modules/core-js/internals/is-callable.js","webpack://yc-ui2/./node_modules/core-js/internals/is-forced.js","webpack://yc-ui2/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://yc-ui2/./node_modules/core-js/internals/is-object.js","webpack://yc-ui2/./node_modules/core-js/internals/is-pure.js","webpack://yc-ui2/./node_modules/core-js/internals/is-symbol.js","webpack://yc-ui2/./node_modules/core-js/internals/length-of-array-like.js","webpack://yc-ui2/./node_modules/core-js/internals/make-built-in.js","webpack://yc-ui2/./node_modules/core-js/internals/math-trunc.js","webpack://yc-ui2/./node_modules/core-js/internals/object-define-property.js","webpack://yc-ui2/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://yc-ui2/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://yc-ui2/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://yc-ui2/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://yc-ui2/./node_modules/core-js/internals/object-keys-internal.js","webpack://yc-ui2/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://yc-ui2/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://yc-ui2/./node_modules/core-js/internals/own-keys.js","webpack://yc-ui2/./node_modules/core-js/internals/require-object-coercible.js","webpack://yc-ui2/./node_modules/core-js/internals/shared-key.js","webpack://yc-ui2/./node_modules/core-js/internals/shared-store.js","webpack://yc-ui2/./node_modules/core-js/internals/shared.js","webpack://yc-ui2/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://yc-ui2/./node_modules/core-js/internals/to-absolute-index.js","webpack://yc-ui2/./node_modules/core-js/internals/to-indexed-object.js","webpack://yc-ui2/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://yc-ui2/./node_modules/core-js/internals/to-length.js","webpack://yc-ui2/./node_modules/core-js/internals/to-object.js","webpack://yc-ui2/./node_modules/core-js/internals/to-primitive.js","webpack://yc-ui2/./node_modules/core-js/internals/to-property-key.js","webpack://yc-ui2/./node_modules/core-js/internals/try-to-string.js","webpack://yc-ui2/./node_modules/core-js/internals/uid.js","webpack://yc-ui2/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://yc-ui2/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://yc-ui2/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://yc-ui2/./node_modules/core-js/internals/well-known-symbol.js","webpack://yc-ui2/./node_modules/core-js/modules/es.array.push.js","webpack://yc-ui2/./src/utils/mTokenPluginBeijin/xtxasyn.js","webpack://yc-ui2/./src/utils/mTokenPlugin/mToken.js","webpack://yc-ui2/./src/assets/customerService/ sync ^\\.\\/.*\\.jpg$","webpack://yc-ui2/webpack/bootstrap","webpack://yc-ui2/webpack/runtime/compat get default export","webpack://yc-ui2/webpack/runtime/define property getters","webpack://yc-ui2/webpack/runtime/global","webpack://yc-ui2/webpack/runtime/hasOwnProperty shorthand","webpack://yc-ui2/webpack/runtime/make namespace object","webpack://yc-ui2/webpack/runtime/publicPath","webpack://yc-ui2/./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js","webpack://yc-ui2/./src/components/YcSlideVerify/index.vue","webpack://yc-ui2/./node_modules/vue-monoplasty-slide-verify/src/lib/slide-verify.vue","webpack://yc-ui2/node_modules/vue-monoplasty-slide-verify/src/lib/slide-verify.vue","webpack://yc-ui2/./node_modules/vue-monoplasty-slide-verify/src/lib/slide-verify.vue?bb41","webpack://yc-ui2/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://yc-ui2/./node_modules/vue-monoplasty-slide-verify/src/lib/slide-verify.vue?90e5","webpack://yc-ui2/src/components/YcSlideVerify/index.vue","webpack://yc-ui2/./src/components/YcSlideVerify/index.vue?aaea","webpack://yc-ui2/./src/components/YcSlideVerify/index.vue?0582","webpack://yc-ui2/./src/components/YcCustomerService/index.vue","webpack://yc-ui2/./src/components/YcCustomerService/chat.vue","webpack://yc-ui2/./src/components/YcCustomerService/chatMixin.js","webpack://yc-ui2/src/components/YcCustomerService/chat.vue","webpack://yc-ui2/./src/components/YcCustomerService/chat.vue?5072","webpack://yc-ui2/./src/components/YcCustomerService/chat.vue?40e1","webpack://yc-ui2/src/components/YcCustomerService/index.vue","webpack://yc-ui2/./src/components/YcCustomerService/index.vue?d2ba","webpack://yc-ui2/./src/components/YcCustomerService/index.vue?cfd4","webpack://yc-ui2/./src/components/YcQuestion/index.vue","webpack://yc-ui2/src/components/YcQuestion/index.vue","webpack://yc-ui2/./src/components/YcQuestion/index.vue?35d5","webpack://yc-ui2/./src/components/YcQuestion/index.vue?c0dd","webpack://yc-ui2/./src/components/YcCA/index.vue","webpack://yc-ui2/./src/utils/mTokenPlugin/base64.js","webpack://yc-ui2/./src/utils/mTokenPlugin/hunca_mToken_core2.js","webpack://yc-ui2/./src/utils/mTokenPluginBeijin/formateTime.js","webpack://yc-ui2/src/components/YcCA/index.vue","webpack://yc-ui2/./src/components/YcCA/index.vue?1ad3","webpack://yc-ui2/./src/components/YcCA/index.vue?ea8d","webpack://yc-ui2/./src/packages/index.js","webpack://yc-ui2/./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"yc-ui2\"] = factory();\n\telse\n\t\troot[\"yc-ui2\"] = factory();\n})((typeof self !== 'undefined' ? self : this), function() {\nreturn ","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || this || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.33.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.33.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 and Safari <= 15.4, FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).push();\n } catch (error) {\n return error instanceof TypeError;\n }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n push: function push(item) {\n var O = toObject(this);\n var len = lengthOfArrayLike(O);\n var argCount = arguments.length;\n doesNotExceedSafeInteger(len + argCount);\n for (var i = 0; i < argCount; i++) {\n O[len] = arguments[i];\n len++;\n }\n setArrayLength(O, len);\n return len;\n }\n});\n","/* eslint-disable no-unused-vars */\r\n/*\r\n --------------------------------------------------------------\r\n * FileName:xtxasyn.js\r\n * This Javascript provides asynchronous interfaces\r\n * Support bjca client version 3.4.1 and later\r\n * Author:BJCA-zys\r\n * Date: 2021-05-06\r\n *\r\n --------------------------------------------------------------\r\n */\r\n \r\n(function() {\r\nif (typeof xtxasyn === 'undefined') {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn = {};\r\n}\r\n})();\r\n\r\n// initialize xtxasyn hashMap object\r\n(function() {\r\n\r\nfunction XTXAsynHashMap(){\r\n this.map = {};\r\n}\r\n\r\nXTXAsynHashMap.prototype = {\r\n put : function(key , value){\r\n this.map[key] = value;\r\n },\r\n\r\n get : function(key){\r\n // eslint-disable-next-line no-prototype-builtins\r\n if(this.map.hasOwnProperty(key)){\r\n return this.map[key];\r\n }\r\n return null;\r\n },\r\n \r\n remove : function(key){\r\n // eslint-disable-next-line no-prototype-builtins\r\n if(this.map.hasOwnProperty(key)){\r\n return delete this.map[key];\r\n }\r\n return false;\r\n },\r\n \r\n removeAll : function(){\r\n this.map = {};\r\n },\r\n \r\n keySet : function(){\r\n var _keys = [];\r\n for(var i in this.map){\r\n _keys.push(i);\r\n }\r\n return _keys;\r\n }\r\n};\r\n\r\nXTXAsynHashMap.prototype.constructor = XTXAsynHashMap;\r\n\r\n// eslint-disable-next-line no-undef\r\nxtxasyn.HashMap = XTXAsynHashMap;\r\n})();\r\n\r\n// initialize xtxasyn util object\r\n(function() {\r\n\r\nfunction initUtilObject(xtxasyn) {\r\n\r\n var util = xtxasyn.util = xtxasyn.util || {};\r\n \r\n util.checkBrowserISIE = function() {\r\n return (!!window.ActiveXObject || 'ActiveXObject' in window) ? true : false;\r\n }\r\n \r\n util.checkLocationIsHttps = function() {\r\n return 'https:' == document.location.protocol ? true: false;\r\n }\r\n \r\n util.evalFunction = function (func) {\r\n if (typeof func === 'function') {\r\n return func;\r\n } else if (typeof func === 'string') {\r\n // eslint-disable-next-line no-undef\r\n cb = eval(func);\r\n } else {\r\n return null;\r\n }\r\n }\r\n \r\n util.consolelog = function(param) {\r\n if (window.console == undefined || window.console.log == undefined) {\r\n return;\r\n }\r\n console.log(param);\r\n }\r\n \r\n util.isEmpty = function(param) {\r\n if (!param) {\r\n return true;\r\n }\r\n if (typeof param == 'string' && param == \"\") {\r\n return true;\r\n }\r\n \r\n return false;\r\n }\r\n\r\n util.loadIECtl = function(clsid, ctlName, checkFunc) {\r\n if (!util.checkBrowserISIE()) {\r\n return null;\r\n }\r\n var ctl = document.getElementById(ctlName);\r\n if (ctl) {\r\n return ctl;\r\n }\r\n try {\r\n var loadObjString = '<object id=\"' + ctlName + '\" classid=\"CLSID:' + clsid + '\" style=\"HEIGHT:0px; WIDTH:0px\">';\r\n loadObjString += '</object>';\r\n document.write(loadObjString);\r\n if (checkFunc != null && checkFunc != \"\" && eval(ctlName + \".\" + checkFunc) == undefined) {\r\n return null; \r\n }\r\n } catch (e) {\r\n util.consolelog(e);\r\n return null;\r\n }\r\n return document.getElementById(ctlName);\r\n }\r\n\r\n util.getAutoExecFunctionString = function (func) {\r\n var ret = \"(\";\r\n ret += func.toString();\r\n ret += \")()\";\r\n \r\n return ret;\r\n }\r\n\r\n util.attachIEEvent = function(ctlName, eventName, eventFunc) {\r\n var ctl;\r\n if (typeof ctlName === 'string') {\r\n ctl = eval(ctlName);\r\n } else {\r\n ctl = ctlName;\r\n }\r\n eventName = eventName.toLowerCase();\r\n\r\n var cb = util.evalFunction(eventFunc);\r\n if (cb == null) {\r\n return;\r\n }\r\n\r\n if (ctl.attachEvent) {\r\n ctl.attachEvent(eventName, cb);\r\n } else { // IE11 not support attachEvent, and addEventListener do not work well, so addEvent ourself\r\n var handler = document.createElement(\"script\");\r\n handler.setAttribute(\"for\", ctlName);\r\n handler.setAttribute(\"event\", eventName);\r\n var eventScript = util.getAutoExecFunctionString(eventFunc);\r\n handler.appendChild(document.createTextNode(eventScript));\r\n document.getElementsByTagName(\"head\")[0].appendChild(handler);\r\n }\r\n }\r\n\r\n util.loadWebSocketCtl = function(wsUrl, wssUrl) {\r\n if (xtxasyn.wsObject) {\r\n return xtxasyn.wsObject;\r\n }\r\n var url;\r\n if (util.checkLocationIsHttps()) {\r\n url = \"wss://\" + wssUrl;\r\n } else {\r\n url = \"ws://\" + wsUrl;\r\n }\r\n \r\n var wsObject = {\r\n socket : undefined,\r\n wsMessageQueue : new xtxasyn.HashMap(),\r\n wsMessageQueueId : 0,\r\n wsEventQueue : new xtxasyn.HashMap(),\r\n wsURL : url,\r\n wsCacheMessage : []\r\n };\r\n xtxasyn.wsObject = wsObject;\r\n xtxasyn.wsObject.wsEventQueue.put(\"onusbkeychange\", util.evalFunction(xtxasyn.custom.defaultUsbkeyChange));\r\n \r\n try {\r\n wsObject.socket = new WebSocket(url); \r\n } catch (e) {\r\n util.consolelog(e);\r\n return null;\r\n }\r\n \r\n // eslint-disable-next-line no-unused-vars\r\n wsObject.socket.onopen = function(evt) {\r\n xtxasyn.util.consolelog(\"open websocket[\" + url + \"] ok...\");\r\n xtxasyn.SOF_GetVersion(function(ret) {\r\n util.consolelog(\"SOF_GetVersion:(\" + ret.retVal + \")\");\r\n });\r\n while (xtxasyn.wsObject.wsCacheMessage.length > 0) {\r\n var tb_send = xtxasyn.wsObject.wsCacheMessage.shift();\r\n //alert(tb_send);\r\n xtxasyn.wsObject.socket.send(tb_send);\r\n }\r\n }\r\n // eslint-disable-next-line no-unused-vars\r\n wsObject.socket.onclose = function(evt) {\r\n util.consolelog(\"websocket[\" + url + \"] closed, reopen it...\");\r\n xtxasyn.wsObject = undefined;\r\n xtxasyn.XTXAppWebSocket = xtxasyn.util.loadWebSocketCtl(wsUrl, wssUrl);\r\n };\r\n wsObject.socket.onmessage = function(evt) {\r\n // eslint-disable-next-line no-unused-vars\r\n var eventCmd = false;\r\n if (xtxasyn.util.isEmpty(evt.data)) {\r\n util.consolelog(\"onmessage evt.data is NULL or empty!!!\");\r\n return;\r\n }\r\n try {\r\n var res = JSON.parse(evt.data);\r\n var cmdId = undefined;\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (res.hasOwnProperty('call_cmd_id')) {\r\n cmdId = res['call_cmd_id'];\r\n } else {\r\n util.consolelog(\"return JSON not include call_cmd_id!!!\");\r\n return;\r\n }\r\n \r\n var retVal = undefined;\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (res.hasOwnProperty('retValue')) {\r\n retVal = res['retValue'];\r\n // eslint-disable-next-line no-prototype-builtins\r\n } else if (res.hasOwnProperty('retVal')) {\r\n retVal = res['retVal'];\r\n }\r\n \r\n var methodName = undefined;\r\n var eventName = cmdId.toLowerCase();\r\n var execFunc = xtxasyn.wsObject.wsEventQueue.get(eventName);\r\n if (execFunc && typeof execFunc == 'function') { // event\r\n execFunc(retVal);\r\n } else { // function\r\n var messageQueue = xtxasyn.wsObject.wsMessageQueue.get(cmdId);\r\n if (!messageQueue || !messageQueue.method) {\r\n util.consolelog(\"can't find call_cmd_id[\" + res['call_cmd_id'] + \"]'s method name!!!\");\r\n return;\r\n }\r\n methodName = messageQueue.method;\r\n execFunc = messageQueue.cb;\r\n if (!execFunc || typeof execFunc != 'function') {\r\n util.consolelog(\"can't find call_cmd_id[\" + res['call_cmd_id'] + \"]'s call back function!!!\");\r\n return;\r\n }\r\n var ctx = messageQueue.ctx;\r\n ctx = ctx || {returnType:\"string\"};\r\n var ret;\r\n if (ctx.returnType == \"bool\"){\r\n if (typeof(retVal) == 'string') {\r\n ret = retVal == \"true\" ? true : false;\r\n } else {\r\n ret = retVal;\r\n }\r\n if (ret == undefined) {\r\n ret = false;\r\n }\r\n } else if (ctx.returnType == \"number\"){\r\n if (typeof(retVal) == 'string') {\r\n ret = Number(retVal);\r\n } else {\r\n ret = retVal;\r\n }\r\n if (ret == undefined) {\r\n ret = -1;\r\n }\r\n } else{\r\n ret = retVal;\r\n if (ret == undefined) {\r\n ret = \"\";\r\n }\r\n }\r\n if (res.token) {\r\n //alert(res.token);\r\n xtxasyn.custom.setToken(res.token);\r\n }\r\n if (((methodName == 'SOF_Login' || methodName == 'SOF_LoginEx') && !ret) || (methodName == 'SOF_Logout' && ret)) {\r\n xtxasyn.custom.setToken(\"\");\r\n } \r\n var retObj = {retVal:ret, ctx:ctx};\r\n execFunc(retObj);\r\n xtxasyn.wsObject.wsMessageQueue.remove(cmdId);\r\n }\r\n } catch (e) {\r\n return;\r\n }\r\n };\r\n wsObject.socket.onerror = function(evt) { \r\n xtxasyn.util.consolelog(evt.data);\r\n };\r\n \r\n return wsObject;\r\n }\r\n \r\n util.attachWebSocketEvent = function(wsObject, eventName, eventFunc) {\r\n if (wsObject == null) {\r\n return;\r\n }\r\n wsObject.wsEventQueue.put(eventName.toLowerCase(), util.evalFunction(eventFunc));\r\n }\r\n \r\n util.callWebSocketMethod = function (wsObject, clsid, method, cb, ctx, returnType, argsArray) {\r\n if (wsObject == null) {\r\n return;\r\n }\r\n wsObject.wsMessageQueueId++;\r\n if (typeof(cb) == 'function'){\r\n ctx = ctx || {};\r\n ctx.returnType = returnType;\r\n var messageQueue = {cb:cb, ctx:ctx, method:method};\r\n wsObject.wsMessageQueue.put('i_' + wsObject.wsMessageQueueId, messageQueue);\r\n }\r\n\r\n var sendArray = {\r\n 'call_cmd_id' : 'i_' + wsObject.wsMessageQueueId,\r\n 'CLSID' : clsid,\r\n 'xtx_func_name' : method,\r\n 'func' : method,\r\n 'URL' : window.location.href\r\n };\r\n if (arguments.length > 6) {\r\n for (var i = 1; i <= argsArray.length; i++) {\r\n var strParam = \"param_\" + i;\r\n sendArray[strParam] = argsArray[i - 1];\r\n }\r\n sendArray[\"param\"] = argsArray;\r\n }\r\n var token = xtxasyn.custom.getToken();\r\n if (token && token != \"\") {\r\n sendArray.token = token;\r\n }\r\n if (wsObject.socket.readyState == WebSocket.OPEN) {\r\n wsObject.socket.send(JSON.stringify(sendArray));\r\n } else if (wsObject.socket.readyState == WebSocket.CONNECTING) {\r\n // The websocket connection has not been successfully created. \r\n // If the html page already has requested data, we will put it in the cache(wsObject.wsCacheMessage),\r\n // and then send the data one by one after the connection is successfully created.\r\n wsObject.wsCacheMessage.push(JSON.stringify(sendArray));\r\n } else {\r\n xtxasyn.util.consolelog(\"Can't connect to WebSocket server[\" + wsObject.wsURL + \"]!!!\");\r\n }\r\n }\r\n\r\n util.SynToAsyn = function(retVal, cb, ctx)\r\n {\r\n if (typeof cb == 'function') {\r\n var retObj = {retVal:retVal, ctx:ctx};\r\n cb(retObj);\r\n } \r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-undef\r\nreturn initUtilObject(xtxasyn);\r\n})();\r\n\r\n// initialize index page and other custom action\r\n(function() {\r\n \r\nfunction initCustomActions(xtxasyn) {\r\n var custom = xtxasyn.custom = xtxasyn.custom || {};\r\n \r\n custom.softCertListID = \"\";\r\n custom.hardCertListID = \"\";\r\n custom.allCertListID = \"\";\r\n custom.loginCertID = \"\";\r\n custom.logoutFunc = null;\r\n custom.UsbkeyChangeFunc = null;\r\n custom.loginToken = \"\";\r\n \r\n custom.errorReportFunc = function(msg) {\r\n alert(msg);\r\n }\r\n \r\n custom.setAutoLogoutParameter = function(strCertID, logoutFunc) {\r\n var custom = xtxasyn.custom;\r\n custom.loginCertID = strCertID;\r\n custom.logoutFunc = logoutFunc;\r\n }\r\n\r\n custom.clearDropList = function(dropListId) {\r\n if (dropListId == \"\") {\r\n return;\r\n }\r\n\r\n var obj = document.getElementById(dropListId);\r\n if (obj == undefined) {\r\n obj = eval(dropListId);\r\n } \r\n if (obj == undefined) {\r\n return;\r\n }\r\n\r\n var i, n = obj.length;\r\n for (i = 0; i < n; i++) {\r\n obj.remove(0);\r\n }\r\n }\r\n\r\n custom.pushOneDropListBox = function(userListArray, strListID) \r\n {\r\n var obj = document.getElementById(strListID);\r\n if (obj == undefined) {\r\n obj = eval(strListID);\r\n }\r\n if (obj == undefined) {\r\n return;\r\n }\r\n \r\n for (var i = 0; i < userListArray.length; i++) {\r\n var certObj = userListArray[i];\r\n var objItem = new Option(certObj.certName, certObj.certID);\r\n obj.options.add(objItem);\r\n } \r\n return;\r\n }\r\n\r\n custom.pushUserListToAllDroplist = function(retObj) {\r\n var custom = xtxasyn.custom;\r\n\r\n custom.clearDropList(custom.softCertListID);\r\n custom.clearDropList(custom.hardCertListID);\r\n custom.clearDropList(custom.allCertListID);\r\n\r\n var strUserList = retObj.retVal;\r\n var allListArray = [];\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n var i = strUserList.indexOf(\"&&&\");\r\n if (i <= 0 ) {\r\n break;\r\n }\r\n var strOneUser = strUserList.substring(0, i);\r\n var strName = strOneUser.substring(0, strOneUser.indexOf(\"||\"));\r\n var strCertID = strOneUser.substring(strOneUser.indexOf(\"||\") + 2, strOneUser.length);\r\n allListArray.push({certName:strName, certID:strCertID});\r\n \r\n if (custom.hardCertListID != \"\") {\r\n xtxasyn.GetDeviceInfo(strCertID, 7, function(retObj) {\r\n if (retObj.retVal == \"HARD\") {\r\n custom.pushOneDropListBox([retObj.ctx], custom.hardCertListID);\r\n }\r\n }, {certName:strName, certID:strCertID});\r\n }\r\n \r\n if (custom.softCertListID != \"\") {\r\n xtxasyn.GetDeviceInfo(strCertID, 7, function(retObj) {\r\n if (retObj.retVal == \"SOFT\") {\r\n custom.pushOneDropListBox([retObj.ctx], custom.softCertListID);\r\n }\r\n }, {certName:strName, certID:strCertID});\r\n }\r\n var len = strUserList.length;\r\n strUserList = strUserList.substring(i + 3, len);\r\n }\r\n\r\n if (custom.allCertListID != \"\") {\r\n custom.pushOneDropListBox(allListArray, custom.allCertListID);\r\n }\r\n }\r\n \r\n custom.setUserCertList = function(certListId, certType) {\r\n var custom = xtxasyn.custom;\r\n\r\n if (certType == CERT_TYPE_ALL || certType == undefined) {\r\n custom.allCertListID = certListId;\r\n }\r\n \r\n if (certType == CERT_TYPE_HARD) {\r\n custom.hardCertListID = certListId;\r\n }\r\n \r\n if (certType == CERT_TYPE_SOFT) {\r\n custom.softCertListID = certListId;\r\n }\r\n xtxasyn.SOF_GetUserList(custom.pushUserListToAllDroplist);\r\n }\r\n \r\n custom.setOnUsbKeyChangeCallBack = function(callback) {\r\n var custom = xtxasyn.custom;\r\n custom.UsbkeyChangeFunc = callback;\r\n }\r\n \r\n custom.setErrorReportFunc = function(errFunc) {\r\n var custom = xtxasyn.custom;\r\n custom.errorReportFunc = errFunc;\r\n }\r\n\r\n custom.autoLogoutCallBack = function(retObj) {\r\n var custom = xtxasyn.custom;\r\n if (retObj.retVal.indexOf(custom.loginCertID) <= 0) {\r\n custom.logoutFunc();\r\n }\r\n }\r\n \r\n custom.defaultUsbkeyChange = function() {\r\n var custom = xtxasyn.custom;\r\n xtxasyn.SOF_GetUserList(custom.pushUserListToAllDroplist);\r\n \r\n if (typeof custom.UsbkeyChangeFunc == 'function') {\r\n custom.UsbkeyChangeFunc();\r\n }\r\n\r\n if (custom.loginCertID != \"\" && typeof custom.logoutFunc == 'function') {\r\n xtxasyn.SOF_GetUserList(custom.autoLogoutCallBack);\r\n }\r\n }\r\n \r\n custom.getToken = function() {\r\n return custom.loginToken;\r\n }\r\n \r\n custom.setToken = function(token) {\r\n custom.loginToken = token;\r\n }\r\n}\r\n\r\n// eslint-disable-next-line no-undef\r\nreturn initCustomActions(xtxasyn);\r\n})();\r\n\r\n// initialize xtxappcom object\r\n(function() {\r\n \r\nfunction initXTXAppCOM(xtxasyn) {\r\n var util = xtxasyn.util;\r\n var custom = xtxasyn.custom; \r\n\r\n xtxasyn.XTXAppCOM = util.loadIECtl(xtxasyn.xtx_clsid, \"XTXAppObj\", \"SOF_GetVersion()\");\r\n if (xtxasyn.XTXAppCOM == null) {\r\n custom.errorReportFunc(\"加载XTXAppCOM控件失败,请确认已正确安装BJCA证书应用环境!\");\r\n return false;\r\n }\r\n var XTXAppCOM = xtxasyn.XTXAppCOM;\r\n \r\n util.attachIEEvent(\"XTXAppObj\", \"onUsbkeyChange\", xtxasyn.custom.defaultUsbkeyChange);\r\n \r\n // get key pic interface\r\n var GetPicObj = util.loadIECtl(xtxasyn.getpic_clsid, \"GetPicObj\", \"Hash('0')\");\r\n if (GetPicObj == null) {\r\n //custom.errorReportFunc(\"加载GetKeyPic控件失败,请确认已正确安装GetKeyPic控件!\");\r\n } else {\r\n XTXAppCOM.GetPic = function(strCertID) {\r\n return GetPicObj.GetPic(strCertID);\r\n }\r\n XTXAppCOM.Hash = function(inData) {\r\n return GetPicObj.Hash(inData);\r\n }\r\n XTXAppCOM.ConvertPicFormat = function(inData, type) {\r\n return GetPicObj.ConvertPicFormat(inData, type);\r\n }\r\n XTXAppCOM.ConvertGif2Jpg = function(inData) {\r\n return GetPicObj.ConvertGif2Jpg(inData);\r\n }\r\n XTXAppCOM.GetPic1 = function(strCertID) {\r\n return GetPicObj.GetPic1(strCertID);\r\n }\r\n XTXAppCOM.ConvertPicSize = function(strPicture, w, h) {\r\n return GetPicObj.ConvertPicSize(strPicture, w, h);\r\n }\r\n }\r\n \r\n // xtxversion interface\r\n var XTXVersionOBJ = util.loadIECtl(xtxasyn.xtx_version_clsid, \"XTXVersionOBJ\", \"GetEnvVersion()\");\r\n if (XTXVersionOBJ == null) {\r\n //custom.errorReportFunc(\"加载XTXVersion控件失败,请确认已正确安装证书应用环境!\");\r\n } else {\r\n XTXAppCOM.GetEnvVersion = function() {\r\n return XTXVersionOBJ.GetEnvVersion();\r\n }\r\n } \r\n \r\n return true;\r\n}\r\n\r\nfunction initXTXAppWebSocket(xtxasyn) { \r\n xtxasyn.XTXAppWebSocket = xtxasyn.util.loadWebSocketCtl(\"127.0.0.1:21051/xtxapp/\", \"127.0.0.1:21061/xtxapp/\");\r\n if (xtxasyn.XTXAppWebSocket == null) {\r\n // eslint-disable-next-line no-undef\r\n custom.errorReportFunc(\"连接XTXAppCOM服务失败,请确认已正确安装BJCA证书应用环境!\");\r\n return false;\r\n }\r\n\r\n return true;\r\n}\r\n\r\nfunction initXTXAppObject(xtxasyn) {\r\n var util = xtxasyn.util;\r\n xtxasyn.xtx_clsid = \"3F367B74-92D9-4C5E-AB93-234F8A91D5E6\";\r\n xtxasyn.getpic_clsid = \"3BC3C868-95B5-47ED-8686-E0E3E94EF366\";\r\n xtxasyn.xtx_version_clsid = \"574887FB-22A5-488B-A49C-2CF25F56BE68\";\r\n var getImplmentFunction;\r\n\r\n if (util.checkBrowserISIE()) { // IE\r\n if (!initXTXAppCOM(xtxasyn)) {\r\n return false;\r\n }\r\n getImplmentFunction = function(methodInfo) {\r\n if (methodInfo.inParams == '') { // 0 input param\r\n window[methodInfo.funcName] = new Function('cb', 'ctx', \r\n 'xtxasyn.util.SynToAsyn(xtxasyn.XTXAppCOM.' + methodInfo.funcName + '(), cb, ctx);');\r\n } else {\r\n window[methodInfo.funcName] = new Function(methodInfo.inParams, 'cb', 'ctx', \r\n 'xtxasyn.util.SynToAsyn(xtxasyn.XTXAppCOM.' + methodInfo.funcName + '(' + methodInfo.inParams + '), cb, ctx);');\r\n }\r\n }\r\n } else { // other brower\r\n if (!initXTXAppWebSocket(xtxasyn)) {\r\n return false;\r\n }\r\n getImplmentFunction = function(methodInfo) {\r\n if (methodInfo.inParams == '') { // 0 input param\r\n window[methodInfo.funcName] = new Function('cb, ctx', \r\n \"xtxasyn.util.callWebSocketMethod(xtxasyn.XTXAppWebSocket, '\" + methodInfo.clsid + \"', '\" + \r\n methodInfo.funcName + \"', cb, ctx, '\" + methodInfo.outParamType + \"', []);\");\r\n } else {\r\n window[methodInfo.funcName] = new Function(methodInfo.inParams + ', cb, ctx', \r\n \"xtxasyn.util.callWebSocketMethod(xtxasyn.XTXAppWebSocket, '\" + methodInfo.clsid + \"', '\" + \r\n methodInfo.funcName + \"', cb, ctx, '\" + methodInfo.outParamType + \"', [\" + methodInfo.inParams + \"]);\");\r\n }\r\n }\r\n }\r\n\r\n var export_functions = [\r\n {funcName:'SOF_SetSignMethod', inParams:'SignMethod', outParamType:'number', clsid:xtxasyn.xtx_clsid, aliasName:'SetSignMethod'},\r\n {funcName:'SOF_GetSignMethod', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SetEncryptMethod', inParams:'EncryptMethod', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetEncryptMethod', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetUserList', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetUserList'},\r\n {funcName:'SOF_ExportUserCert', inParams:'CertID', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetSignCert'},\r\n {funcName:'SOF_Login', inParams:'CertID, PassWd', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifyUserPIN'},\r\n {funcName:'SOF_GetPinRetryCount', inParams:'CertID', outParamType:'number', clsid:xtxasyn.xtx_clsid, aliasName:'GetUserPINRetryCount'},\r\n {funcName:'SOF_ChangePassWd', inParams:'CertID, oldPass, newPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'ChangeUserPassword'},\r\n {funcName:'SOF_GetCertInfo', inParams:'Cert, type', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetCertBasicinfo'},\r\n {funcName:'SOF_GetCertInfoByOid', inParams:'Cert, Oid', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetExtCertInfoByOID'},\r\n {funcName:'SOF_SignData', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'SignedData'},\r\n {funcName:'SOF_VerifySignedData', inParams:'Cert, InData, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifySignedData'},\r\n {funcName:'SOF_SignFile', inParams:'CertID, InFile', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'SOF_SignFile'},\r\n {funcName:'SOF_VerifySignedFile', inParams:'Cert, InFile, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifySignFile'},\r\n {funcName:'SOF_EncryptData', inParams:'Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'EncodeP7Enveloped'},\r\n {funcName:'SOF_DecryptData', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'DecodeP7Enveloped'},\r\n {funcName:'SOF_EncryptFile', inParams:'Cert, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_DecryptFile', inParams:'CertID, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignMessage', inParams:'dwFlag, CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedMessage', inParams:'MessageData, InData', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifyDatabyP7'},\r\n {funcName:'SOF_GetInfoFromSignedMessage', inParams:'SignedMessage, type', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignDataXML', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedDataXML', inParams:'InData', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetXMLSignatureInfo', inParams:'XMLSignedData, type', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GenRandom', inParams:'RandomLen', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GenerateRandom'},\r\n {funcName:'SOF_PubKeyEncrypt', inParams:'Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'PubKeyEncrypt'},\r\n {funcName:'SOF_PriKeyDecrypt', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'PriKeyDecrypt'},\r\n {funcName:'SOF_SecertSegment', inParams:'Secert, m, n, k', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SecertRecovery', inParams:'Seg', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetLastError', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceCount', inParams:'', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetAllDeviceSN', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceSNByIndex', inParams:'iIndex', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceInfo', inParams:'sDeviceSN, iType', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ChangeAdminPass', inParams:'sDeviceSN, sOldPass, sNewPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'UnlockUserPass', inParams:'sDeviceSN, sAdminPass, sNewUserPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GenerateKeyPair', inParams:'sDeviceSN, sContainerName, iKeyType, bSign', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPubKey', inParams:'sDeviceSN, sContainerName, bSign', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportSignCert', inParams:'sDeviceSN, sContainerName, sCert', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportEncCert', inParams:'sDeviceSN, sContainerName, sCert, sPriKeyCipher', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ReadFile', inParams:'sDeviceSN, sFileName', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'readFile'},\r\n {funcName:'WriteFile', inParams:'sDeviceSN, sFileName, sContent, bPrivate', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'writeFile'},\r\n {funcName:'IsContainerExist', inParams:'sDeviceSN, sContainerName', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'DeleteContainer', inParams:'sDeviceSN, sContainerName', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPKCS10', inParams:'sDeviceSN, sContainerName, sDN, bSign', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'InitDevice', inParams:'sDeviceSN, sAdminPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'AddSignInfo', inParams:'sUserPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetVersion', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ExportExChangeUserCert', inParams:'CertID', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetExchCert'},\r\n {funcName:'SOF_ValidateCert', inParams:'Cert', outParamType:'number', clsid:xtxasyn.xtx_clsid, aliasName:'ValidateCert'},\r\n {funcName:'GetENVSN', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SetENVSN', inParams:'sDeviceSN, sEnvsn', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'IsDeviceExist', inParams:'sDeviceSN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetContainerCount', inParams:'sDeviceSN', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymEncryptData', inParams:'sKey, indata', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'EncryptData'},\r\n {funcName:'SOF_SymDecryptData', inParams:'sKey, indata', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'DecryptData'},\r\n {funcName:'SOF_SymEncryptFile', inParams:'sKey, inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'EncryptFile'},\r\n {funcName:'SOF_SymDecryptFile', inParams:'sKey, inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'DecryptFile'},\r\n {funcName:'SOF_GetLastErrMsg', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_Base64Encode', inParams:'sIndata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_Base64Decode', inParams:'sIndata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashData', inParams:'hashAlg, sInData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashFile', inParams:'hashAlg, inFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'UnlockUserPassEx', inParams:'sDeviceSN, sAdminPin, sNewUserPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'DeleteOldContainer', inParams:'sDeviceSN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'WriteFileEx', inParams:'sDeviceSN, sFileName, sContent', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ReadFileEx', inParams:'sDeviceSN, sFileName', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'WriteFileBase64', inParams:'sDeviceSN, sFileName, sContent', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'DeleteFile', inParams:'sDeviceSN, sFileName', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EncryptDataEx', inParams:'Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'Base64EncodeFile', inParams:'sInFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetRetryCount', inParams:'CertID', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetAllContainerName', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'CreateSoftDevice', inParams:'sDeviceSN, sLabel', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'DeleteSoftDevice', inParams:'sDeviceSN, sPasswd', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnableSoftDevice', inParams:'enable, sDeviceSN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SoftDeviceBackup', inParams:'sDeviceSN, sPasswd', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SoftDeviceRestore', inParams:'sDeviceSN, sPasswd, sInFilePath', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_Logout', inParams:'CertID', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'Logout'},\r\n {funcName:'SetUserConfig', inParams:'type, strConfig', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignByteData', inParams:'CertID, byteLen', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedByteData', inParams:'Cert, byteLen, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetChallengeCode', inParams:'sCertID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportEncCertEx', inParams:'sDeviceSN, sContainerName, sCert, sPriKeyCipher, ulSymAlg', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetCertEntity', inParams:'sCert', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'GetCertEntity'},\r\n {funcName:'SOF_HMAC', inParams:'hashid, key, indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignDataByPriKey', inParams:'sPriKey, sCert, sInData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportKeyCertToSoftDevice', inParams:'sDeviceSN, sContainerName, sPriKey, sCert, bSign', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'InitDeviceEx', inParams:'sDeviceSN, sAdminPass, sUserPin, sKeyLabel, adminPinMaxRetry, userPinMaxRetry', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SelectFile', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignHashData', inParams:'CertID, b64ashData, hashAlg', outParamType:'string', clsid:xtxasyn.xtx_clsid, aliasName:'SignHashData'},\r\n {funcName:'SOF_VerifySignedHashData', inParams:'Cert, b64ashData, SignValue, hashAlg', outParamType:'bool', clsid:xtxasyn.xtx_clsid, aliasName:'VerifySignedHashData'},\r\n {funcName:'CheckSoftDeviceEnv', inParams:'', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ImportPfxToDevice', inParams:'sDeviceSN, sContainerName, bSign, strPfx, strPfxPass', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashDataEx', inParams:'hashAlg, sInData, sCert, sID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashFileEx', inParams:'hashAlg, inFile, sCert, sID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetDeviceCountEx', inParams:'type', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'GetAllDeviceSNEx', inParams:'type', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_UpdateCert', inParams:'CertID, type', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OpenSpecifiedFolder', inParams:'backupFilePath', outParamType:'', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetChallengeCodeEx', inParams:'sCertID, szAccount, money', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'Base64DecodeFile', inParams:'sInData, sFilePath', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnumFilesInDevice', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_Halt', inParams:'sCertID', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSGenREQ', inParams:'b64Hash, hashAlg, bReqCert, policyID, b64Nonce, b64Extension', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSCompareNonce', inParams:'b64TSReq, b64TSAResp', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSGenPDFSignature', inParams:'b64TSAResp, b64OriPDFSignature', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSVerifyPDFSignature', inParams:'b64TSPDFSignature', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_TSGetPDFSignatureInfo', inParams:'b64TSPDFSignature, iType', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetState', inParams:'sCertID, bCert', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'OTP_GetSyncCode', inParams:'sCertID, ChallengeCode', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_IsLogin', inParams:'CertID', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_LoginEx', inParams:'CertID, PassWd, updateFlag', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnumSupportDeviceList', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPfxFromDevice', inParams:'sDeviceSN, sContainerName, bSign, strPfxPass', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignHashMessage', inParams:'CertID, InHashData, hashAlg', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'ExportPfxToFile', inParams:'sDeviceSN, sContainerName, bSign, strPfxPass', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignAPK', inParams:'CertID, strOriSignature', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_GenerateKeyPair', inParams:'sDeviceSN, sContainerName, iKeyTypeRSA, iKeyTypeSM2', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_ExportPubKey', inParams:'sDeviceSN, sContainerName, bSign', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_ImportSignCert', inParams:'sDeviceSN, sContainerName, sRSACert, sSM2Cert', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'YZT_ImportEncCert', inParams:'sDeviceSN, sContainerName, sRSACert, sRSAPriKeyCipher, ulRSASymAlg, sSM2Cert, sSM2PriKeyCipher, ulSM2SymAlg', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ListenUKey', inParams:'Parm', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EnableLoginWindow', inParams:'Parm', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignEnvelope', inParams:'CertID, Cert, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_UnSignEnvelope', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_MAKExportPKCS10', inParams:'sDeviceSN, iKeyType, sDN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_MAKImportSignEncCert', inParams:'sDeviceSN, sSignCert, sEncCert, sPriKeyCipher', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_IssueDAKCert', inParams:'sDeviceSN, iKeyType, sDN', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_InfoCollect', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_GetBioInfo', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetLastLoginCertID', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ReadESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ReadKFXESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymDecryptFileToData', inParams:'sKey, inFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignMessageBase64', inParams:'dwFlag, CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedMessageBase64', inParams:'MessageData, InData', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedHashMessage', inParams:'MessageData, InHashData', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SignDataBase64', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedDataBase64', inParams:'Cert, InData, SignValue', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_HashDataExBase64', inParams:'hashAlg, sInData, sCert, sID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetProductVersion', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_UpdateCertEx', inParams:'CertID, PassWd', outParamType:'number', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_GetLastSignDataCertID', inParams:'CertID', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_SetUserConfig', inParams:'CertID, type, strConfig', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'BIO_InvokeCommand', inParams:'CertID, bstrCommand', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_ImportSymmKey', inParams:'CertID, ulKeyIndex, InData, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_WriteESealData', inParams:'CertID, InData, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_Encrypt', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_Decrypt', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_Mac', inParams:'CertID, ulKeyIndex, ulKeyAlgId, IVData, DivCount, DivComponent, InData, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_PriKeyDecryptEx', inParams:'CertID, InData', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_ReadESealData', inParams:'CertID, ulKeyIndex, ulKeyAlgId, ulFlags', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_EPS_WriteESealData', inParams:'CertID, InData, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'EnumESeal', inParams:'sDeviceSN', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'GetPicture', inParams:'bstrConName', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SignEnvelopeFile', inParams:'CertID, Cert, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_UnSignEnvelopeFile', inParams:'CertID, InFile, OutFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_EncryptFile', inParams:'CertID, Cert, InFile, OutFile, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_DecryptFile', inParams:'CertID, InFile, OutFile, ulFlags', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\t\t\r\n {funcName:'GetPic', inParams:'bstrConName', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'Hash', inParams:'inData', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'ConvertPicFormat', inParams:'inData, type', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'ConvertGif2Jpg', inParams:'inData', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'GetPic1', inParams:'bstrConName', outParamType:'string', clsid:xtxasyn.getpic_clsid},\r\n {funcName:'ConvertPicSize', inParams:'bstrPic, w, h', outParamType:'string', clsid:xtxasyn.getpic_clsid},\t\t\r\n {funcName:'GetEnvVersion', inParams:'', outParamType:'string', clsid:xtxasyn.xtx_version_clsid},\r\n\t\t{funcName:'InitDeviceWithParam', inParams:'sDeviceSN, sAppName, sAdminPass, sUserPin, sKeyLabel, adminPinMaxRetry, userPinMaxRetry, createFileRights', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SignDataEx', inParams:'CertID, InData,signFlag', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_VerifySignedDataEx', inParams:'Cert, InData, SignValue,signFlag', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SymEncryptDataEx', inParams:'sKey,sIV,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymDecryptDataEx', inParams:'sKey,sIV,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t\r\n\t\t// 3.8 added \r\n\t\t{funcName:'SOFX_InvokeCommand', inParams:'pluginName,InParam', outParamType:'string', clsid:xtxasyn.xtx_clsid},\t\r\n\t\t\r\n\t\t{funcName:'SOF_SymEncryptFileEx', inParams:'sKey,sIV,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOF_SymDecryptFileEx', inParams:'sKey,sIV,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOF_SymDecryptFileToDataEx', inParams:'sKey,sIV,inFile', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_SymEncryptDataWithPadding', inParams:'sKey,sIV,padding,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOFX_SymDecryptDataWithPadding', inParams:'sKey,sIV,padding,indata', outParamType:'string', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_SymEncryptFileWithPadding', inParams:'sKey,sIV,padding,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n {funcName:'SOFX_SymDecryptFileWithPadding', inParams:'sKey,sIV,padding,inFile, outFile', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n\t\t{funcName:'SOFX_VerifySignedDataWithID', inParams:'Cert, InData, SignValue,userId', outParamType:'bool', clsid:xtxasyn.xtx_clsid}, \r\n {funcName:'SOFX_VerifySignedFileWithID', inParams:'Cert, InFile, SignValue,userId', outParamType:'bool', clsid:xtxasyn.xtx_clsid},\r\n ];\r\n\r\n for (var i = 0; i < export_functions.length; i++) {\r\n getImplmentFunction(export_functions[i]);\r\n xtxasyn[export_functions[i].funcName] = window[export_functions[i].funcName];\r\n if (export_functions[i].aliasName) {\r\n window[export_functions[i].aliasName] = window[export_functions[i].funcName];\r\n xtxasyn[export_functions[i].aliasName] = window[export_functions[i].funcName];\r\n }\r\n \r\n }\r\n\r\n return true;\r\n}\r\n\r\n// eslint-disable-next-line no-undef\r\nreturn initXTXAppObject(xtxasyn);\r\n})();\r\n\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n////////////////////////////////////// EXPORT VAR AND FUNCTIONS ///////////////////////////////////////////\r\n///////////////////////////////////////////////////////////////////////////////////////////////////////////\r\n// const var\r\nvar CERT_TYPE_HARD = 1;\r\nvar CERT_TYPE_SOFT = 2;\r\nvar CERT_TYPE_ALL = 3;\r\n\r\n// set auto logout parameters\r\nfunction SetAutoLogoutParameter(strCertID, logoutFunc) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setAutoLogoutParameter(strCertID, logoutFunc);\r\n}\r\n\r\n// set user cert list id\r\nfunction SetUserCertList(strListID, certType) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setUserCertList(strListID, certType);\r\n}\r\n\r\n// set custom usbkeychange callback\r\nfunction SetOnUsbKeyChangeCallBack(callback) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setOnUsbKeyChangeCallBack(callback);\r\n}\r\n\r\n// set custom alert function\r\nfunction SetAlertFunction(custom_alert) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.setErrorReportFunc(custom_alert);\r\n}\r\n\r\n// get custom userlogin token \r\nfunction GetLoginToken() {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.custom.getToken();\r\n}\r\n\r\nfunction SetLoginToken(tokenData) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.custom.setToken(tokenData);\r\n}\r\n\r\nfunction GetUserListByType(strType, cb, ctx) { // strType is 'HARD' or 'SOFT'\r\n // eslint-disable-next-line no-undef\r\n SOF_GetUserList(function(retObj) {\r\n var strUserList = retObj.retVal;\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n var i = strUserList.indexOf(\"&&&\");\r\n if (i <= 0 ) {\r\n break;\r\n }\r\n var strOneUser = strUserList.substring(0, i);\r\n var strName = strOneUser.substring(0, strOneUser.indexOf(\"||\"));\r\n var strCertID = strOneUser.substring(strOneUser.indexOf(\"||\") + 2, strOneUser.length);\r\n GetDeviceType(strCertID, function(retObj) {\r\n if (retObj.retVal == retObj.ctx.ctx.type) {\r\n if (typeof retObj.ctx.ctx.cb == 'function') {\r\n retObj.ctx.ctx.cb({retVal:retObj.ctx.userList, ctx:retObj.ctx.ctx.ctx})\r\n }\r\n }\r\n }, {userList:strOneUser, ctx:retObj.ctx});\r\n var len = strUserList.length;\r\n strUserList = strUserList.substring(i + 3, len);\r\n }\r\n }, {type:strType, cb:cb, ctx:ctx});\r\n}\r\n\r\n//get usbKey user list\r\nfunction GetUserList_USBKey(cb, ctx) {\r\n return GetUserListByType(\"HARD\", cb, ctx);\r\n}\r\n\r\n//get soft user list\r\nfunction GetUserList_Soft() {\r\n // eslint-disable-next-line no-undef\r\n return GetUserListByType(\"SOFT\", cb, ctx);\r\n}\r\n\r\n//sign data with pkcs7 format\r\nfunction SignByP7(strCertID, strInData, bDetach) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.SOF_SignMessage(bDetach ? 1 : 0, strCertID, strInData);\r\n}\r\n\r\n//get symmitric key length \r\n//because xtx and secxv2 secx default symmitric alg is no equal\r\nfunction GetSymKeyLength() {\r\n return 24; \r\n}\r\n\r\n//get device type return SOFT or HARD\r\nfunction GetDeviceType(strCertID) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.GetDeviceInfo(strCertID, 7); \r\n}\r\n\r\n// calculate file's hash\r\nfunction HashFile(strFilePath) {\r\n // eslint-disable-next-line no-undef\r\n return xtxasyn.SOF_HashFile(2/*sha1*/, strFilePath);\r\n}\r\n\r\nfunction ParseDateString(strDate) {\r\n var strYear = strDate.substring(0, 4);\r\n var strMonth = strDate.substring(4, 6);\r\n var strDay = strDate.substring(6, 8);\r\n var strHour = strDate.substring(8, 10);\r\n var strMin = strDate.substring(10, 12);\r\n var strSecond = strDate.substring(12, 14);\r\n var RtnDate = new Date();\r\n RtnDate.setFullYear(Number(strYear), Number(strMonth) - 1, Number(strDay));\r\n RtnDate.setHours(Number(strHour));\r\n RtnDate.setMinutes(Number(strMin));\r\n RtnDate.setSeconds(Number(strSecond));\r\n return RtnDate;\r\n}\r\n\r\nfunction __loginSignRandomCallBack(retObj) {\r\n if (retObj.retVal == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"客户端签名失败!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n var objForm = retObj.ctx.objForm;\r\n objForm.UserSignedData.value = retObj.retVal;\r\n // eslint-disable-next-line no-undef\r\n objForm.LoginToken.value = xtxasyn.custom.getToken();\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(true);\r\n } else {\r\n objForm.action = retObj.ctx.action;\r\n objForm.submit();\r\n }\r\n}\r\n\r\nfunction __loginVerifyServerSignatureCallBack(retObj) {\r\n if (!retObj.retVal) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"验证服务器端信息失败!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n \r\n var strCertID = retObj.ctx.certID;\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_SignData(strCertID, strServerRan, __loginSignRandomCallBack, retObj.ctx);\r\n}\r\nfunction __loginCheckCertValidNotAfter(retObj) {\r\n var notAfterDate = ParseDateString(retObj.retVal);\r\n var milliseconds = notAfterDate.getTime() - new Date().getTime();\r\n if (milliseconds < 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书已过期,请尽快到北京数字证书认证中心办理证书更新手续!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n days = parseInt(milliseconds / (1000*60*60*24));\r\n // eslint-disable-next-line no-undef\r\n if (days > 0 && days <= 60) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书还有\" + days + \"天过期\\n请您尽快到北京数字证书认证中心办理证书更新手续!\");\r\n // eslint-disable-next-line no-undef\r\n } else if (days == 0) { // 证书有效期天数小于1天\r\n var hours = parseInt(milliseconds / (1000*60*60));\r\n if (hours > 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书还有\" + hours + \"小时过期\\n请您尽快到北京数字证书认证中心办理证书更新手续!\");\r\n }\r\n // 证书有效期小于1小时\r\n var minutes = parseInt(milliseconds / (1000*60));\r\n if (minutes > 1) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书还有\" + minutes + \"分钟过期\\n请您尽快到北京数字证书认证中心办理证书更新手续!\");\r\n } else {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书已过期,请尽快到北京数字证书认证中心办理证书更新手续!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_VerifySignedData(strServerCert, strServerRan, strServerSignedData, \r\n __loginVerifyServerSignatureCallBack, retObj.ctx);\r\n}\r\n\r\nfunction __loginCheckCertValidNotBefore(retObj) {\r\n var notBeforeDate = ParseDateString(retObj.retVal);\r\n var days = parseInt((notBeforeDate.getTime() - new Date().getTime()) / (1000*60*60*24));\r\n if (days > 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书尚未生效!距离生效日期还剩\" + days + \"天!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n var strUserCert = retObj.ctx.objForm.UserCert.value;\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_GetCertInfo(strUserCert, 12, __loginCheckCertValidNotAfter, retObj.ctx);\r\n}\r\n\r\nfunction __loginGetSignCertCallBack(retObj) {\r\n var strUserCert = retObj.retVal;\r\n if (strUserCert == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"导出用户证书失败!\");\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb(false);\r\n }\r\n return;\r\n }\r\n retObj.ctx.objForm.UserCert.value = strUserCert;\r\n \r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_GetCertInfo(strUserCert, 11, __loginCheckCertValidNotBefore, retObj.ctx);\r\n}\r\n\r\nfunction __loginGetPINRetryCallBack(retObj) {\r\n var retryCount = Number(retObj.retVal);\r\n if (retryCount > 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"校验证书密码失败!您还有\" + retryCount + \"次机会重试!\");\r\n } else if (retryCount == 0) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"您的证书密码已被锁死,请联系BJCA进行解锁!\");\r\n } else {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"登录失败!\");\r\n }\r\n if (typeof retObj.ctx.cb === 'function') {\r\n retObj.ctx.cb();\r\n }\r\n}\r\n\r\nfunction __loginVerifyPINCallBack(retObj) {\r\n var strCertID = retObj.ctx.certID;\r\n var objForm = retObj.ctx.objForm;\r\n if (!retObj.retVal) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_GetPinRetryCount(strCertID, __loginGetPINRetryCallBack, retObj.ctx);\r\n return;\r\n }\r\n objForm.CertID.value = strCertID;\r\n objForm.ContainerName.value = strCertID; \r\n \r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_ExportUserCert(strCertID, __loginGetSignCertCallBack, retObj.ctx);\r\n}\r\n\r\n//Form login\r\nfunction Login(formName, strCertID, strPin, strAction, custom_cb) {\r\n var objForm = eval(formName);\r\n if (objForm == null) {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"表单错误!\");\r\n if (typeof(custom_cb) === 'function') {\r\n custom_cb(false);\r\n }\r\n return;\r\n }\r\n if (strCertID == null || strCertID == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"请输入证书密码!\");\r\n if (typeof(custom_cb) === 'function') {\r\n custom_cb(false);\r\n }\r\n return;\r\n }\r\n if (strPin == null || strPin == \"\") {\r\n // eslint-disable-next-line no-undef\r\n xtxasyn.custom.errorReportFunc(\"请输入证书密码!\");\r\n if (typeof(custom_cb) === 'function') {\r\n custom_cb(false);\r\n }\r\n return;\r\n }\r\n\r\n //Add a hidden item ...\r\n if (objForm.UserSignedData == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"UserSignedData\\\" value=\\\"\\\">\");\r\n }\r\n if (objForm.UserCert == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"UserCert\\\" value=\\\"\\\">\");\r\n }\r\n if (objForm.CertID == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"CertID\\\" value=\\\"\\\">\");\r\n }\r\n if (objForm.ContainerName == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"ContainerName\\\" value=\\\"\\\">\");\r\n } \r\n if (objForm.LoginToken == null) {\r\n objForm.insertAdjacentHTML(\"BeforeEnd\", \"<input type=\\\"hidden\\\" name=\\\"LoginToken\\\" value=\\\"\\\">\");\r\n }\r\n\r\n var ctx = {certID:strCertID, objForm:objForm, action:strAction, cb:custom_cb};\r\n \r\n // eslint-disable-next-line no-undef\r\n xtxasyn.SOF_Login(strCertID, strPin, __loginVerifyPINCallBack, ctx);\r\n\r\n return;\r\n}\r\n","/*******************************************************\r\n*\r\n* 使用此JS脚本之前请先仔细阅读帮助文档!\r\n*\r\n* @author Fuly\r\n* @version 3.2.3\r\n* @date 2020/12/23\r\n*\r\n**********************************************************/\r\n\r\n\r\n\r\nvar split;\r\n\r\n// Avoid running twice; that would break the `nativeSplit` reference\r\n// eslint-disable-next-line no-unused-vars\r\nsplit = split || function (undef) {\r\n\r\n var nativeSplit = String.prototype.split,\r\n compliantExecNpcg = /()??/.exec(\"\")[1] === undef, // NPCG: nonparticipating capturing group\r\n self;\r\n\r\n self = function (str, separator, limit) {\r\n // If `separator` is not a regex, use `nativeSplit`\r\n if (Object.prototype.toString.call(separator) !== \"[object RegExp]\") {\r\n return nativeSplit.call(str, separator, limit);\r\n }\r\n var output = [],\r\n flags = (separator.ignoreCase ? \"i\" : \"\") +\r\n (separator.multiline ? \"m\" : \"\") +\r\n (separator.extended ? \"x\" : \"\") + // Proposed for ES6\r\n (separator.sticky ? \"y\" : \"\"), // Firefox 3+\r\n lastLastIndex = 0,\r\n // Make `global` and avoid `lastIndex` issues by working with a copy\r\n // eslint-disable-next-line no-redeclare\r\n separator = new RegExp(separator.source, flags + \"g\"),\r\n separator2, match, lastIndex, lastLength;\r\n str += \"\"; // Type-convert\r\n if (!compliantExecNpcg) {\r\n // Doesn't need flags gy, but they don't hurt\r\n separator2 = new RegExp(\"^\" + separator.source + \"$(?!\\\\s)\", flags);\r\n }\r\n /* Values for `limit`, per the spec:\r\n * If undefined: 4294967295 // Math.pow(2, 32) - 1\r\n * If 0, Infinity, or NaN: 0\r\n * If positive number: limit = Math.floor(limit); if (limit > 4294967295) limit -= 4294967296;\r\n * If negative number: 4294967296 - Math.floor(Math.abs(limit))\r\n * If other: Type-convert, then use the above rules\r\n */\r\n limit = limit === undef ?\r\n -1 >>> 0 : // Math.pow(2, 32) - 1\r\n limit >>> 0; // ToUint32(limit)\r\n // eslint-disable-next-line no-cond-assign\r\n while (match = separator.exec(str)) {\r\n // `separator.lastIndex` is not reliable cross-browser\r\n lastIndex = match.index + match[0].length;\r\n if (lastIndex > lastLastIndex) {\r\n output.push(str.slice(lastLastIndex, match.index));\r\n // Fix browsers whose `exec` methods don't consistently return `undefined` for\r\n // nonparticipating capturing groups\r\n if (!compliantExecNpcg && match.length > 1) {\r\n match[0].replace(separator2, function () {\r\n for (var i = 1; i < arguments.length - 2; i++) {\r\n if (arguments[i] === undef) {\r\n match[i] = undef;\r\n }\r\n }\r\n });\r\n }\r\n if (match.length > 1 && match.index < str.length) {\r\n Array.prototype.push.apply(output, match.slice(1));\r\n }\r\n lastLength = match[0].length;\r\n lastLastIndex = lastIndex;\r\n if (output.length >= limit) {\r\n break;\r\n }\r\n }\r\n if (separator.lastIndex === match.index) {\r\n separator.lastIndex++; // Avoid an infinite loop\r\n }\r\n }\r\n if (lastLastIndex === str.length) {\r\n if (lastLength || !separator.test(\"\")) {\r\n output.push(\"\");\r\n }\r\n } else {\r\n output.push(str.slice(lastLastIndex));\r\n }\r\n return output.length > limit ? output.slice(0, limit) : output;\r\n };\r\n\r\n // For convenience\r\n String.prototype.split = function (separator, limit) {\r\n return self(this, separator, limit);\r\n };\r\n\r\n return self;\r\n\r\n}();\r\n\r\n\r\nexport function mToken (obj) {\r\n this.obj = obj;\r\n\r\n this.SAR_OK = 0;\r\n this.SAR_FALSE = 1;\r\n\r\n //分组加密算法标识\r\n this.SGD_SM1_ECB = 0x00000101;\r\n this.SGD_SM1_CBC = 0x00000102;\r\n this.SGD_SM1_CFB = 0x00000104;\r\n this.SGD_SM1_OFB = 0x00000108;\r\n this.SGD_SM1_MAC = 0x00000110;\r\n this.SGD_SSF33_ECB = 0x00000201;\r\n this.SGD_SSF33_CBC = 0x00000202;\r\n this.SGD_SSF33_CFB = 0x00000204;\r\n this.SGD_SSF33_OFB = 0x00000208;\r\n this.SGD_SSF33_MAC = 0x00000210;\r\n this.SGD_SM4_ECB = 0x00000401;\r\n this.SGD_SM4_CBC = 0x00000402;\r\n this.SGD_SM4_CFB = 0x00000404;\r\n this.SGD_SM4_OFB = 0x00000408;\r\n this.SGD_SM4_MAC = 0x00000410;\r\n\r\n this.SGD_VENDOR_DEFINED = 0x80000000;\r\n this.SGD_DES_ECB = this.SGD_VENDOR_DEFINED + 0x00000211\r\n this.SGD_DES_CBC = this.SGD_VENDOR_DEFINED + 0x00000212\r\n\r\n this.SGD_3DES168_ECB = this.SGD_VENDOR_DEFINED + 0x00000241\r\n this.SGD_3DES168_CBC = this.SGD_VENDOR_DEFINED + 0x00000242\r\n\r\n this.SGD_3DES112_ECB = this.SGD_VENDOR_DEFINED + 0x00000221\r\n this.SGD_3DES112_CBC = this.SGD_VENDOR_DEFINED + 0x00000222\r\n\r\n this.SGD_AES128_ECB = this.SGD_VENDOR_DEFINED + 0x00000111\r\n this.SGD_AES128_CBC = this.SGD_VENDOR_DEFINED + 0x00000112\r\n\r\n this.SGD_AES192_ECB = this.SGD_VENDOR_DEFINED + 0x00000121\r\n this.SGD_AES192_CBC = this.SGD_VENDOR_DEFINED + 0x00000122\r\n\r\n this.SGD_AES256_ECB = this.SGD_VENDOR_DEFINED + 0x00000141\r\n this.SGD_AES256_CBC = this.SGD_VENDOR_DEFINED + 0x00000142\r\n\r\n\r\n //非对称密码算法标识\r\n this.SGD_RSA = 0x00010000;\r\n this.SGD_SM2_1 = 0x00020100; //ECC签名\r\n this.SGD_SM2_2 = 0x00020200; //ECC密钥交换\r\n this.SGD_SM2_3 = 0x00020400; //ECC加密\r\n\r\n //密码杂凑算法标识\r\n this.SGD_SM3 = 0x00000001;\r\n this.SGD_SHA1 = 0x00000002;\r\n this.SGD_SHA256 = 0x00000004;\r\n this.SGD_RAW = 0x00000080;\r\n this.SGD_MD5 = 0x00000081;\r\n this.SGD_SHA384 = 0x00000082;\r\n this.SGD_SHA512 = 0x00000083;\r\n\r\n\r\n this.SGD_CERT_VERSION = 0x00000001;\r\n this.SGD_CERT_SERIAL = 0x00000002;\r\n this.SGD_CERT_ISSUE = 0x00000005;\r\n this.SGD_CERT_VALID_TIME = 0x00000006;\r\n this.SGD_CERT_SUBJECT = 0x00000007;\r\n this.SGD_CERT_DER_PUBLIC_KEY = 0x00000008;\r\n this.SGD_CERT_DER_EXTENSIONS = 0x00000009;\r\n this.SGD_CERT_NOT_BEFORE = 0x00000010;\r\n this.SGD_CERT_ISSUER_CN = 0x00000021;\r\n this.SGD_CERT_ISSUER_O = 0x00000022;\r\n this.SGD_CERT_ISSUER_OU = 0x00000023;\r\n this.SGD_CERT_ISSUER_C = 0x00000024;\r\n this.SGD_CERT_ISSUER_P = 0x00000025;\r\n this.SGD_CERT_ISSUER_L = 0x00000026;\r\n this.SGD_CERT_ISSUER_S = 0x00000027;\r\n this.SGD_CERT_ISSUER_EMAIL = 0x00000028;\r\n\r\n this.SGD_CERT_SUBJECT_CN = 0x00000031;\r\n this.SGD_CERT_SUBJECT_O = 0x00000032;\r\n this.SGD_CERT_SUBJECT_OU = 0x00000033;\r\n this.SGD_CERT_SUBJECT_EMALL = 0x00000034;\r\n this.SGD_REMAIN_TIME = 0x00000035;\r\n this.SGD_SIGNATURE_ALG = 0x00000036;\r\n this.SGD_CERT_SUBJECT_C = 0x00000037;\r\n this.SGD_CERT_SUBJECT_P = 0x00000038;\r\n this.SGD_CERT_SUBJECT_L = 0x00000039;\r\n this.SGD_CERT_SUBJECT_S = 0x0000003A;\r\n\r\n this.SGD_CERT_CRL = 0x00000041;\r\n\r\n\r\n this.SGD_DEVICE_SORT = 0x00000201;\r\n this.SGD_DEVICE_TYPE = 0x00000202;\r\n this.SGD_DEVICE_NAME = 0x00000203;\r\n this.SGD_DEVICE_MANUFACTURER = 0x00000204;\r\n this.SGD_DEVICE_HARDWARE_VERSION = 0x00000205;\r\n this.SGD_DEVICE_SOFTWARE_VERSION = 0x00000206;\r\n this.SGD_DEVICE_STANDARD_VERSION = 0x00000207;\r\n this.SGD_DEVICE_SERIAL_NUMBER = 0x00000208;\r\n this.SGD_DEVICE_SUPPORT_SYM_ALG = 0x00000209;\r\n this.SGD_DEVICE_SUPPORT_ASYM_ALG = 0x0000020A;\r\n this.SGD_DEVICE_SUPPORT_HASH_ALG = 0x0000020B;\r\n this.SGD_DEVICE_SUPPORT_STORANGE_SPACE = 0x0000020C;\r\n this.SGD_DEVICE_SUPPORT_FREE_SAPCE = 0x0000020D;\r\n this.SGD_DEVICE_RUNTIME = 0x0000020E;\r\n this.SGD_DEVICE_USED_TIMES = 0x0000020F;\r\n this.SGD_DEVICE_LOCATION = 0x00000210;\r\n this.SGD_DEVICE_DESCRIPTION = 0x00000211;\r\n this.SGD_DEVICE_MANAGER_INFO = 0x00000212;\r\n this.SGD_DEVICE_MAX_DATA_SIZE = 0x00000213;\r\n\r\n this.TRUE = 1;\r\n this.FALSE = 0;\r\n\r\n this.GM3000 = 1;\r\n this.K5 = 3;\r\n this.TF = 4;\r\n this.HT = 5;\r\n this.SJK1137 = 2;\r\n\r\n this.TYPE_UKEY = 1; //普通UKEY\r\n this.TYPE_FPKEY = 2; //指纹UKEY\r\n\r\n var g_mTokenPlugin = null;\r\n\r\n\r\n this.SOF_GetLastError = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetLastError();\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n function isIe () {\r\n return (\"ActiveXObject\" in window);\r\n }\r\n\r\n function isMobile () {\r\n var browser = {\r\n versions: function () {\r\n // eslint-disable-next-line no-unused-vars\r\n var u = navigator.userAgent, app = navigator.appVersion;\r\n return {//移动终端浏览器版本信息\r\n trident: u.indexOf('Trident') > -1, //IE内核\r\n presto: u.indexOf('Presto') > -1, //opera内核\r\n webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核\r\n gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核\r\n mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端\r\n ios: !!u.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端\r\n android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器\r\n iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器\r\n iPad: u.indexOf('iPad') > -1, //是否iPad\r\n webApp: u.indexOf('Safari') == -1\r\n //是否web应该程序,没有头部与底部\r\n };\r\n }(),\r\n language: (navigator.browserLanguage || navigator.language).toLowerCase()\r\n }\r\n\r\n if ((browser.versions.mobile) && (browser.versions.ios || browser.versions.android || browser.versions.iPhone || browser.versions.iPad)) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n this.SOF_LoadLibrary = function (type) {\r\n os = check_os();\r\n var ret;\r\n if (g_mTokenPlugin == null) {\r\n g_mTokenPlugin = new mTokenPlugin();\r\n }\r\n\r\n if (type == this.GM3000) {\r\n if (isMobile()) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"1\", \"mToken OTG\", \"com.longmai.security.plugin.driver.otg.OTGDriver\");\r\n }\r\n else {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"mtoken_gm3000_hnca.dll\", \"libgm3000.1.0.so\", \"libgm3000.1.0.dylib\");\r\n }\r\n }\r\n else if (type == this.SJK1137) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"SKF_APP.dll\", \"libhunca_hsic_skf.so\", \"libhunca_hsic_skf.dylib\");\r\n }\r\n else if (type == this.HT) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"HUNCA_HT_20522_SKF.dll\", \"libhunca_ht_h2070f63_skf.so\", \"libhunca_ht_h2070f63_skf.dylib\");\r\n }\r\n else if (type == this.K5) {\r\n if (isMobile()) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"2\", \"mToken K5 Bluetooth\", \"com.longmai.security.plugin.driver.ble.BLEDriver\");\r\n }\r\n else {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"mtoken_k5.dll\", \"libgm3000.1.0.so\", \"libk5.1.0.dylib\");\r\n }\r\n }\r\n else if (type == this.TF) {\r\n if (isMobile()) {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"0\", \"mToken TF/SD Card\", \"com.longmai.security.plugin.driver.tf.TFDriver\");\r\n } else {\r\n ret = g_mTokenPlugin.SOF_LoadLibrary(\"mtoken_tf.dll\", \"libgm3000.1.0.so\", \"libtf.dylib\");\r\n }\r\n }\r\n else {\r\n return -1;\r\n }\r\n\r\n if (ret != 0) {\r\n return -2;\r\n }\r\n return this.SAR_OK;\r\n };\r\n\r\n\r\n this.SOF_EnumDevice = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n var array = g_mTokenPlugin.SOF_EnumDevice();\r\n if (array == null || array.length <= 0) {\r\n return null;\r\n }\r\n\r\n return array.split(\"||\");\r\n\r\n };\r\n\r\n\r\n this.SOF_GetVersion = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetVersion();\r\n };\r\n\r\n\r\n this.SOF_GetDeviceInstance = function (DeviceName, ApplicationName) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetDeviceInstance(DeviceName, ApplicationName);\r\n };\r\n\r\n this.SOF_ReleaseDeviceInstance = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ReleaseDeviceInstance()\r\n }\r\n\r\n\r\n this.SOF_GetUserList = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n var array = g_mTokenPlugin.SOF_GetUserList();\r\n if (array == null || array.length <= 0)\r\n return null;\r\n\r\n var list = new Array();\r\n var user = array.split(\"&&&\");\r\n var length = user.length;\r\n for (var i = 0; i < length; i++) {\r\n list[i] = user[i].split(\"||\");\r\n }\r\n\r\n return list;\r\n };\r\n\r\n\r\n this.SOF_ExportUserCert = function (ContainerName, KeySpec) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ExportUserCert(ContainerName, KeySpec);\r\n };\r\n\r\n\r\n this.SOF_GetDeviceInfo = function (Type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetDeviceInfo(Type);\r\n };\r\n\r\n\r\n this.SOF_GetCertInfo = function (Base64EncodeCert, Type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetCertInfo(Base64EncodeCert, Type);\r\n };\r\n\r\n this.SOF_GetCertInfoByOid = function (Base64EncodeCert, OID) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetCertInfoByOid(Base64EncodeCert, OID);\r\n }\r\n\r\n this.SOF_Login = function (PassWd) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_Login(PassWd);\r\n };\r\n\r\n\r\n this.SOF_LogOut = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_LogOut();\r\n };\r\n\r\n\r\n this.SOF_GetPinRetryCount = function () {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetPinRetryCount();\r\n };\r\n\r\n\r\n this.SOF_ChangePassWd = function (OldPassWd, NewPassWd) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ChangePassWd(OldPassWd, NewPassWd);\r\n };\r\n\r\n\r\n this.SOF_SetDigestMethod = function (DigestMethod) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SetDigestMethod(DigestMethod);\r\n };\r\n\r\n\r\n this.SOF_SetUserID = function (UserID) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SetUserID(UserID);\r\n };\r\n\r\n\r\n this.SOF_SetEncryptMethodAndIV = function (EncryptMethod, EncryptIV) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SetEncryptMethodAndIV(EncryptMethod, EncryptIV);\r\n };\r\n\r\n\r\n this.SOF_EncryptFileToPKCS7 = function (Cert, InFile, OutFile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EncryptFileToPKCS7(Cert, InFile, OutFile, type);\r\n };\r\n\r\n\r\n this.SOF_SignFileToPKCS7 = function (ContainerName, InFile, OutFile) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignFileToPKCS7(ContainerName, InFile, OutFile);\r\n };\r\n\r\n this.SOF_VerifyFileToPKCS7 = function (strPkcs7Data, InFilePath) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyFileToPKCS7(strPkcs7Data, InFilePath);\r\n };\r\n\r\n this.SOF_DecryptFileToPKCS7 = function (ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DecryptFileToPKCS7(ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type);\r\n };\r\n\r\n this.SOF_DigestData = function (ContainerName, nData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DigestData(ContainerName, nData, InDataLen);\r\n };\r\n\r\n this.SOF_SignData = function (ContainerName, ulKeySpec, InData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignData(ContainerName, ulKeySpec, InData, InDataLen);\r\n };\r\n //交互式签名\r\n this.SOF_SignDataInteractive = function (ContainerName, ulKeySpec, InData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignDataInteractive(ContainerName, ulKeySpec, InData, InDataLen);\r\n }\r\n\r\n\r\n this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignDataToPKCS7(ContainerName, ulKeySpec, InData, ulDetached);\r\n };\r\n\r\n\r\n\r\n this.SOF_VerifyDataToPKCS7 = function (Base64EncodeCert, InData, SignedValue) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyDataToPKCS7(Base64EncodeCert, InData, SignedValue);\r\n };\r\n\r\n\r\n this.SOF_VerifySignedData = function (Base64EncodeCert, digestMethod, InData, SignedValue) {\r\n if (g_mTokenPlugin == null) {\r\n return -1;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifySignedData(Base64EncodeCert, digestMethod, InData, SignedValue);\r\n };\r\n\r\n\r\n this.SOF_EncryptDataPKCS7 = function (Base64EncodeCert, InData, InDataLen) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EncryptDataPKCS7(Base64EncodeCert, InData, InDataLen);\r\n };\r\n\r\n\r\n this.SOF_DecryptDataPKCS7 = function (ContainerName, ulKeySpec, InData) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DecryptDataPKCS7(ContainerName, ulKeySpec, InData);\r\n };\r\n\r\n\r\n this.SOF_GenRemoteUnblockRequest = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenRemoteUnblockRequest();\r\n };\r\n\r\n\r\n this.SOF_GenResetpwdResponse = function (request, soPin, userPin) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenResetpwdResponse(request, soPin, userPin);\r\n };\r\n\r\n\r\n this.SOF_RemoteUnblockPIN = function (request) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_RemoteUnblockPIN(request);\r\n };\r\n\r\n\r\n this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignDataToPKCS7(ContainerName, ulKeySpec, InData, ulDetached);\r\n };\r\n\r\n\r\n this.SOF_VerifyDataToPKCS7 = function (strPkcs7Data, OriginalText, ulDetached) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyDataToPKCS7(strPkcs7Data, OriginalText, ulDetached);\r\n };\r\n\r\n //按expType导出的公钥,格式为国密规范指定的格式或DER格式\r\n this.SOF_ExportPubKey = function (containerName, cerType, expType) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ExportPubKey(containerName, cerType, expType);\r\n }\r\n\r\n this.SOF_EncryptByPubKey = function (strPubKey, strInput, cerType) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EncryptByPubKey(strPubKey, strInput, cerType);\r\n }\r\n\r\n this.SOF_DecryptByPrvKey = function (containerName, cerType, strAsymCipher) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DecryptByPrvKey(containerName, cerType, strAsymCipher);\r\n }\r\n\r\n //RA客户端相关接口:P10及证书导入等\r\n this.SOF_GenerateP10Request = function (deviceName, container, dn, asymAlg, keySpec, keyLength) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenerateP10Request(deviceName, container, dn, asymAlg, keySpec, keyLength);\r\n }\r\n\r\n this.SOF_EnumCertContiner = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_EnumCertContiner();\r\n }\r\n\r\n this.SOF_FindContainer = function (certSN) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_FindContainer(certSN);\r\n }\r\n\r\n this.SOF_DeleteCert = function (certSN) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DeleteCert(certSN);\r\n }\r\n\r\n this.SOF_DeleteContainer = function (certSN) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_DeleteContainer(certSN);\r\n }\r\n\r\n this.SOF_SignByCert = function (certSN, plain) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SignByCert(certSN, plain);\r\n }\r\n\r\n this.SOF_VerifyByCert = function (certSN, plain, signature) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyByCert(certSN, plain, signature);\r\n }\r\n\r\n\r\n this.SOF_ImportCert = function (container, cert, keySpec) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ImportCert(container, cert, keySpec);\r\n }\r\n\r\n this.SOF_ImportCryptoCertAndKey = function (container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_ImportCryptoCertAndKey(container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode);\r\n }\r\n\r\n this.SOF_VerifyByExtCert = function (cert, plain, signature, digestMethod) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyByExtCert(cert, plain, signature, digestMethod);\r\n }\r\n\r\n this.SOF_GenerateRandom = function (length) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenerateRandom(length);\r\n }\r\n\r\n this.SOF_SymEncryptFile = function (sessionKey, srcfile, destfile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymEncryptFile(sessionKey, srcfile, destfile, type);\r\n }\r\n\r\n this.SOF_SymDecryptFile = function (sessionKey, srcfile, destfile, type) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymDecryptFile(sessionKey, srcfile, destfile, type);\r\n }\r\n\r\n this.SOF_SymEncryptData = function (sessionKey, inData) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymEncryptData(sessionKey, inData);\r\n }\r\n\r\n this.SOF_SymDecryptData = function (sessionKey, inData) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_SymDecryptData(sessionKey, inData);\r\n }\r\n\r\n this.SOF_GenerateQRCode = function (qrcode_text) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GenerateQRCode(qrcode_text);\r\n }\r\n\r\n\r\n this.SOF_VerifyPinMS = function (responseKey) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyPinMS(responseKey);\r\n }\r\n\r\n this.SOF_GetHardwareType = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_GetHardwareType();\r\n }\r\n\r\n this.SOF_VerifyFingerprint = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n return g_mTokenPlugin.SOF_VerifyFingerprint();\r\n }\r\n\r\n\r\n this.SOF_EnumFiles = function () {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n\r\n var array = g_mTokenPlugin.SOF_EnumFiles();\r\n if (array == null || array.length <= 0) {\r\n return null;\r\n }\r\n\r\n return array.split(\"||\");\r\n }\r\n\r\n this.SOF_ReadFile = function (fileName, offset, length) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_ReadFile(fileName, Number(offset), Number(length));\r\n }\r\n\r\n this.SOF_WriteFile = function (fileName, offset, data) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_WriteFile(fileName, offset, data);\r\n }\r\n\r\n this.SOF_CreateFile = function (fileName, length, readRight, writeRight) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_CreateFile(fileName, length, readRight, writeRight);\r\n }\r\n\r\n this.SOF_DeleteFile = function (fileName) {\r\n if (g_mTokenPlugin == null) {\r\n return null;\r\n }\r\n return g_mTokenPlugin.SOF_DeleteFile(fileName);\r\n }\r\n\r\n\r\n}\r\n\r\n//判断插件名称是否存在\r\nfunction hasPlugin (name) {\r\n name = name.toLowerCase();\r\n for (var i = 0; i < navigator.plugins.length; i++) {\r\n if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n//判断系统\r\nfunction check_os () {\r\n var windows = (navigator.userAgent.indexOf(\"Windows\", 0) != -1) ? 1 : 0;\r\n // eslint-disable-next-line no-unused-vars\r\n var mac = (navigator.userAgent.indexOf(\"mac\", 0) != -1) ? 1 : 0;\r\n var linux = (navigator.userAgent.indexOf(\"Linux\", 0) != -1) ? 1 : 0;\r\n // eslint-disable-next-line no-unused-vars\r\n var unix = (navigator.userAgent.indexOf(\"X11\", 0) != -1) ? 1 : 0;\r\n var os_type = \"\";\r\n if (windows) os_type = \"MS Windows\";\r\n // eslint-disable-next-line no-unused-vars\r\n else if (linux) os_type = \"Lunix\";\r\n if (hasPlugin(\"mPlugin1.0.0.1\")) {\r\n linuxWin = 2;\r\n return \"id_mPluginV2Router\";\r\n } else {\r\n linuxWin = 1;\r\n return \"mTokenPlugin\";\r\n }\r\n\r\n\r\n}\r\nvar linuxWin = 0;\r\nvar os;\r\n\r\nfunction mTokenPlugin () {\r\n var _xmlhttp;\r\n var retJSON = \"\";\r\n\r\n function AjaxIO (json_in) {\r\n //id_mPluginV2Router mTokenPlugin\r\n if (os == \"id_mPluginV2Router\") {\r\n var router = null;\r\n //var url = \"http://192.168.1.25:51235/alpha\";\r\n var url = \"http://127.0.0.1:51235/alpha\";\r\n\r\n router = document.getElementById(\"id_mPluginV2Router\");\r\n if (null == router) {\r\n alert(\"无法获取到插件,请确认已经安装好插件!\");\r\n }\r\n /*\r\n if(\"https:\" == document.location.protocol)\r\n {\r\n url = \"https://127.0.0.1:51245/alpha\";\r\n }\r\n */\r\n var json = json_in;\r\n\r\n retJSON = router.invoke(url, json);\r\n return retJSON;\r\n } else {\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n var _curDevName = \"\";\r\n var _url = \"http://127.0.0.1:51235/alpha\";\r\n let json = json_in;\r\n if (_xmlhttp == null) {\r\n if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari\r\n _xmlhttp = new XMLHttpRequest();\r\n } else { // code for IE6, IE5\r\n // eslint-disable-next-line no-undef\r\n _xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");\r\n }\r\n }\r\n\r\n /***\r\n if (\"https:\" == document.location.protocol) {\r\n _url = \"https://127.0.0.1:51245/alpha\";\r\n }\r\n ***/\r\n _xmlhttp.open(\"POST\", _url, false);\r\n _xmlhttp.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\r\n _xmlhttp.send(\"json=\" + json);\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n function GetHttpResult () {\r\n if (_xmlhttp.readyState == 4 && _xmlhttp.status == 200) {\r\n var obj = eval(\"(\" + _xmlhttp.responseText + \")\");\r\n return obj;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_GetLastError = function () {\r\n var json = '{\"function\":\"SOF_GetLastError\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.errorCode;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_LoadLibrary = function (windows, linux, mac) {\r\n var json = '{\"function\":\"SOF_LoadLibrary\", \"winDllName\":\"' + windows + '\", \"linuxSOName\":\"' + linux + '\", \"macDylibName\":\"' + mac + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_EnumDevice = function () {\r\n var json = '{\"function\":\"SOF_EnumDevice\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.array;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GetVersion = function () {\r\n var json = '{\"function\":\"SOF_GetVersion\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.version;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.version;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n var _curDevName;\r\n this.SOF_GetDeviceInstance = function (DeviceName, ApplicationName) {\r\n var json = '{\"function\":\"SOF_GetDeviceInstance\", \"deviceName\":\"' + DeviceName + '\", \"applicationName\":\"' + ApplicationName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n _curDevName = DeviceName;\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n if (ret.rtn == 0) {\r\n _curDevName = DeviceName;\r\n }\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n this.SOF_ReleaseDeviceInstance = function () {\r\n var json = '{\"function\":\"SOF_ReleaseDeviceInstance\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n this.SOF_GetUserList = function () {\r\n var json = '{\"function\":\"SOF_GetUserList\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.array;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_ExportUserCert = function (ContainerName, KeySpec) {\r\n\r\n var json = '{\"function\":\"SOF_ExportUserCert\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + KeySpec + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.cert;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.cert;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GetDeviceInfo = function (Type) {\r\n var json = '{\"function\":\"SOF_GetDeviceInfo\", \"deviceName\":\"' + _curDevName + '\", \"type\":' + Type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.info;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.info;\r\n }\r\n\r\n return -2;\r\n }\r\n\r\n };\r\n\r\n\r\n this.SOF_GetCertInfo = function (Base64EncodeCert, Type) {\r\n var json = '{\"function\":\"SOF_GetCertInfo\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"type\":' + Type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.info;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.info;\r\n }\r\n\r\n return -2;\r\n }\r\n\r\n };\r\n\r\n\r\n this.SOF_GetCertInfoByOid = function (Base64EncodeCert, OID) {\r\n var json = '{\"function\":\"SOF_GetCertInfoByOid\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"oid\":\"' + OID + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.info;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.info;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n };\r\n\r\n\r\n\r\n this.SOF_Login = function (PassWd) {\r\n\r\n var json = '{\"function\":\"SOF_Login\", \"deviceName\":\"' + _curDevName + '\", \"passWd\":\"' + PassWd + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_LogOut = function () {\r\n\r\n var json = '{\"function\":\"SOF_LogOut\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GetPinRetryCount = function () {\r\n\r\n var json = '{\"function\":\"SOF_GetPinRetryCount\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.retryCount;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.retryCount;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_ChangePassWd = function (OldPassWd, NewPassWd) {\r\n\r\n var json = '{\"function\":\"SOF_ChangePassWd\", \"deviceName\":\"' + _curDevName + '\", \"oldUpin\":\"' + OldPassWd + '\", \"newUpin\":\"' + NewPassWd + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SetDigestMethod = function (DigestMethod) {\r\n\r\n var json = '{\"function\":\"SOF_SetDigestMethod\",\"deviceName\":\"' + _curDevName + '\", \"digestMethod\":' + DigestMethod + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SetUserID = function (UserID) {\r\n\r\n var json = '{\"function\":\"SOF_SetUserID\",\"deviceName\":\"' + _curDevName + '\", \"userID\":\"' + UserID + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SetEncryptMethodAndIV = function (EncryptMethod, EncryptIV) {\r\n\r\n var json = '{\"function\":\"SOF_SetEncryptMethodAndIV\",\"deviceName\":\"' + _curDevName + '\", \"encryptMethod\":' + EncryptMethod + ', \"encryptIV\":\"' + EncryptIV + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_EncryptFileToPKCS7 = function (Cert, InFile, OutFile, type) {\r\n\r\n var json = '{\"function\":\"SOF_EncryptFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"cert\":\"' + Cert + '\", \"inFile\":\"' + InFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + OutFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.envelopData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.envelopData;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SignFileToPKCS7 = function (ContainerName, KeySpec, InFile) {\r\n\r\n var json = '{\"function\":\"SOF_SignFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"KeySpec\":' + KeySpec + ', \"inFile\":\"' + InFile.replace(/\\\\/g, '\\\\\\\\') + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_VerifyFileToPKCS7 = function (strPkcs7Data, InFilePath) {\r\n var json = '{\"function\":\"SOF_VerifyFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\",\"strPkcs7Data\":\"' + strPkcs7Data + '\", \"inFile\":\"' + InFilePath.replace(/\\\\/g, '\\\\\\\\') + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_DecryptFileToPKCS7 = function (ContainerName, keySpec, Pkcs7Data, InFile, OutFile, type) {\r\n\r\n var json = '{\"function\":\"SOF_DecryptFileToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + keySpec + ', \"pkcs7Data\":\"' + Pkcs7Data + '\", \"inFile\":\"' + InFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + OutFile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_DigestData = function (ContainerName, InData, InDataLen) {\r\n\r\n var json = '{\"function\":\"SOF_DigestData\",\"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"inData\":\"' + InData + '\", \"inDataLen\":' + InDataLen + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.digest;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.digest;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n //交互式签名\r\n this.SOF_SignDataInteractive = function (ContainerName, ulKeySpec, inData, InDataLen) {\r\n var InDataBase64 = inData; //对报文进行Base64编码\r\n var json = '{\"function\":\"SOF_SignDataInteractive\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InDataBase64 + '\", \"inDataLen\":' + InDataLen + '}';\r\n\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return null;\r\n }\r\n };\r\n\r\n this.SOF_SignData = function (ContainerName, ulKeySpec, InData, InDataLen) {\r\n\r\n var json = '{\"function\":\"SOF_SignDataEx\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InData + '\", \"inDataLen\":' + InDataLen + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_VerifySignedData = function (Base64EncodeCert, digestMethod, InData, SignedValue) {\r\n var json = '{\"function\":\"SOF_VerifySignedDataEx\",\"deviceName\":\"' + _curDevName + '\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"digestMethod\":' + digestMethod + ', \"inData\":\"' + InData + '\", \"signedValue\":\"' + SignedValue + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_EncryptDataPKCS7 = function (Base64EncodeCert, InData, InDataLen) {\r\n\r\n var json = '{\"function\":\"SOF_EncryptDataPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"base64EncodeCert\":\"' + Base64EncodeCert + '\", \"inData\":\"' + InData + '\", \"inDataLen\":' + InDataLen + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.encrypedData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.encrypedData;\r\n }\r\n\r\n return -2;\r\n }\r\n\r\n };\r\n\r\n\r\n this.SOF_DecryptDataPKCS7 = function (ContainerName, ulKeySpec, InData) {\r\n\r\n var json = '{\"function\":\"SOF_DecryptDataPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InData + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.decryptedData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.decryptedData;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GenRemoteUnblockRequest = function () {\r\n\r\n var json = '{\"function\":\"SOF_GenRemoteUnblockRequest\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.request;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.request;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_GenResetpwdResponse = function (request, soPin, userPin) {\r\n\r\n var json = '{\"function\":\"SOF_GenResetpwdResponse\", \"deviceName\":\"' + _curDevName + '\", \"request\":\"' + request + '\", \"soPin\":\"' + soPin + '\", \"userPin\":\"' + userPin + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.request;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.request;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_RemoteUnblockPIN = function (request) {\r\n\r\n var json = '{\"function\":\"SOF_RemoteUnblockPIN\", \"deviceName\":\"' + _curDevName + '\", \"request\":\"' + request + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_SignDataToPKCS7 = function (ContainerName, ulKeySpec, InData, ulDetached) {\r\n\r\n var json = '{\"function\":\"SOF_SignDataToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + ContainerName + '\", \"keySpec\":' + ulKeySpec + ', \"inData\":\"' + InData + '\", \"detached\":' + ulDetached + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.pkcs7;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.pkcs7;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n\r\n this.SOF_VerifyDataToPKCS7 = function (strPkcs7Data, OriginalText, ulDetached) {\r\n\r\n var json = '{\"function\":\"SOF_VerifyDataToPKCS7\", \"deviceName\":\"' + _curDevName + '\", \"pkcs7\":\"' + strPkcs7Data + '\", \"original\":\"' + OriginalText + '\", \"detached\":' + ulDetached + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n };\r\n\r\n //按expType导出的公钥,格式为国密规范指定的格式或DER格式或裸数据格式\r\n this.SOF_ExportPubKey = function (containerName, keySpec, expType) //expType=1: 国密格式; 2:DER; 3:RAW (SM2 public key ONLY: X|Y, X,Y各为32字节)\r\n {\r\n var json = '{\"function\":\"SOF_ExportPubKeyEx\",\"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + containerName + '\", \"keySpec\":' + keySpec + ', \"expType\":' + expType + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.pubKey;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.pubKey;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n //公钥加密\r\n this.SOF_EncryptByPubKey = function (strPubKey, strInput, cerType) {\r\n var json = '{\"function\":\"SOF_EncryptByPubKey\", \"deviceName\":\"' + _curDevName + '\", \"pubKey\":\"' + strPubKey + '\", \"asymPlain\":\"' + strInput + '\", \"keySpec\":' + cerType + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.asymCipher;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.asymCipher;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n //私钥解密\r\n this.SOF_DecryptByPrvKey = function (containerName, cerType, strAsymCipher) {\r\n var json = '{\"function\":\"SOF_DecryptByPrvKey\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + containerName + '\", \"asymCipher\":\"' + strAsymCipher + '\", \"keySpec\":' + cerType + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.asymPlain;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.asymPlain;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n //RA客户端控件\r\n this.SOF_CreateKeyPair = function (container, keySpec, asymAlg, keyLength) {\r\n var json = '{\"function\":\"SOF_CreateKeyPair\",\"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"asymAlg\":' + asymAlg + ', \"keySpec\":' + keySpec + ',\"keyLength\":' + keyLength + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_EnumCertContiner = function () {\r\n var json = '{\"function\":\"SOF_EnumCertContiner\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.containerName;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.containerName;\r\n }\r\n\r\n return \"\";\r\n }\r\n }\r\n\r\n this.SOF_FindContainer = function (certSN) {\r\n var json = '{\"function\":\"SOF_FindContainer\",\"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.containerName;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.containerName;\r\n }\r\n\r\n return \"\";\r\n }\r\n }\r\n\r\n this.SOF_DeleteCert = function (certSN) {\r\n var json = '{\"function\":\"SOF_DeleteCert\",\"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_DeleteContainer = function (certSN) {\r\n var json = '{\"function\":\"SOF_DeleteContainer\", \"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SignByCert = function (certSN, plain) {\r\n var json = '{\"function\":\"SOF_SignByCert\", \"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\", \"inData\":\"' + plain + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.signed;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.signed;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_VerifyByCert = function (certSN, plain, signature, digestMethod) {\r\n\r\n var json = '{\"function\":\"SOF_VerifyByCert\", \"deviceName\":\"' + _curDevName + '\", \"certSN\":\"' + certSN + '\",\"digestMethod\":' + digestMethod + ', \"inData\":\"' + plain + '\", \"signed\":\"' + signature + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_VerifyByExtCert = function (cert, plain, signature, digestMethod) {\r\n var json = '{\"function\":\"SOF_VerifyByExtCert\",\"deviceName\":\"' + _curDevName + '\", \"cert\":\"' + cert + '\", \"digestMethod\":' + digestMethod + ', \"inData\":\"' + plain + '\", \"signed\":\"' + signature + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n // this.SOF_GenerateP10Request = function (container, dn, asymAlg, keySpec, keyLength) {\r\n // var json = '{\"function\":\"SOF_GenerateP10Request\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"certDN\":\"' + dn + '\", \"asymAlg\":' + asymAlg + ', \"keySpec\":' + keySpec + ',\"keyLength\":' + keyLength + '}';\r\n // if (linuxWin == 2) {\r\n // var retJSON = \"\";\r\n // try {\r\n // retJSON = AjaxIO(json);\r\n // } catch (e) {\r\n // return -3;\r\n // }\r\n //\r\n //\r\n // if (retJSON.length > 3) {\r\n // var obj = eval(\"(\" + retJSON + \")\");\r\n // return obj.outData;\r\n // } else {\r\n // return -2;\r\n //\r\n // }\r\n // } else {\r\n // try {\r\n // AjaxIO(json);\r\n // }\r\n // catch (e) {\r\n // return -3;\r\n // }\r\n //\r\n // var ret = GetHttpResult();\r\n // if (ret) {\r\n // return ret.outData;\r\n // }\r\n //\r\n // return null;\r\n // }\r\n // }\r\n this.SOF_GenerateP10Request = function (_curDevName, container, dn, asymAlg, keySpec, keyLength) {\r\n var json = '{\"function\":\"SOF_GenerateP10Request\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"certDN\":\"' + dn + '\", \"asymAlg\":' + asymAlg + ', \"keySpec\":' + keySpec + ',\"keyLength\":' + keyLength + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n this.SOF_ImportCert = function (container, cert, keySpec) {\r\n var json = '{\"function\":\"SOF_ImportCert\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"cert\":\"' + cert + '\", \"keySpec\":' + keySpec + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_ImportCryptoCertAndKey = function (container, cert, nAsymAlg, EncryptedSessionKeyData, symAlg, EncryptedPrivateKeyData, mode) {\r\n var json = '{\"function\":\"SOF_ImportCryptoCertAndKey\", \"deviceName\":\"' + _curDevName + '\", \"containerName\":\"' + container + '\", \"cert\":\"' + cert + '\", \"asymAlg\":' + nAsymAlg + ', \"sessionKey\":\"' + EncryptedSessionKeyData + '\", \"symAlg\":\"' + symAlg + '\", \"encrypedData\":\"' + EncryptedPrivateKeyData + ', + \"mode\":' + mode + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_GenerateRandom = function (length) {\r\n var json = '{\"function\":\"SOF_GenRandom\", \"deviceName\":\"' + _curDevName + '\", \"inDataLen\":' + length + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SymEncryptFile = function (sessionKey, srcfile, destfile, type) {\r\n var json = '{\"function\":\"SOF_SymEncryptFile\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inFile\":\"' + srcfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + destfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SymDecryptFile = function (sessionKey, srcfile, destfile, type) {\r\n var json = '{\"function\":\"SOF_SymDecryptFile\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inFile\":\"' + srcfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"outFile\":\"' + destfile.replace(/\\\\/g, '\\\\\\\\') + '\", \"type\":' + type + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_SymEncryptData = function (sessionKey, inData) {\r\n var json = '{\"function\":\"SOF_SymEncryptData\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inData\":\"' + inData + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_SymDecryptData = function (sessionKey, inData) {\r\n var json = '{\"function\":\"SOF_SymDecryptData\", \"deviceName\":\"' + _curDevName + '\", \"sessionKey\":\"' + sessionKey + '\", \"inData\":\"' + inData + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n /////////////////////////////////////////////////////////////////\r\n this.SOF_GenerateQRCode = function (qrcode_text_in) {\r\n var qrcode_text = qrcode_text_in.replace(/\"/g, '\\\\\"');\r\n var json = '{\"module\":\"libQR\",\"function\":\"SOF_GenerateQRCode\", \"inData\":\"' + qrcode_text + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n\r\n this.SOF_VerifyPinMS = function (responseKey) {\r\n var json = '{\"function\":\"SOF_VerifyPinMS\", \"deviceName\":\"' + _curDevName + '\", \"passWd\":\"' + responseKey + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n /////////////////////////////////////////////////////////////////\r\n this.SOF_GetHardwareType = function () {\r\n var json = '{\"function\":\"SOF_GetHardwareType\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.type;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.type;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_VerifyFingerprint = function () {\r\n var json = '{\"function\":\"SOF_VerifyFingerprint\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_EnumFiles = function () {\r\n var json = '{\"function\":\"SOF_EnumFiles\", \"deviceName\":\"' + _curDevName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.array;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.array;\r\n }\r\n\r\n return -2;\r\n }\r\n }\r\n\r\n this.SOF_ReadFile = function (fileName, offset, length) {\r\n var json = '{\"function\":\"SOF_ReadFile\", \"deviceName\":\"' + _curDevName + '\", \"fileName\":\"' + fileName + '\", \"offset\":' + offset + ',\"length\":' + length + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.outData;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.outData;\r\n }\r\n }\r\n }\r\n\r\n this.SOF_WriteFile = function (fileName, offset, data) {\r\n var json = '{\"function\":\"SOF_WriteFile\", \"deviceName\":\"' + _curDevName + '\", \"fileName\":\"' + fileName + '\", \"offset\":' + offset + ',\"inData\":\"' + data + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SOF_CreateFile = function (fileName, length, readRight, writeRight) {\r\n var json = '{\"function\":\"SOF_CreateFile\", \"deviceName\":\"' + _curDevName + '\",\"fileName\":\"' + fileName + '\", \"length\" :' + length + ', \"readRight\":' + readRight + ',\"writeRight\":' + writeRight + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SOF_DeleteFile = function (fileName) {\r\n var json = '{\"function\":\"SOF_DeleteFile\", \"deviceName\":\"' + _curDevName + '\",\"fileName\":\"' + fileName + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n //Socket API\r\n this.SocketConnect = function (HostName, Port) {\r\n var json = '{\"module\":\"libSocket\",\"function\":\"SocketConnect\", \"HostName\":\"' + HostName + '\", \"Port\":' + Port + '}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SocketDisConnect = function () {\r\n var json = '{\"module\":\"libSocket\",\"function\":\"SocketDisConnect\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.rtn;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.rtn;\r\n }\r\n }\r\n }\r\n\r\n this.SocketSendText = function (SendText) {\r\n var json = '{\"module\":\"libSocket\",\"function\":\"SocketSendText\", \"SendText\":\"' + SendText + '\"}';\r\n if (linuxWin == 2) {\r\n var retJSON = \"\";\r\n try {\r\n retJSON = AjaxIO(json);\r\n } catch (e) {\r\n return -3;\r\n }\r\n\r\n\r\n if (retJSON.length > 3) {\r\n var obj = eval(\"(\" + retJSON + \")\");\r\n return obj.RecvText;\r\n } else {\r\n return -2;\r\n\r\n }\r\n } else {\r\n try {\r\n AjaxIO(json);\r\n }\r\n catch (e) {\r\n return -3;\r\n }\r\n\r\n var ret = GetHttpResult();\r\n if (ret) {\r\n return ret.RecvText;\r\n }\r\n }\r\n }\r\n}\r\n","var map = {\n\t\"./admin.jpg\": 6296,\n\t\"./personal.jpg\": 1865,\n\t\"./personal1.jpg\": 456,\n\t\"./personal2.jpg\": 6964\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 7021;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","/* eslint-disable no-var */\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var currentScript = window.document.currentScript\n if (process.env.NEED_CURRENTSCRIPT_POLYFILL) {\n var getCurrentScript = require('@soda/get-current-script')\n currentScript = getCurrentScript()\n\n // for backward compatibility, because previously we directly included the polyfill\n if (!('currentScript' in document)) {\n Object.defineProperty(document, 'currentScript', { get: getCurrentScript })\n }\n }\n\n var src = currentScript && currentScript.src.match(/(.+\\/)[^/]+\\.js(\\?.*)?$/)\n if (src) {\n __webpack_public_path__ = src[1] // eslint-disable-line\n }\n}\n\n// Indicate to webpack that this file can be concatenated\nexport default null\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('el-dialog',{attrs:{\"title\":_vm.title,\"visible\":_vm.isShow,\"width\":\"350px\",\"append-to-body\":true},on:{\"close\":_vm.handleClose}},[_c('slide-verify',{ref:\"slideblock\",attrs:{\"l\":42,\"r\":10,\"w\":310,\"h\":155,\"imgs\":_vm.imgs,\"accuracy\":_vm.accuracy,\"slider-text\":_vm.sliderText},on:{\"success\":_vm.onSuccess,\"fail\":_vm.onFail,\"again\":_vm.onAgain,\"refresh\":_vm.onRefresh,\"fulfilled\":_vm.onFulfilled}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"slide-verify\",style:({ width: _vm.w + 'px' }),attrs:{\"id\":\"slideVerify\",\"onselectstart\":\"return false;\"}},[_c('div',{class:{ 'slider-verify-loading': _vm.loadBlock }}),_c('canvas',{ref:\"canvas\",attrs:{\"width\":_vm.w,\"height\":_vm.h}}),(_vm.show)?_c('div',{staticClass:\"slide-verify-refresh-icon\",on:{\"click\":_vm.refresh}}):_vm._e(),_c('canvas',{ref:\"block\",staticClass:\"slide-verify-block\",attrs:{\"width\":_vm.w,\"height\":_vm.h}}),_c('div',{staticClass:\"slide-verify-slider\",class:{\n 'container-active': _vm.containerActive,\n 'container-success': _vm.containerSuccess,\n 'container-fail': _vm.containerFail\n }},[_c('div',{staticClass:\"slide-verify-slider-mask\",style:({ width: _vm.sliderMaskWidth })},[_c('div',{staticClass:\"slide-verify-slider-mask-item\",style:({ left: _vm.sliderLeft }),on:{\"mousedown\":_vm.sliderDown,\"touchstart\":_vm.touchStartEvent,\"touchmove\":function($event){return _vm.handleMoveEvent($event, 'touch')},\"touchend\":function($event){return _vm.handleMoveEndEvent($event, 'touch')}}},[_c('div',{staticClass:\"slide-verify-slider-mask-item-icon\"})])]),_c('span',{staticClass:\"slide-verify-slider-text\"},[_vm._v(_vm._s(_vm.sliderText))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n class=\"slide-verify\"\n :style=\"{ width: w + 'px' }\"\n id=\"slideVerify\"\n onselectstart=\"return false;\"\n >\n <!-- 图片加载遮蔽罩 -->\n <div :class=\"{ 'slider-verify-loading': loadBlock }\"></div>\n <canvas :width=\"w\" :height=\"h\" ref=\"canvas\"></canvas>\n <div v-if=\"show\" @click=\"refresh\" class=\"slide-verify-refresh-icon\"></div>\n <canvas\n :width=\"w\"\n :height=\"h\"\n ref=\"block\"\n class=\"slide-verify-block\"\n ></canvas>\n <!-- container -->\n <div\n class=\"slide-verify-slider\"\n :class=\"{\n 'container-active': containerActive,\n 'container-success': containerSuccess,\n 'container-fail': containerFail\n }\"\n >\n <div class=\"slide-verify-slider-mask\" :style=\"{ width: sliderMaskWidth }\">\n <!-- slider -->\n <div\n @mousedown=\"sliderDown\"\n @touchstart=\"touchStartEvent\"\n @touchmove=\"handleMoveEvent($event, 'touch')\"\n @touchend=\"handleMoveEndEvent($event, 'touch')\"\n class=\"slide-verify-slider-mask-item\"\n :style=\"{ left: sliderLeft }\"\n >\n <div class=\"slide-verify-slider-mask-item-icon\"></div>\n </div>\n </div>\n <span class=\"slide-verify-slider-text\">{{ sliderText }}</span>\n </div>\n </div>\n</template>\n<script>\nconst PI = Math.PI;\n\nfunction sum(x, y) {\n return x + y;\n}\n\nfunction square(x) {\n return x * x;\n}\nexport default {\n name: \"SlideVerify\",\n props: {\n // block length\n l: {\n type: Number,\n default: 42\n },\n // block radius\n r: {\n type: Number,\n default: 10\n },\n // canvas width\n w: {\n type: Number,\n default: 310\n },\n // canvas height\n h: {\n type: Number,\n default: 155\n },\n sliderText: {\n type: String,\n default: \"Slide filled right\"\n },\n accuracy: {\n type: Number,\n default: 5 // 若为 -1 则不进行机器判断\n },\n show: {\n type: Boolean,\n default: true\n },\n imgs: {\n type: Array,\n default: () => []\n }\n },\n data() {\n return {\n containerActive: false, // container active class\n containerSuccess: false, // container success class\n containerFail: false, // container fail class\n canvasCtx: null,\n blockCtx: null,\n block: null,\n block_x: undefined, // container random position\n block_y: undefined,\n L: this.l + this.r * 2 + 3, // block real length\n img: undefined,\n originX: undefined,\n originY: undefined,\n isMouseDown: false,\n trail: [],\n sliderLeft: 0, // block right offset\n sliderMaskWidth: 0, // mask width,\n success: false, // Bug Fixes 修复了验证成功后还能滑动\n loadBlock: true, // Features 图片加载提示,防止图片没加载完就开始验证\n timestamp: null\n };\n },\n mounted() {\n this.init();\n },\n methods: {\n init() {\n this.initDom();\n this.initImg();\n this.bindEvents();\n },\n initDom() {\n this.block = this.$refs.block;\n this.canvasCtx = this.$refs.canvas.getContext(\"2d\");\n this.blockCtx = this.block.getContext(\"2d\");\n },\n initImg() {\n const img = this.createImg(() => {\n // 图片加载完关闭遮蔽罩\n this.loadBlock = false;\n this.drawBlock();\n this.canvasCtx.drawImage(img, 0, 0, this.w, this.h);\n this.blockCtx.drawImage(img, 0, 0, this.w, this.h);\n let { block_x: x, block_y: y, r, L } = this;\n let _y = y - r * 2 - 1;\n let ImageData = this.blockCtx.getImageData(x, _y, L, L);\n this.block.width = L;\n this.blockCtx.putImageData(ImageData, 0, _y);\n });\n this.img = img;\n },\n drawBlock() {\n this.block_x = this.getRandomNumberByRange(\n this.L + 10,\n this.w - (this.L + 10)\n );\n this.block_y = this.getRandomNumberByRange(\n 10 + this.r * 2,\n this.h - (this.L + 10)\n );\n this.draw(this.canvasCtx, this.block_x, this.block_y, \"fill\");\n this.draw(this.blockCtx, this.block_x, this.block_y, \"clip\");\n },\n draw(ctx, x, y, operation) {\n let { l, r } = this;\n ctx.beginPath();\n ctx.moveTo(x, y);\n ctx.arc(x + l / 2, y - r + 2, r, 0.72 * PI, 2.26 * PI);\n ctx.lineTo(x + l, y);\n ctx.arc(x + l + r - 2, y + l / 2, r, 1.21 * PI, 2.78 * PI);\n ctx.lineTo(x + l, y + l);\n ctx.lineTo(x, y + l);\n ctx.arc(x + r - 2, y + l / 2, r + 0.4, 2.76 * PI, 1.24 * PI, true);\n ctx.lineTo(x, y);\n ctx.lineWidth = 2;\n ctx.fillStyle = \"rgba(255, 255, 255, 0.7)\";\n ctx.strokeStyle = \"rgba(255, 255, 255, 0.7)\";\n ctx.stroke();\n ctx[operation]();\n // Bug Fixes 修复了火狐和ie显示问题\n ctx.globalCompositeOperation = \"destination-over\";\n },\n createImg(onload) {\n const img = document.createElement(\"img\");\n img.crossOrigin = \"Anonymous\";\n img.onload = onload;\n img.onerror = () => {\n img.src = this.getRandomImg();\n };\n img.src = this.getRandomImg();\n return img;\n },\n // 随机生成img src\n getRandomImg() {\n // return require('../assets/img.jpg')\n const len = this.imgs.length;\n return len > 0\n ? this.imgs[this.getRandomNumberByRange(0, len - 1)]\n : // \"https://bing.ioliu.cn/v1/rand?w=300&h=150\";\n \"https://source.unsplash.com/300x150/?book,library\";\n // \"https://api.dujin.org/pic/fengjing\";\n },\n getRandomNumberByRange(start, end) {\n return Math.round(Math.random() * (end - start) + start);\n },\n refresh() {\n this.reset();\n this.$emit(\"refresh\");\n },\n sliderDown(event) {\n if (this.success) return;\n this.originX = event.clientX;\n this.originY = event.clientY;\n this.isMouseDown = true;\n this.timestamp = +new Date();\n },\n touchStartEvent(e) {\n if (this.success) return;\n this.originX = e.changedTouches[0].pageX;\n this.originY = e.changedTouches[0].pageY;\n this.isMouseDown = true;\n this.timestamp = +new Date();\n },\n bindEvents() {\n document.addEventListener(\"mousemove\", this.handleMoveEvent);\n document.addEventListener(\"mouseup\", this.handleMoveEndEvent);\n },\n // 处理函数抽离\n handleMoveEvent: throttle(function(e, type = \"mouse\") {\n if (!this.isMouseDown) return false;\n const moveX =\n type === \"mouse\"\n ? e.clientX - this.originX\n : e.changedTouches[0].pageX - this.originX;\n const moveY =\n type === \"mouse\"\n ? e.clientY - this.originY\n : e.changedTouches[0].pageY - this.originY;\n if (moveX < 0 || moveX + 38 >= this.w) return false;\n this.sliderLeft = moveX + \"px\";\n let blockLeft = ((this.w - 40 - 20) / (this.w - 40)) * moveX;\n this.block.style.left = blockLeft + \"px\";\n\n this.containerActive = true; // add active\n this.sliderMaskWidth = moveX + \"px\";\n this.trail.push(moveY);\n }),\n handleMoveEndEvent(e, type = \"mouse\") {\n if (!this.isMouseDown) return false;\n this.isMouseDown = false;\n if (\n (type === \"mouse\" && e.clientX === this.originX) ||\n (type === \"touch\" && e.changedTouches[0].pageX === this.originX)\n )\n return false;\n this.containerActive = false; // remove active\n this.timestamp = +new Date() - this.timestamp;\n\n const { spliced, TuringTest } = this.verify();\n if (spliced) {\n if (this.accuracy === -1) {\n this.containerSuccess = true;\n this.success = true;\n this.$emit(\"success\", this.timestamp);\n return;\n }\n if (TuringTest) {\n // succ\n this.containerSuccess = true;\n this.success = true;\n this.$emit(\"success\", this.timestamp);\n } else {\n this.containerFail = true;\n this.$emit(\"again\");\n }\n } else {\n this.containerFail = true;\n this.$emit(\"fail\");\n setTimeout(() => {\n this.reset();\n }, 1000);\n }\n },\n verify() {\n const arr = this.trail; // drag y move distance\n const average = arr.reduce(sum) / arr.length; // average\n const deviations = arr.map(x => x - average); // deviation array\n const stddev = Math.sqrt(deviations.map(square).reduce(sum) / arr.length); // standard deviation\n const left = parseInt(this.block.style.left);\n const accuracy =\n this.accuracy <= 1 ? 1 : this.accuracy > 10 ? 10 : this.accuracy;\n return {\n spliced: Math.abs(left - this.block_x) <= accuracy,\n TuringTest: average !== stddev // equal => not person operate\n };\n },\n reset() {\n this.success = false;\n this.containerActive = false;\n this.containerSuccess = false;\n this.containerFail = false;\n this.sliderLeft = 0;\n this.block.style.left = 0;\n this.sliderMaskWidth = 0;\n // canvas\n let { w, h } = this;\n this.canvasCtx.clearRect(0, 0, w, h);\n this.blockCtx.clearRect(0, 0, w, h);\n this.block.width = w;\n\n // generate img\n this.img.src = this.getRandomImg();\n this.$emit(\"fulfilled\");\n }\n },\n destroyed() {\n document.removeEventListener(\"mousemove\", this.handleMoveEvent);\n document.removeEventListener(\"mouseup\", this.handleMoveEndEvent);\n }\n};\n\nfunction throttle(\n fn,\n interval = 50,\n options = { leading: true, trailing: true }\n) {\n const { leading, trailing, resultCallback } = options;\n let lastTime = 0;\n let timer = null;\n\n const _throttle = function(...args) {\n return new Promise((resolve, reject) => {\n const nowTime = new Date().getTime();\n if (!lastTime && !leading) lastTime = nowTime;\n\n const remainTime = interval - (nowTime - lastTime);\n if (remainTime <= 0) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n\n const result = fn.apply(this, args);\n if (resultCallback) resultCallback(result);\n resolve(result);\n lastTime = nowTime;\n return;\n }\n\n if (trailing && !timer) {\n timer = setTimeout(() => {\n timer = null;\n lastTime = !leading ? 0 : new Date().getTime();\n const result = fn.apply(this, args);\n if (resultCallback) resultCallback(result);\n resolve(result);\n }, remainTime);\n }\n });\n };\n\n _throttle.cancel = function() {\n if (timer) clearTimeout(timer);\n timer = null;\n lastTime = 0;\n };\n\n return _throttle;\n}\n</script>\n<style scoped>\n.slide-verify {\n position: relative;\n}\n\n/* 图片加载样式 */\n.slider-verify-loading {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n background: rgba(255, 255, 255, 0.9);\n z-index: 999;\n animation: loading 1.5s infinite;\n}\n\n@keyframes loading {\n 0% {\n opacity: 0.7;\n }\n 100% {\n opacity: 9;\n }\n}\n\n.slide-verify-block {\n position: absolute;\n left: 0;\n top: 0;\n}\n\n.slide-verify-refresh-icon {\n position: absolute;\n right: 0;\n top: 0;\n width: 34px;\n height: 34px;\n cursor: pointer;\n background: url(\"../assets/icon_light.png\") 0 -437px;\n background-size: 34px 471px;\n}\n\n.slide-verify-slider {\n position: relative;\n text-align: center;\n width: 100%;\n height: 40px;\n line-height: 40px;\n margin-top: 15px;\n background: #f7f9fa;\n color: #45494c;\n border: 1px solid #e4e7eb;\n}\n\n.slide-verify-slider-mask {\n position: absolute;\n left: 0;\n top: 0;\n height: 40px;\n border: 0 solid #1991fa;\n background: #d1e9fe;\n}\n\n.slide-verify-slider-mask-item {\n position: absolute;\n top: 0;\n left: 0;\n width: 40px;\n height: 40px;\n background: #fff;\n box-shadow: 0 0 3px rgba(0, 0, 0, 0.3);\n cursor: pointer;\n transition: background 0.2s linear;\n}\n\n.slide-verify-slider-mask-item:hover {\n background: #1991fa;\n}\n\n.slide-verify-slider-mask-item:hover .slide-verify-slider-mask-item-icon {\n background-position: 0 -13px;\n}\n\n.slide-verify-slider-mask-item-icon {\n position: absolute;\n top: 15px;\n left: 13px;\n width: 14px;\n height: 12px;\n background: url(\"../assets/icon_light.png\") 0 -26px;\n background-size: 34px 471px;\n}\n.container-active .slide-verify-slider-mask-item {\n height: 38px;\n top: -1px;\n border: 1px solid #1991fa;\n}\n\n.container-active .slide-verify-slider-mask {\n height: 38px;\n border-width: 1px;\n}\n\n.container-success .slide-verify-slider-mask-item {\n height: 38px;\n top: -1px;\n border: 1px solid #52ccba;\n background-color: #52ccba !important;\n}\n\n.container-success .slide-verify-slider-mask {\n height: 38px;\n border: 1px solid #52ccba;\n background-color: #d2f4ef;\n}\n\n.container-success .slide-verify-slider-mask-item-icon {\n background-position: 0 0 !important;\n}\n\n.container-fail .slide-verify-slider-mask-item {\n height: 38px;\n top: -1px;\n border: 1px solid #f57a7a;\n background-color: #f57a7a !important;\n}\n\n.container-fail .slide-verify-slider-mask {\n height: 38px;\n border: 1px solid #f57a7a;\n background-color: #fce1e1;\n}\n\n.container-fail .slide-verify-slider-mask-item-icon {\n top: 14px;\n background-position: 0 -82px !important;\n}\n\n.container-active .slide-verify-slider-text,\n.container-success .slide-verify-slider-text,\n.container-fail .slide-verify-slider-text {\n display: none;\n}\n</style>\n","import mod from \"-!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./slide-verify.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../thread-loader/dist/cjs.js!../../../babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../@vue/vue-loader-v15/lib/index.js??vue-loader-options!./slide-verify.vue?vue&type=script&lang=js&\"","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent(\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */,\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options =\n typeof scriptExports === 'function' ? scriptExports.options : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) {\n // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./slide-verify.vue?vue&type=template&id=b67196d8&scoped=true&\"\nimport script from \"./slide-verify.vue?vue&type=script&lang=js&\"\nexport * from \"./slide-verify.vue?vue&type=script&lang=js&\"\nimport style0 from \"./slide-verify.vue?vue&type=style&index=0&id=b67196d8&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b67196d8\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <el-dialog\r\n :title=\"title\"\r\n :visible=\"isShow\"\r\n width=\"350px\"\r\n :append-to-body=\"true\"\r\n @close=\"handleClose\"\r\n >\r\n <slide-verify\r\n ref=\"slideblock\"\r\n :l=\"42\"\r\n :r=\"10\"\r\n :w=\"310\"\r\n :h=\"155\"\r\n :imgs=\"imgs\"\r\n :accuracy=\"accuracy\"\r\n :slider-text=\"sliderText\"\r\n @success=\"onSuccess\"\r\n @fail=\"onFail\"\r\n @again=\"onAgain\"\r\n @refresh=\"onRefresh\"\r\n @fulfilled=\"onFulfilled\"\r\n ></slide-verify>\r\n </el-dialog>\r\n</template>\r\n\r\n<script>\r\nimport SlideVerify from \"vue-monoplasty-slide-verify/src/lib/slide-verify\"\r\nexport default {\r\n name: \"YcSlideVerify\",\r\n components: {\r\n SlideVerify,\r\n },\r\n props: {\r\n title: {\r\n type: String,\r\n default: \"滑动验证\",\r\n },\r\n isShow: {\r\n type: Boolean,\r\n default: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n accuracy: 5,\r\n sliderText: \"拖动完成上方拼图\",\r\n countDownNum: 120,\r\n }\r\n },\r\n computed: {\r\n imgs() {\r\n const list = []\r\n for (let i = 1; i < 9; i++) {\r\n list.push(`/cloud-img/${i}.jpg`)\r\n }\r\n return list\r\n },\r\n },\r\n watch: {\r\n isShow(newVal) {\r\n // 这里第三方引用,ref没有渲染完成,reset报错,还不能用?号\r\n newVal &&\r\n this.$refs.slideblock &&\r\n this.$refs.slideblock.reset &&\r\n this.$refs.slideblock.reset()\r\n },\r\n },\r\n created() {},\r\n methods: {\r\n onSuccess() {\r\n this.$emit(\"success\")\r\n },\r\n onFail() {},\r\n onAgain() {},\r\n onRefresh() {},\r\n onFulfilled() {},\r\n handleClose() {\r\n this.$emit(\"close\")\r\n },\r\n },\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.el-dialog__wrapper {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n::v-deep .el-dialog {\r\n margin-top: 0 !important;\r\n border-radius: 8px;\r\n}\r\n::v-deep .el-dialog__header {\r\n background-color: #f2f6fc;\r\n border-radius: 8px 8px 0 0;\r\n}\r\n.el-dialog__body {\r\n display: flex;\r\n justify-content: center;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2c1e2525&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=2c1e2525&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c1e2525\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{ref:\"customer\",staticStyle:{\"display\":\"none\"}},[_c('chat-vue',{attrs:{\"visible\":_vm.visible,\"jumpPage\":_vm.jumpPage,\"title\":_vm.title,\"json\":_vm.json,\"regular\":_vm.regular},on:{\"update:visible\":function($event){_vm.visible=$event}}}),_c('div',{staticClass:\"customerService\"},[_c('div',{staticClass:\"mobile\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"headset\",on:{\"click\":function($event){_vm.visible = !_vm.visible}}},[_vm._m(0),_vm._m(1)])])],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('i',{staticClass:\"el-icon-headset\"})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('a',[_vm._v(\"在线客服\")])])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"chat\"},[_c('header',[_c('img',{attrs:{\"src\":require('assets/customerService/admin.jpg')}}),_c('span',[_vm._v(_vm._s(_vm.title))]),(_vm.jumpPage)?_c('i',{staticClass:\"icon-enlarge\",on:{\"click\":_vm.enlarge}},[_c('img',{attrs:{\"src\":require('assets/customerService/enlarge.png')}})]):_vm._e(),_c('i',{staticClass:\"el-icon-close\",on:{\"click\":_vm.close}})]),_c('main',{ref:\"main\"},_vm._l((_vm.messagelist),function(item,index){return _c('div',{key:index,class:['message', item.id]},[_c('img',{staticClass:\"avatar\",attrs:{\"src\":require(`assets/customerService/${item.id}.jpg`)}}),_c('div',{staticClass:\"content\"},[_vm._l((item.msg),function(msg,index){return _c('span',{key:msg + index,class:item.msg.length > 1 ? 'href' : '',domProps:{\"innerHTML\":_vm._s((item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg)},on:{\"click\":function($event){item.msg.length > 1 && _vm.regularClick(msg)}}})}),(item.based)?_c('div',{staticClass:\"based\",on:{\"click\":function($event){return _vm.handExpand(item)}}},[_c('span',[_vm._v(\"依据\")]),_c('span',{class:{ 'is-active': item.isActive }},[_vm._v(_vm._s(item.based)),_c('i',{staticClass:\"el-icon-d-arrow-right\"})])]):_vm._e()],2)])}),0),_c('nav',_vm._l((_vm.regular),function(item,index){return _c('el-button',{key:item + index,attrs:{\"size\":\"mini\",\"round\":\"\"},on:{\"click\":function($event){return _vm.regularClick(item)}}},[_vm._v(_vm._s(item))])}),1),_c('el-input',{attrs:{\"type\":\"textarea\",\"maxlength\":\"500\",\"autosize\":{ minRows: 2, maxRows: 3 },\"autofocus\":\"true\",\"resize\":\"none\",\"placeholder\":\"请反馈您的问题,我们将尽快回复\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.carriageReturn.apply(null, arguments)}},model:{value:(_vm.textareaValue),callback:function ($$v) {_vm.textareaValue=$$v},expression:\"textareaValue\"}}),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"mini\",\"disabled\":!_vm.textareaValue},on:{\"click\":_vm.send}},[_vm._v(\"发送\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\r\n props: {\r\n visible: Boolean,\r\n jumpPage: String,\r\n json: String,\r\n title: String,\r\n commit: String,\r\n regular: Array\r\n },\r\n data() {\r\n return {\r\n textareaValue: \"\",\r\n // regular: ['发票增值税率', '城市维护建设税', '教育费附加征收率'],\r\n messagelist: [\r\n {id: 'admin', msg: ['您好,38号客服很高兴为你服务!'], isActive: false},\r\n // {id: 'personal', msg: ['消费税?']}\r\n ],\r\n isActive: false\r\n }\r\n },\r\n computed: {\r\n questions() {\r\n return JSON.parse(this.json)\r\n }\r\n },\r\n methods: {\r\n close() {\r\n this.$emit(\"update:visible\", false);\r\n },\r\n carriageReturn() {\r\n let e = window.event || arguments[0];\r\n if ((e.key == \"Enter\" || e.code == \"Enter\" || e.keyCode == 13) && this.textareaValue) {\r\n this.send()\r\n }\r\n },\r\n send() {\r\n if(!this.textareaValue.replace(/[^\\w\\u4E00-\\u9FA5]/g, ''))\r\n return\r\n\r\n this.add(this.textareaValue, \"personal\", ()=> {this.textareaValue = ''})\r\n this.search(this.textareaValue)\r\n },\r\n regularClick(msg) {\r\n this.add(msg)\r\n this.search(msg)\r\n },\r\n search(msg) {\r\n const list = this.questions.filter(item => item.faq.replace(/[^\\w\\u4E00-\\u9FA5]/g, '').toLowerCase().includes(msg.replace(/[^\\w\\u4E00-\\u9FA5]/g, '').toLowerCase()))\r\n let [vlaue, based] = ['', '']\r\n \r\n if(list.length > 1) {\r\n vlaue = list.reduce((prev, curr) => [...prev, curr.faq], [])\r\n } else if(list.length == 1) {\r\n [vlaue, based] = [list[0].msg, list[0].based]\r\n } else if([\"您好\",\"你好\"].includes(msg.replace(/[^\\w\\u4E00-\\u9FA5]/g, ''))) {\r\n vlaue = '您好!'\r\n } else {\r\n vlaue = '请提关键词问题?<br/> 比如: 税率<br/><br/><a href=\"tel:4000770168\">客服热线:<span style=\"color: #FF575F;\">400 0770 168</span></a>'\r\n }\r\n this.add(vlaue, 'admin', null, based)\r\n },\r\n add(msg, id=\"personal\", fun, based = \"\") {\r\n this.messagelist.push({\r\n id,\r\n msg: Array.isArray(msg) ? msg : [msg],\r\n based,\r\n isActive: false\r\n })\r\n this.$nextTick(() => {\r\n fun && fun()\r\n // this.$refs.main.scrollTop += 70\r\n this.$refs.main.scrollTop = this.$refs.main.scrollHeight\r\n // console.log(this.$refs.main.scrollTop, this.$refs.main.scrollHeight)\r\n })\r\n },\r\n enlarge() {\r\n // this.$router.resolve({\r\n // name: this.jumpPage\r\n // })\r\n \r\n window.open(this.jumpPage, '_blank')\r\n },\r\n handExpand(item) {\r\n item.isActive = !item.isActive\r\n }\r\n }\r\n}","<template>\r\n <div class=\"chat\" v-show=\"visible\">\r\n <header>\r\n <img :src=\"require('assets/customerService/admin.jpg')\" />\r\n <span>{{ title }}</span>\r\n <i class=\"icon-enlarge\" v-if=\"jumpPage\" @click=\"enlarge\"\r\n ><img :src=\"require('assets/customerService/enlarge.png')\"\r\n /></i>\r\n <i class=\"el-icon-close\" @click=\"close\"></i>\r\n </header>\r\n <main ref=\"main\">\r\n <div\r\n v-for=\"(item, index) in messagelist\"\r\n :key=\"index\"\r\n :class=\"['message', item.id]\"\r\n >\r\n <img\r\n class=\"avatar\"\r\n :src=\"require(`assets/customerService/${item.id}.jpg`)\"\r\n />\r\n <div class=\"content\">\r\n <span\r\n v-for=\"(msg, index) in item.msg\"\r\n :key=\"msg + index\"\r\n v-html=\"(item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg\"\r\n :class=\"item.msg.length > 1 ? 'href' : ''\"\r\n @click=\"item.msg.length > 1 && regularClick(msg)\"\r\n ></span>\r\n <div class=\"based\" v-if=\"item.based\" @click=\"handExpand(item)\">\r\n <span>依据</span\r\n ><span :class=\"{ 'is-active': item.isActive }\"\r\n >{{ item.based }}<i class=\"el-icon-d-arrow-right\"></i\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n </main>\r\n <nav>\r\n <el-button\r\n size=\"mini\"\r\n round\r\n v-for=\"(item, index) in regular\"\r\n :key=\"item + index\"\r\n @click=\"regularClick(item)\"\r\n >{{ item }}</el-button\r\n >\r\n </nav>\r\n <el-input\r\n type=\"textarea\"\r\n maxlength=\"500\"\r\n :autosize=\"{ minRows: 2, maxRows: 3 }\"\r\n autofocus=\"true\"\r\n resize=\"none\"\r\n placeholder=\"请反馈您的问题,我们将尽快回复\"\r\n v-model=\"textareaValue\"\r\n @keyup.enter.native=\"carriageReturn\"\r\n >\r\n </el-input>\r\n <!-- <el-button size=\"mini\" type=\"primary\">发送</el-button> -->\r\n <el-button\r\n type=\"primary\"\r\n size=\"mini\"\r\n :disabled=\"!textareaValue\"\r\n @click=\"send\"\r\n >发送</el-button\r\n >\r\n </div>\r\n</template>\r\n<script>\r\nimport chatMixin from \"./chatMixin\"\r\nexport default {\r\n name: \"ChatMini\",\r\n mixins: [chatMixin],\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.chat {\r\n width: 350px;\r\n height: 480px;\r\n position: fixed;\r\n bottom: 10px;\r\n right: 55px;\r\n z-index: 2001;\r\n background-color: #ffffff;\r\n border-radius: 12px;\r\n border: 1px solid #e6ebf5;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);\r\n overflow: hidden;\r\n > header {\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n background-color: #ff575f;\r\n font-size: 16px;\r\n padding: 10px;\r\n font-weight: 400;\r\n color: #fafdff;\r\n > img {\r\n width: 44px;\r\n height: 44px;\r\n border-radius: 50%;\r\n margin-right: 10px;\r\n transition: all 0.3s linear;\r\n &:focus,\r\n &:hover {\r\n transform: scale(1.2, 1.2) rotate(15deg);\r\n }\r\n }\r\n i {\r\n cursor: pointer;\r\n position: absolute;\r\n top: 5px;\r\n width: 20px;\r\n height: 20px;\r\n border-radius: 6px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n transition: all 0.3s linear;\r\n &:focus,\r\n &:hover {\r\n transform: scale(1.2, 1.2);\r\n background-color: rgba(255, 137, 122, 0.8);\r\n }\r\n &.el-icon-close {\r\n right: 10px;\r\n }\r\n &.icon-enlarge {\r\n right: 35px;\r\n }\r\n > img {\r\n width: 12px;\r\n }\r\n }\r\n }\r\n\r\n > main {\r\n width: 100%;\r\n height: 60%;\r\n overflow-y: auto;\r\n padding-bottom: 20px;\r\n background-color: #f7f7f9;\r\n // 滚动条宽度\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n // 滚动条轨道\r\n &::-webkit-scrollbar-track {\r\n background: rgb(239, 239, 239);\r\n border-radius: 2px;\r\n }\r\n // 小滑块\r\n &::-webkit-scrollbar-thumb {\r\n background: #ff8879;\r\n border-radius: 10px;\r\n }\r\n &::-webkit-scrollbar-thumb:hover {\r\n background: #ff755d;\r\n }\r\n .message {\r\n display: flex;\r\n gap: 15px;\r\n position: relative;\r\n margin: 20px 5px 0px 5px;\r\n opacity: 0;\r\n .avatar {\r\n width: 30px;\r\n height: 30px;\r\n border-radius: 50%;\r\n }\r\n .content {\r\n width: fit-content;\r\n max-width: 250px;\r\n font-weight: 400;\r\n font-size: 12px;\r\n color: #4c4c4d;\r\n line-height: 20px;\r\n padding: 10px;\r\n border-radius: 10px;\r\n background-color: #ffffff;\r\n .href {\r\n cursor: pointer;\r\n display: block;\r\n color: #ff575f;\r\n margin-bottom: 0.5rem;\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n > .based {\r\n cursor: pointer;\r\n color: #909399;\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n border-top: 1px solid #ebebed;\r\n padding-top: 5px;\r\n margin-top: 5px;\r\n gap: 5px;\r\n\r\n & > span:first-child {\r\n white-space: nowrap;\r\n color: #4c4c4d;\r\n border-radius: 10px;\r\n background-color: #eeeef0;\r\n padding: 0px 7px;\r\n }\r\n\r\n & > span:last-child {\r\n width: 100%;\r\n position: relative;\r\n display: inline-block;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n padding-right: 12px;\r\n\r\n .el-icon-d-arrow-right {\r\n position: absolute;\r\n right: 0px;\r\n bottom: 5px;\r\n transform: rotate(90deg);\r\n transition: all 0.35s linear;\r\n }\r\n &.is-active {\r\n overflow: visible;\r\n white-space: normal;\r\n .el-icon-d-arrow-right {\r\n transform: rotate(270deg);\r\n }\r\n }\r\n\r\n &:hover {\r\n color: #ff575f;\r\n }\r\n }\r\n }\r\n }\r\n &.admin {\r\n animation: animation01 0.3s linear 1.5s forwards;\r\n .content::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n left: 37px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #ffffff;\r\n }\r\n }\r\n &.personal {\r\n animation: animation01 0.3s linear 0.3s forwards;\r\n flex-direction: row-reverse;\r\n .content::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n right: 37px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent #ffffff transparent;\r\n }\r\n }\r\n @keyframes animation01 {\r\n 0% {\r\n transform: translateY(20px);\r\n opacity: 0;\r\n }\r\n\r\n 100% {\r\n transform: translateY(0px);\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n > nav {\r\n // overflow-x: auto;\r\n background-color: #f7f7f9;\r\n border-bottom: 1px solid #e7e7ea;\r\n padding: 5px 10px;\r\n display: flex;\r\n .el-button {\r\n font-size: 12px;\r\n font-weight: 400;\r\n color: #4c4c4d;\r\n background-color: #fff !important;\r\n border: 1px solid #e7e7ea;\r\n padding: 5px 8px;\r\n }\r\n }\r\n > .el-textarea {\r\n border-color: transparent;\r\n textarea {\r\n overflow-y: hidden;\r\n padding-right: 65px;\r\n font-weight: 400;\r\n color: #19191a;\r\n font-size: 12px;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n }\r\n textarea,\r\n textarea:focus {\r\n border-color: transparent;\r\n }\r\n }\r\n > .el-button {\r\n position: absolute;\r\n bottom: 10px;\r\n right: 10px;\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./chat.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./chat.vue?vue&type=template&id=755436e0&scoped=true&\"\nimport script from \"./chat.vue?vue&type=script&lang=js&\"\nexport * from \"./chat.vue?vue&type=script&lang=js&\"\nimport style0 from \"./chat.vue?vue&type=style&index=0&id=755436e0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"755436e0\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div ref=\"customer\" style=\"display: none\">\r\n <chat-vue\r\n :visible.sync=\"visible\"\r\n :jumpPage=\"jumpPage\"\r\n :title=\"title\"\r\n :json=\"json\"\r\n :regular=\"regular\"\r\n />\r\n <div class=\"customerService\">\r\n <div class=\"mobile\">\r\n <slot></slot>\r\n <!-- <div><i class=\"el-icon-mobile\"></i></div>\r\n <div>\r\n <span>客服热线</span>\r\n <a href=\"tel:4000770168\">400 0770 168</a>\r\n <template v-if=\"!['/login', '/register'].includes($route.path)\">\r\n <span style=\"margin-top: 10px\">银行服务电话</span>\r\n <a href=\"tel:13973004180\">13973004180(蒋行长)</a>\r\n <a href=\"tel:15773001997\">15773001997(彭经理)</a>\r\n </template>\r\n </div> -->\r\n </div>\r\n <div class=\"headset\" @click=\"visible = !visible\">\r\n <div><i class=\"el-icon-headset\"></i></div>\r\n <div><a>在线客服</a></div>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport chatVue from \"./chat.vue\"\r\nexport default {\r\n name: \"YcCustomerService\",\r\n components: {\r\n chatVue,\r\n },\r\n props: {\r\n jumpPage: String,\r\n title: String,\r\n json: String,\r\n regular: Array,\r\n },\r\n data() {\r\n return {\r\n visible: false,\r\n }\r\n },\r\n computed: {\r\n hasSlot() {\r\n return Boolean(this.$slots.default)\r\n },\r\n },\r\n watch: {\r\n $route(to) {\r\n if (to.path != this.jumpPage) {\r\n this.$refs.customer.style.display = \"block\"\r\n } else {\r\n this.$refs.customer.style.display = \"none\"\r\n }\r\n },\r\n },\r\n mounted() {\r\n this.$refs.customer.style.display = \"block\"\r\n },\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.customerService {\r\n position: fixed;\r\n right: 0px;\r\n bottom: 35px;\r\n z-index: 2001;\r\n > div {\r\n cursor: pointer;\r\n position: absolute;\r\n right: 0px;\r\n display: flex;\r\n align-items: center;\r\n background-color: #ffffff;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);\r\n &:hover {\r\n > div:first-child {\r\n color: #ff4949;\r\n i {\r\n animation-name: animateRotate;\r\n animation-duration: 0.5s;\r\n animation-iteration-count: infinite;\r\n }\r\n }\r\n }\r\n > div:first-child {\r\n width: 50px;\r\n height: 50px;\r\n text-align: center;\r\n line-height: 50px;\r\n font-size: 18px;\r\n }\r\n > div:last-child {\r\n opacity: 0;\r\n // transition: all 0.3s linear;\r\n padding: 10px;\r\n border-radius: 6px;\r\n position: absolute;\r\n min-height: 50px;\r\n display: flex;\r\n flex-direction: column;\r\n // align-items: center;\r\n justify-content: space-around;\r\n background-color: #ffffff;\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);\r\n &::after {\r\n content: \"\";\r\n position: absolute;\r\n top: calc(50% - 10px);\r\n right: -20px;\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #ffffff;\r\n filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.2));\r\n }\r\n a {\r\n color: #333;\r\n font-size: 14px;\r\n display: block;\r\n }\r\n }\r\n }\r\n .mobile {\r\n bottom: 50px;\r\n border-bottom: 1px solid #e6ebf5;\r\n &:hover {\r\n > div:last-child {\r\n left: -210px;\r\n opacity: 1;\r\n animation-name: animateMobile;\r\n animation-duration: 0.5s;\r\n }\r\n }\r\n > div:last-child {\r\n left: -120vw;\r\n width: 190px;\r\n bottom: 0px;\r\n a {\r\n width: fit-content;\r\n position: relative;\r\n margin-top: 5px;\r\n text-indent: 5px;\r\n &:hover {\r\n color: #ff4949;\r\n &::before {\r\n width: 100%;\r\n right: auto;\r\n left: 0px;\r\n }\r\n }\r\n &::before {\r\n content: \"\";\r\n width: 0%;\r\n height: 1px;\r\n opacity: 0.6;\r\n background: #ff4949;\r\n transition: all 0.5s linear;\r\n position: absolute;\r\n right: 0px;\r\n bottom: -2px;\r\n }\r\n }\r\n &::after {\r\n top: calc(100% - 35px);\r\n }\r\n }\r\n @keyframes animateMobile {\r\n 0% {\r\n left: -200vw;\r\n opacity: 0;\r\n }\r\n 0.1% {\r\n left: -310px;\r\n opacity: 0;\r\n }\r\n 100% {\r\n left: -210px;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n .headset {\r\n bottom: 0px;\r\n &:hover {\r\n > div:last-child {\r\n left: -110px;\r\n opacity: 1;\r\n animation-name: animateHeadset;\r\n animation-duration: 0.5s;\r\n }\r\n }\r\n > div:last-child {\r\n left: -120vw;\r\n width: 90px;\r\n }\r\n @keyframes animateHeadset {\r\n 0% {\r\n left: -120vw;\r\n opacity: 0;\r\n }\r\n 0.1% {\r\n left: -210px;\r\n opacity: 0.5;\r\n }\r\n 100% {\r\n left: -110px;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n @keyframes animateRotate {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n 20% {\r\n transform: rotate(7deg);\r\n }\r\n 40% {\r\n transform: rotate(0deg);\r\n }\r\n 80% {\r\n transform: rotate(-7deg);\r\n }\r\n 100% {\r\n transform: rotate(0deg);\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=849349a0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=849349a0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"849349a0\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"YcQuestion\"},[_c('div',{staticClass:\"chatPage\"},[_c('header',{staticStyle:{\"background\":\"url(/cloud-img/customerService/chatTop.png) center\",\"background-size\":\"cover\"}},[_c('div',[_c('h3',[_vm._v(_vm._s(_vm.title))]),_c('span',[_vm._v(\"Problem Help\")])]),_c('p',[_vm._v(\"小优为您提供24小时服务\")])]),_c('div',{staticClass:\"main\"},[_c('div',[_c('main',{ref:\"main\"},[_c('p',[_vm._v(\"今天\"+_vm._s(_vm.currData))]),_vm._l((_vm.messagelist),function(item,index){return _c('div',{key:index,class:['message', item.id]},[_c('img',{staticClass:\"avatar\",attrs:{\"src\":require(`assets/customerService/${item.id}.jpg`)}}),_c('div',{staticClass:\"content\"},[_vm._l((item.msg),function(msg,index){return _c('span',{key:msg + index,class:item.msg.length > 1 ? 'href' : '',domProps:{\"innerHTML\":_vm._s((item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg)},on:{\"click\":function($event){item.msg.length > 1 && _vm.regularClick(msg)}}})}),(item.based)?_c('div',{staticClass:\"based\",on:{\"click\":function($event){$event.preventDefault();return _vm.handExpand(item)}}},[_c('span',[_vm._v(\"依据\")]),_c('span',{class:{ 'is-active': item.isActive }},[_vm._v(_vm._s(item.based)),_c('i',{staticClass:\"el-icon-d-arrow-right\"})])]):_vm._e()],2)])})],2),_c('footer',[_c('el-input',{attrs:{\"type\":\"textarea\",\"maxlength\":\"500\",\"autosize\":{ minRows: 6, maxRows: 6 },\"autofocus\":\"true\",\"resize\":\"none\",\"placeholder\":\"请输入你要咨询的问题\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.carriageReturn.apply(null, arguments)}},model:{value:(_vm.textareaValue),callback:function ($$v) {_vm.textareaValue=$$v},expression:\"textareaValue\"}}),_c('el-button',{style:(!_vm.textareaValue\n ? 'background-color: #F7F7F9;color: #FF575F;border-color: transparent;'\n : ''),attrs:{\"type\":\"primary\",\"disabled\":!_vm.textareaValue},on:{\"click\":_vm.send}},[_vm._v(\"发送\")])],1)]),_c('aside',[_c('el-collapse',{attrs:{\"accordion\":\"\"},model:{value:(_vm.activeNames),callback:function ($$v) {_vm.activeNames=$$v},expression:\"activeNames\"}},_vm._l((_vm.questionsList),function(item,key,index){return _c('el-collapse-item',{key:key,attrs:{\"name\":index}},[_c('template',{slot:\"title\"},[_c('img',{attrs:{\"src\":require(`assets/customerService/ellipticalWenh.png`)}}),_vm._v(_vm._s(key)+\" \")]),_vm._l((item),function(faq){return _c('div',{key:faq,domProps:{\"innerHTML\":_vm._s(faq)},on:{\"click\":function($event){return _vm.regularClick(faq)}}})})],2)}),1)],1)])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div class=\"YcQuestion\">\r\n <div class=\"chatPage\">\r\n <header\r\n style=\"\r\n background: url(/cloud-img/customerService/chatTop.png) center\r\n no-repeat cover;\r\n background-size: cover;\r\n \"\r\n >\r\n <div>\r\n <h3>{{ title }}</h3>\r\n <span>Problem Help</span>\r\n </div>\r\n <p>小优为您提供24小时服务</p>\r\n </header>\r\n <div class=\"main\">\r\n <div>\r\n <main ref=\"main\">\r\n <p>今天{{ currData }}</p>\r\n <div\r\n v-for=\"(item, index) in messagelist\"\r\n :key=\"index\"\r\n :class=\"['message', item.id]\"\r\n >\r\n <img\r\n class=\"avatar\"\r\n :src=\"require(`assets/customerService/${item.id}.jpg`)\"\r\n />\r\n <div class=\"content\">\r\n <span\r\n v-for=\"(msg, index) in item.msg\"\r\n :key=\"msg + index\"\r\n v-html=\"(item.msg.length > 1 ? 1 + index + '. ' : ' ') + msg\"\r\n :class=\"item.msg.length > 1 ? 'href' : ''\"\r\n @click=\"item.msg.length > 1 && regularClick(msg)\"\r\n ></span>\r\n <div\r\n class=\"based\"\r\n v-if=\"item.based\"\r\n @click.prevent=\"handExpand(item)\"\r\n >\r\n <span>依据</span\r\n ><span :class=\"{ 'is-active': item.isActive }\"\r\n >{{ item.based }}<i class=\"el-icon-d-arrow-right\"></i\r\n ></span>\r\n </div>\r\n </div>\r\n </div>\r\n </main>\r\n <footer>\r\n <el-input\r\n type=\"textarea\"\r\n maxlength=\"500\"\r\n :autosize=\"{ minRows: 6, maxRows: 6 }\"\r\n autofocus=\"true\"\r\n resize=\"none\"\r\n placeholder=\"请输入你要咨询的问题\"\r\n v-model=\"textareaValue\"\r\n @keyup.enter.native=\"carriageReturn\"\r\n >\r\n </el-input>\r\n <el-button\r\n type=\"primary\"\r\n :disabled=\"!textareaValue\"\r\n :style=\"\r\n !textareaValue\r\n ? 'background-color: #F7F7F9;color: #FF575F;border-color: transparent;'\r\n : ''\r\n \"\r\n @click=\"send\"\r\n >发送</el-button\r\n >\r\n </footer>\r\n </div>\r\n <aside>\r\n <el-collapse v-model=\"activeNames\" accordion>\r\n <el-collapse-item\r\n v-for=\"(item, key, index) in questionsList\"\r\n :key=\"key\"\r\n :name=\"index\"\r\n >\r\n <template slot=\"title\">\r\n <img\r\n :src=\"require(`assets/customerService/ellipticalWenh.png`)\"\r\n />{{ key }}\r\n </template>\r\n <div\r\n v-for=\"faq in item\"\r\n :key=\"faq\"\r\n v-html=\"faq\"\r\n @click=\"regularClick(faq)\"\r\n ></div>\r\n </el-collapse-item>\r\n </el-collapse>\r\n </aside>\r\n </div>\r\n </div>\r\n </div>\r\n</template>\r\n<script>\r\nimport chatMixin from \"comp/YcCustomerService/chatMixin\"\r\nexport default {\r\n name: \"YcQuestion\",\r\n mixins: [chatMixin],\r\n data() {\r\n return {\r\n activeNames: [1],\r\n }\r\n },\r\n computed: {\r\n currData() {\r\n const currData = new Date()\r\n return `${currData.getHours()}:${currData.getMinutes()}`\r\n },\r\n questionsList() {\r\n return this.questions.reduce((prev, curr) => {\r\n // eslint-disable-next-line no-prototype-builtins\r\n if (prev.hasOwnProperty(curr.type)) {\r\n prev[curr.type].push(curr.faq)\r\n } else {\r\n prev[curr.type] = [curr.faq]\r\n }\r\n return prev\r\n }, {})\r\n },\r\n },\r\n}\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n.YcQuestion {\r\n // min-width: auto;\r\n // overflow: hidden;\r\n // height: 100vh;\r\n ::v-deep .chatPage {\r\n background-color: #ffffff;\r\n\r\n > header {\r\n height: 8vw;\r\n display: flex;\r\n justify-content: flex-start;\r\n align-items: center;\r\n gap: 5vw;\r\n padding-left: 8vw;\r\n // background: url(\"~assets/customerService/chatTop.png\");\r\n // background-position: center center;\r\n // background-repeat: no-repeat;\r\n // background-size: cover;\r\n\r\n > div {\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n\r\n // flex-direction: row-reverse;\r\n h3 {\r\n height: 1vw;\r\n margin-top: 0px;\r\n font-size: 2.125rem;\r\n font-weight: bold;\r\n color: #191a2c;\r\n font-family: Source Han Sans CN-Bold, Source Han Sans CN;\r\n }\r\n\r\n span {\r\n font-size: 1rem;\r\n font-family: LXGW New Clear Gothic-Regular, LXGW New Clear Gothic;\r\n font-weight: 400;\r\n color: #666;\r\n }\r\n }\r\n\r\n p {\r\n font-size: 1rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n color: #2e2f42;\r\n }\r\n }\r\n\r\n .main {\r\n display: flex;\r\n\r\n > div {\r\n width: 74vw;\r\n position: relative;\r\n\r\n > main {\r\n height: 62vh;\r\n overflow-y: auto;\r\n padding-bottom: 2vw;\r\n background-color: #f7f7f9;\r\n\r\n // 滚动条宽度\r\n &::-webkit-scrollbar {\r\n width: 6px;\r\n }\r\n\r\n // 滚动条轨道\r\n &::-webkit-scrollbar-track {\r\n background: rgb(239, 239, 239);\r\n border-radius: 2px;\r\n }\r\n\r\n // 小滑块\r\n &::-webkit-scrollbar-thumb {\r\n background: #ff8879;\r\n border-radius: 10px;\r\n }\r\n\r\n &::-webkit-scrollbar-thumb:hover {\r\n background: #ff755d;\r\n }\r\n\r\n > p {\r\n text-align: center;\r\n font-size: 0.875rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n color: #909399;\r\n }\r\n\r\n .message {\r\n display: flex;\r\n gap: 15px;\r\n margin: 1.5vw 1.5vw 0px 1.5vw;\r\n opacity: 0;\r\n\r\n .avatar {\r\n width: 2.5vw;\r\n height: 2.5vw;\r\n min-width: 35px;\r\n min-height: 35px;\r\n border-radius: 50%;\r\n transition: all 0.3s linear;\r\n &:focus,\r\n &:hover {\r\n transform: scale(1.2, 1.2) rotate(15deg);\r\n }\r\n }\r\n\r\n .content {\r\n width: fit-content;\r\n max-width: 50vw;\r\n font-weight: 400;\r\n font-size: 1rem;\r\n color: #4c4c4d;\r\n padding: 10px;\r\n border-radius: 10px;\r\n position: relative;\r\n background-color: #ffffff;\r\n\r\n .href {\r\n cursor: pointer;\r\n display: block;\r\n color: #ff575f;\r\n margin-bottom: 1.5rem;\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n }\r\n\r\n > .based {\r\n cursor: pointer;\r\n font-size: 1rem;\r\n font-weight: 400;\r\n color: #909399;\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: flex-start;\r\n border-top: 1px solid #ebebed;\r\n padding-top: 0.625rem;\r\n margin-top: 0.625rem;\r\n gap: 0.625rem;\r\n\r\n & > span:first-child {\r\n white-space: nowrap;\r\n color: #4c4c4d;\r\n border-radius: 18px;\r\n background-color: #eeeef0;\r\n padding: 0.1875rem 0.625rem;\r\n margin-top: -0.1875rem;\r\n }\r\n\r\n & > span:last-child {\r\n width: 100%;\r\n position: relative;\r\n display: inline-block;\r\n overflow: hidden;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n padding-right: 12px;\r\n\r\n .el-icon-d-arrow-right {\r\n position: absolute;\r\n right: 0px;\r\n bottom: 0px;\r\n transform: rotate(90deg);\r\n transition: all 0.35s linear;\r\n }\r\n &.is-active {\r\n overflow: visible;\r\n white-space: normal;\r\n .el-icon-d-arrow-right {\r\n transform: rotate(270deg);\r\n }\r\n }\r\n\r\n &:hover {\r\n color: #ff575f;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.admin {\r\n animation: animation01 0.3s linear 1.5s forwards;\r\n\r\n .content {\r\n margin-top: 20px;\r\n\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n left: -10px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #fff;\r\n }\r\n\r\n &::after {\r\n content: \"小优客服【38号为您服务】\";\r\n width: 200px;\r\n font-size: 0.875rem;\r\n font-family: Source Han Sans CN-Medium, Source Han Sans CN;\r\n font-weight: 500;\r\n color: #8b8c8f;\r\n position: absolute;\r\n left: 0px;\r\n top: -20px;\r\n }\r\n }\r\n }\r\n\r\n &.personal {\r\n animation: animation01 0.3s linear 0.3s forwards;\r\n flex-direction: row-reverse;\r\n\r\n .content::after {\r\n content: \"\";\r\n position: absolute;\r\n top: 2px;\r\n right: -10px;\r\n transform: rotate(-45deg);\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent #ffffff transparent;\r\n }\r\n }\r\n\r\n @keyframes animation01 {\r\n 0% {\r\n transform: translateY(20px);\r\n opacity: 0;\r\n }\r\n\r\n 100% {\r\n transform: translateY(0px);\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n }\r\n\r\n footer {\r\n height: 30vh;\r\n border: 1px solid #e7e7ea;\r\n\r\n > .el-textarea {\r\n border-color: transparent;\r\n\r\n textarea {\r\n overflow-y: hidden;\r\n // padding-right: 65px;\r\n font-weight: 400;\r\n color: #19191a;\r\n font-size: 1rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n }\r\n\r\n textarea,\r\n textarea:focus {\r\n border-color: transparent;\r\n }\r\n }\r\n\r\n > .el-button {\r\n float: right;\r\n // position: absolute;\r\n // bottom: 40px;\r\n // right: 40px;\r\n z-index: 1;\r\n font-size: 0.875rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n border-radius: 4px;\r\n margin-right: 2vw;\r\n width: 5vw;\r\n min-width: 92px;\r\n }\r\n }\r\n }\r\n\r\n aside {\r\n width: 26vw;\r\n height: calc(100vh - 8vw);\r\n padding: 1vw;\r\n overflow-y: auto;\r\n background-color: #ffffff;\r\n\r\n .el-collapse-item__header {\r\n color: #373a3c;\r\n font-size: 1.5rem;\r\n font-weight: 500;\r\n font-family: Source Han Sans CN-Medium, Source Han Sans CN;\r\n padding: 2rem;\r\n background-color: #f00;\r\n background: linear-gradient(#ffdad4, #ffa9a3);\r\n\r\n &.is-active {\r\n color: #ffffff;\r\n background: linear-gradient(#ff897a, #ff645a);\r\n\r\n i {\r\n color: #ffffff;\r\n }\r\n }\r\n\r\n img {\r\n width: 2.25rem;\r\n height: 2.25rem;\r\n float: left;\r\n margin-left: -0.5rem;\r\n margin-right: 0.5rem;\r\n }\r\n\r\n i {\r\n font-size: 2rem;\r\n color: #ff575f;\r\n font-weight: 900;\r\n }\r\n }\r\n\r\n .el-collapse-item__content {\r\n font-size: 1rem;\r\n font-family: Source Han Sans CN-Regular, Source Han Sans CN;\r\n font-weight: 400;\r\n padding: 20px 20px 20px 40px;\r\n color: #000000;\r\n background-color: #f7f7f9;\r\n\r\n > div {\r\n position: relative;\r\n margin-top: 1rem;\r\n cursor: pointer;\r\n transition: all 0.3s linear;\r\n\r\n &:first-child {\r\n margin-top: 0px;\r\n }\r\n\r\n &::before {\r\n content: \"\";\r\n position: absolute;\r\n top: 5px;\r\n left: -15px;\r\n // transform: rotate(-45deg);\r\n // float: left;\r\n border-width: 10px;\r\n border-style: solid;\r\n border-color: transparent transparent transparent #ffa9a3;\r\n }\r\n\r\n &:hover {\r\n color: #ff575f;\r\n transform: translate(0.5rem);\r\n\r\n &::before {\r\n border-color: transparent transparent transparent #ff575f;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=6185ef7a&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=6185ef7a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6185ef7a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('el-form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"model\":_vm.loginForm,\"rules\":_vm.loginRules}},[(_vm.loginForm.username == undefined)?_c('div',{staticClass:\"ca-bg-box\"},[_c('div',{staticClass:\"ca-bg-img\"}),_c('div',{staticClass:\"ca-bg-text\"},[_vm._v(\"请插入UKEY证书\")]),_c('img',{staticClass:\"ca-refresh\",class:{ start: _vm.caLoading },attrs:{\"src\":require('assets/ca/refresh.png'),\"alt\":\"\"},on:{\"click\":_vm.caRead}})]):_c('div',{staticClass:\"ca-bg-info\"},[_c('div',{staticClass:\"ca-bg-text\"},[_vm._v(\" CA名称:\"),_c('span',{staticClass:\"caName\"},[_vm._v(_vm._s(_vm.loginForm.username))])]),_c('img',{staticClass:\"ca-refresh\",class:{ start: _vm.caLoading },attrs:{\"src\":require('assets/ca/refresh.png'),\"alt\":\"\"},on:{\"click\":_vm.caRead}})]),_c('el-form-item',{attrs:{\"prop\":\"password\"}},[_c('el-input',{attrs:{\"type\":\"password\",\"auto-complete\":\"off\",\"placeholder\":\"密码\",\"show-password\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleLogin.apply(null, arguments)}},model:{value:(_vm.loginForm.password),callback:function ($$v) {_vm.$set(_vm.loginForm, \"password\", $$v)},expression:\"loginForm.password\"}},[_c('img',{staticClass:\"el-input__icon input-icon\",attrs:{\"slot\":\"prefix\",\"src\":require('assets/ca/password.png')},slot:\"prefix\"})])],1),_c('el-form-item',[_c('el-button',{staticClass:\"login-btn\",staticStyle:{\"width\":\"100%\"},attrs:{\"loading\":_vm.loading,\"size\":\"medium\",\"type\":\"primary\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.handleLogin.apply(null, arguments)}}},[(!_vm.loading)?_c('span',[_vm._v(\"登 录\")]):_c('span',[_vm._v(\"登 录 中...\")])])],1),_vm._t(\"default\")],2),_c('el-dialog',{attrs:{\"title\":\"提示\",\"visible\":_vm.dialogVisible.showInfo,\"width\":\"30%\",\"center\":\"\"},on:{\"update:visible\":function($event){return _vm.$set(_vm.dialogVisible, \"showInfo\", $event)}}},[_c('span',{staticStyle:{\"color\":\"red\"}},[_vm._v(_vm._s(_vm.caInfo.error_text))]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{on:{\"click\":function($event){_vm.dialogVisible.showInfo = false}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":function($event){_vm.dialogVisible.showInfo = false}}},[_vm._v(\"确 定\")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable no-unused-vars */\r\n/*******************************************************\r\n *\r\n * 函数名称:Base64encode()\r\n * 功 能:对数据进行Base64加密\r\n * 说\t明:函数中将数据使用_utf8_encode()进行编码转换后再加密,保证数据完整\r\n *\r\n **********************************************************/\r\n\r\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\n\r\nexport function _Base64encode (input) {\r\n\r\n var output = \"\";\r\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\r\n var i = 0;\r\n\r\n input = _utf8_encode(input);\r\n\r\n while (i < input.length) {\r\n\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n output = output + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4);\r\n }\r\n return output;\r\n}\r\n\r\n/*******************************************************\r\n *\r\n * 函数名称:Base64decode()\r\n * 功 能:对数据进行Base64解密\r\n * 说\t明:函数中将数据使用_utf8_decode()将解密后的数据编码,保证数据完整\r\n *\r\n **********************************************************/\r\nfunction _Base64decode (input) {\r\n var output = \"\";\r\n var chr1, chr2, chr3;\r\n var enc1, enc2, enc3, enc4;\r\n var i = 0;\r\n\r\n //input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\r\n // eslint-disable-next-line no-useless-escape\r\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\r\n while (i < input.length) {\r\n\r\n enc1 = _keyStr.indexOf(input.charAt(i++));\r\n enc2 = _keyStr.indexOf(input.charAt(i++));\r\n enc3 = _keyStr.indexOf(input.charAt(i++));\r\n enc4 = _keyStr.indexOf(input.charAt(i++));\r\n\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n\r\n output = output + String.fromCharCode(chr1);\r\n\r\n if (enc3 != 64) {\r\n output = output + String.fromCharCode(chr2);\r\n }\r\n if (enc4 != 64) {\r\n output = output + String.fromCharCode(chr3);\r\n }\r\n\r\n }\r\n\r\n output = _utf8_decode(output);\r\n\r\n return output;\r\n}\r\n\r\n/*******************************************************\r\n *\r\n * 函数名称:_utf8_encode()\r\n * 功 能:将数据进行utf8编码\r\n * 说\t明:\r\n *\r\n **********************************************************/\r\nfunction _utf8_encode (in_string) {\r\n var string = \"\" + in_string;\r\n string = string.replace(/\\r\\n/g, \"\\n\");\r\n var utftext = \"\";\r\n\r\n for (var n = 0; n < string.length; n++) {\r\n\r\n var c = string.charCodeAt(n);\r\n\r\n if (c < 128) {\r\n utftext += String.fromCharCode(c);\r\n } else if ((c > 127) && (c < 2048)) {\r\n utftext += String.fromCharCode((c >> 6) | 192);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n } else {\r\n utftext += String.fromCharCode((c >> 12) | 224);\r\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r\n utftext += String.fromCharCode((c & 63) | 128);\r\n }\r\n }\r\n return utftext;\r\n}\r\n\r\n/*******************************************************\r\n *\r\n * 函数名称:_utf8_decode()\r\n * 功 能:将数据进行utf8解码\r\n * 说\t明:\r\n *\r\n **********************************************************/\r\nfunction _utf8_decode (utftext) {\r\n var string = \"\";\r\n var i = 0;\r\n var c1 = 0;\r\n var c2 = 0;\r\n var c3 = 0;\r\n var c = c1 = c2 = 0;\r\n\r\n while (i < utftext.length) {\r\n\r\n c = utftext.charCodeAt(i);\r\n\r\n if (c < 128) {\r\n string += String.fromCharCode(c);\r\n i++;\r\n } else if ((c > 191) && (c < 224)) {\r\n c2 = utftext.charCodeAt(i + 1);\r\n string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\r\n i += 2;\r\n } else {\r\n c2 = utftext.charCodeAt(i + 1);\r\n c3 = utftext.charCodeAt(i + 2);\r\n string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n i += 3;\r\n }\r\n }\r\n return string;\r\n}\r\n","/**\r\n * @name mTokenPlugin集成代码\r\n * @author Akay\r\n * @version 0.7.12\r\n * @date 2020.07.21\r\n *\r\n * @description\r\n *ver 0.7.12 2020.12.21\r\n * 1. 新增操作系统判断,根据不同的系统加载不同的配置\r\n *\r\n *ver 0.7.11 2020.07.21\r\n *\t1. 解决Https的问题\r\n *\r\n * ver 0.7.10 2020.04.04\r\n * 1. 新增获取设备序号\r\n * 2. 支持多Key\r\n *\r\n * ver 0.7.9 2020.01.08\r\n * 1. 支持SJK1137型号\r\n *\r\n * ver 0.7.8 2019.10.23\r\n * 1. 新增UKey适配\r\n *\r\n * ver 0.7.4 2019.09.18\r\n * 1. 新增证书生效,失效时间\r\n *\r\n * ver 0.7.3 2019.08.19\r\n * 1. 获取证书使用者信息\r\n *\r\n * ver 0.7.2 2019.08.08\r\n * 1. 新增远程解锁接口\r\n *\r\n * ver 0.7.1 2019.07.17\r\n * TODO: 未安装组件时,判断组件是否安装(暂定,未解决)\r\n *\r\n * ver 0.7.0 2019.07.04\r\n * 1. 更新核心文件,解决多Key插入问题\r\n * 2. Ukey目前仅支持国密证书\r\n *\r\n * ver 0.6.3 2019.06.24\r\n * 1. 修复部分Bug\r\n *\r\n * ver 0.6.1 2019.06.24\r\n * 1. 支持数字信封数据解密接口\r\n * 2. 修复加密接口错误部分。\r\n *\r\n * ver 0.6.0 2019.06.20\r\n * 1. 支持数字信封数据加密接口\r\n * 2. 暂不支持多Ukey\r\n *\r\n * ver 0.5.1 2019.06.19\r\n * 1. 修正新Ukey引入导致的Bug\r\n *\r\n * ver 0.5 2019.06.18\r\n * 1. 适配SJK1137型号Ukey\r\n *\r\n * ver 0.4 2019.03.16\r\n * 1. 新增方法 枚举Ukey获取证书“G项信息”列表\r\n * 2. 新增方法 将“证书G项信息”转化为“证书名称”方法\r\n *\r\n * ver 0.3 2018.12.10\r\n * 1. 新增修改Ukey密码的方法\r\n *\r\n * ver 0.2 2018.09.26\r\n * 1. 新增获取签名证书SN号的方法\r\n * 2. 修正部分Bug\r\n *\r\n * ver 0.1 2018.09.21\r\n * 1. 搭建初步框架\r\n * 2. 完成签名功能\r\n *\r\n */\r\nimport { mToken } from \"utils/mTokenPlugin/mToken\";\r\nimport { _Base64encode } from \"utils/mTokenPlugin/base64\";\r\nexport function hunca_mToken_core () {\r\n\r\n var token = new mToken(\"mTokenPlugin\");\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfoList = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var singleKey = 0;\r\n var libraryNameList = null;\r\n\r\n if ((navigator.platform == \"Win32\") || (navigator.platform == \"Windows\")) {\r\n libraryNameList = Array(\"GM3000\", \"HT\", \"SJK1137\");\r\n } else {\r\n //libraryNameList = Array(\"GM3000\"); //国产操作系统支持GM3000型号\r\n libraryNameList = Array(\"HT\"); //国产操作系统支持海泰型号\r\n }\r\n /**\r\n * 错误信息\r\n */\r\n var LAST_ERRORSTRING = \"\";\r\n\r\n /**\r\n * 证书用途\r\n */\r\n var KEY_SPEC_TYPE_ENCRYPT = 0;\r\n var KEY_SPEC_TYPE_SIGN = 1;\r\n\r\n /**\r\n * 摘要算法\r\n */\r\n var SGD_SM3 = 1;\r\n // eslint-disable-next-line no-unused-vars\r\n var SGD_SHA1 = 2;\r\n\r\n /**\r\n * 加密算法\r\n */\r\n //分组加密算法标识\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_ECB = 0x00000101;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_CBC = 0x00000102;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_CFB = 0x00000104;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_OFB = 0x00000108;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM1_MAC = 0x00000110;\r\n let SGD_SM4_ECB = 0x00000401;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_CBC = 0x00000402;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_CFB = 0x00000404;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_OFB = 0x00000408;\r\n // eslint-disable-next-line no-unused-vars\r\n let SGD_SM4_MAC = 0x00000410;\r\n\r\n\r\n /**\r\n * 用户ID(固定)\r\n */\r\n var USER_ID = \"1234567812345678\";\r\n\r\n\r\n /**\r\n * 错误信息提示列表\r\n */\r\n var ERROR_MESSAGE_NOT_LOADLIBRARY = \"控件加载失败,错误码:\";\r\n var ERROR_MESSAGE_NOT_FIND_UKEY = \"未找到UKey!\\n1.请确认是否安装最新驱动!\\n2.计算机是否插入湖南CA UKey!\";\r\n // eslint-disable-next-line no-unused-vars\r\n var ERROR_MSSSAGE_FIND_MORE_UKEY = \"计算机插入多个UKey,请拔除多余“湖南CA UKey”!\";\r\n var ERROR_MESSAGE_NOT_INSTANCE_DEVICE = \"USBKey实例化失败,请确认此UKey是否插入计算机!\\n点击‘刷新’按钮,更新设备列表。\\n错误码:\";\r\n var ERROR_MESSAGE_USERPIN_LENGTH = \"Ukey密码必须为4~16位!\";\r\n var ERROR_MESSAGE_USERPIN_IS_ERROR = \"UKey密码错误\";\r\n var ERROR_MESSAGE_USERPIN_CHANGE_ERROR = \"UKey密码修改失败\";\r\n var ERROR_MESSAGE_KEY_NOT_EXIT = \"UKey不存在,请确认此UKey是否插入计算机,并点击'刷新'按钮,更新设备列表!\";\r\n var ERROR_MESSAGE_USERNAME_IS_NULL = \"请点击‘刷新’按钮,更新设备列表并选择相应设备!\";\r\n var ERROR_MESSAGE_KEY_EXPORT_CERT = \"证书获取失败,请加检测Key中是否存在证书!\";\r\n var ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR = \"设置摘要算法失败,请重新刷新浏览器!\";\r\n var ERROR_MESSAGE_SET_USERID_ERROR = \"设置用户ID失败,请重新刷新浏览器\";\r\n var ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL = \"签名失败,待签名原文不能为空\";\r\n var ERROR_MESSAGE_SIGN_ERROR = \"签名失败,返回错误码:\";\r\n var ERROR_MESSAGE_USERNAMEGN_IS_NULL = \"请点击‘刷新’按钮,更新设备列表并选择相应设备!\";\r\n var ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR = \"证书G项信息转化证书名称失败,请点击“刷新”按钮!\";\r\n var ERROR_MESSAGE_KEY_LIBRAY = \"加载国密库失败!\";\r\n var ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL = \"加密失败:待加密原文不能为空!\";\r\n var ERROR_MESSAGE_DECRYPT_DATA_IS_NULL = \"解密失败:待解密密文不能为空!\";\r\n var ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR = \"解密失败:请确认密文是否完整!\\n解密所采用的Ukey是否为加密时的Ukey!\";\r\n var ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL = \"申请解锁请求失败!\";\r\n var ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT = \"此型号Ukey不支持解锁!\";\r\n var ERROR_MESSAGE_REMOTE_UNLOCK_FAIL = \"Ukey解锁失败!\";\r\n\r\n /**\r\n * 私有变量\r\n */\r\n var tokenInfoList = null;\r\n\r\n /**\r\n * 私有变量\r\n */\r\n var signResultSignData = null;\r\n var signResultCert = null;\r\n\r\n /**\r\n * 证书信息\r\n */\r\n var certSn = null; //证书Sn\r\n var cert_subject_GN = null; //证书Gn\r\n var cert_subject = null; //证书使用者\r\n var cert_validTime = null; //证书失效时间\r\n var cert_notbeforetime = null; //证书生效时间\r\n\r\n /**\r\n * 返回错误信息\r\n */\r\n this.Hunca_GetLastError = function () {\r\n return LAST_ERRORSTRING;\r\n }\r\n\r\n /**\r\n * 获取证书列表\r\n */\r\n this.Hunca_GetUserList = function () {\r\n var deviceArray = null;\r\n var containerName = null;\r\n var userName = null;\r\n var tmpInfo = null;\r\n\r\n signResultCert = null;\r\n signResultSignData = null;\r\n tokenInfoList = new Array(); //清空信息\r\n\r\n for (var index = 0; index < libraryNameList.length; index++) {\r\n var libraryName = libraryNameList[index];\r\n if (!SOF_LoadLibrary(libraryName)) {\r\n continue;\r\n }\r\n\r\n deviceArray = SOF_EnumDevice();\r\n if (null == deviceArray) {\r\n continue;\r\n }\r\n\r\n for (var i = 0; i < deviceArray.length; i++) {\r\n var tokenInfo = new Object();\r\n //实例化设备失败\r\n if (!SOF_GetDeviceInstance(deviceArray[i])) {\r\n break;\r\n }\r\n\r\n //获取设备信息\r\n tmpInfo = SOF_GetUserList();\r\n if (null != tmpInfo || tmpInfo.length != 0) {\r\n containerName = tmpInfo[0][1];\r\n userName = tmpInfo[0][0];\r\n\r\n tokenInfo.libraryName = libraryName; //Ukey型号\r\n tokenInfo.serial = deviceArray[i]; //设备序列号\r\n tokenInfo.userName = userName; //证书名称\r\n tokenInfo.containerName = containerName; //应用名称\r\n\r\n tokenInfoList.push(tokenInfo);\r\n } else {\r\n continue;\r\n }\r\n SOF_LogOut();\r\n }\r\n }\r\n\r\n //返回证书信息\r\n var userNameList = new Array();\r\n for (let i = 0; i < tokenInfoList.length; i++) {\r\n userNameList[i] = tokenInfoList[i].userName;\r\n }\r\n\r\n if (userNameList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n return userNameList;\r\n }\r\n\r\n /**\r\n * 获取证书G项信息列表\r\n */\r\n this.Hunca_GetUserListGN = function Hunca_GetUserListGN () {\r\n var deviceArray = null;\r\n var containerName = null;\r\n var userName = null;\r\n var tmpInfo = null;\r\n var certB64 = null;\r\n var deviceSerial = \"\";\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultCert = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultSignData = null;\r\n tokenInfoList = new Array(); //清空信息\r\n var LAST_ERRORSTRING = \"\";\r\n\r\n for (var index = 0; index < libraryNameList.length; index++) {\r\n var libraryName = libraryNameList[index];\r\n //加载控件\r\n if (!SOF_LoadLibrary(libraryName)) {\r\n continue;\r\n }\r\n\r\n deviceArray = SOF_EnumDevice();\r\n if (null == deviceArray) {\r\n continue;\r\n }\r\n\r\n for (var i = 0; i < deviceArray.length; i++) {\r\n cert_subject_GN = null;\r\n certSn = null;\r\n deviceSerial = deviceArray[i];\r\n\r\n var tokenInfo = new Object();\r\n\r\n //实例化设备失败\r\n if (!SOF_GetDeviceInstance(deviceSerial)) {\r\n break;\r\n }\r\n\r\n //获取设备信息\r\n tmpInfo = SOF_GetUserList();\r\n if (null != tmpInfo || tmpInfo.length != 0) {\r\n containerName = tmpInfo[0][1];\r\n userName = tmpInfo[0][0];\r\n\r\n tokenInfo.libraryName = libraryName;\r\n tokenInfo.serial = deviceArray[i]; //设备序列号\r\n tokenInfo.userName = userName; //证书名称\r\n tokenInfo.containerName = containerName;\r\n } else {\r\n continue;\r\n }\r\n\r\n //获取证书G项信息\r\n certB64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);\r\n if (SOF_GetCertInfo(certB64)) {\r\n tokenInfo.subjectGN = cert_subject_GN; //设备证书G项目;\r\n } else {\r\n continue;\r\n }\r\n\r\n tokenInfoList.push(tokenInfo);\r\n SOF_LogOut();\r\n }\r\n }\r\n\r\n //返回证书G项信息\r\n var userNameGNList = new Array();\r\n for (let i = 0; i < tokenInfoList.length; i++) {\r\n userNameGNList[i] = tokenInfoList[i].subjectGN;\r\n }\r\n\r\n if (userNameGNList.length == 0) {\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n /*****\r\n if (userNameGNList.length > 1){\r\n LAST_ERRORSTRING = ERROR_MSSSAGE_FIND_MORE_UKEY;\r\n return \"\";\r\n }\r\n ****/\r\n return userNameGNList;\r\n }\r\n\r\n /**\r\n * 将证书G项信息转化为证书名称\r\n */\r\n this.Hunca_userNameGNToUserName = function (userNameGN) {\r\n var userName = null;\r\n LAST_ERRORSTRING = \"\";\r\n if (null == userNameGN || userNameGN.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAMEGN_IS_NULL;\r\n }\r\n\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n if (userNameGN == tokenInfoList[i].subjectGN) {\r\n userName = tokenInfoList[i].userName;\r\n break;\r\n }\r\n }\r\n\r\n if (null == userName || userName.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR;\r\n return null;\r\n }\r\n return userName;\r\n }\r\n\r\n this.Hunca_GenRemoteUnblockRequest = function (userName) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var request = \"\";\r\n\r\n LAST_ERRORSTRING = \"\";\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //判断设备是否支持远程解锁\r\n if (tokenInfo.libraryName != \"GM3000\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //枚举容器,并选择第一个容器\r\n if (SOF_GetUserList() == null) {\r\n return false;\r\n }\r\n\r\n //远程解锁\r\n request = SOF_GenRemoteUnblockRequest()\r\n\r\n return request;\r\n }\r\n\r\n this.HUnca_GetDeviceNumber = function (userName) {\r\n var m_devNumber = null;\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n let tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n // eslint-disable-next-line no-undef\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n // eslint-disable-next-line no-undef\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n // eslint-disable-next-line no-undef\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n // eslint-disable-next-line no-undef\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n m_devNumber = SOF_GetDeviceNumber();\r\n\r\n return m_devNumber + \"\";\r\n }\r\n\r\n this.Hunca_RemoteUnlockPIN = function (userName, response) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var result = false;\r\n\r\n LAST_ERRORSTRING = \"\";\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //判断设备是否支持远程解锁\r\n if (tokenInfo.libraryName != \"GM3000\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //枚举容器,并选择第一个容器\r\n if (SOF_GetUserList() == null) {\r\n return false;\r\n }\r\n\r\n //远程解锁\r\n result = SOF_RemoteUnlockPIN(response)\r\n return result;\r\n }\r\n\r\n /**\r\n * 修改Ukey密码\r\n */\r\n this.Hunca_ChangeUserPin = function (userName, oldUserPin, newUserPin) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n LAST_ERRORSTRING = \"\";\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //修改密码\r\n if (!SOF_ChangeUserPin(oldUserPin, newUserPin)) {\r\n return false;\r\n }\r\n\r\n SOF_LogOut();\r\n return true;\r\n }\r\n\r\n /**\r\n * 对数据进行签名,并返回签名是否成功\r\n * @param {string} originalData 待签名原文\r\n * @param {string} userName Ukey用户名称\r\n * @param {string} userPin Ukey密码\r\n */\r\n this.Hunca_PKCS1 = function (originalData, userName, userPin) {\r\n // eslint-disable-next-line no-unused-vars\r\n var libraryName = null;\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var certBase64 = null; //签名证书值\r\n\r\n var LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultInfo = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfo = new Object();\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n //加载库文件\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //登陆应用\r\n if (!SOF_Login(userPin)) {\r\n return false;\r\n }\r\n\r\n //获取签名证书Base64\r\n certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);\r\n if (null == certBase64) {\r\n return false;\r\n }\r\n\r\n //设置摘要算法\r\n if (!SOF_SetDigestMethod(SGD_SM3)) {\r\n return false;\r\n }\r\n\r\n if (!SOF_SetUserID()) {\r\n return false;\r\n }\r\n\r\n //进行签名\r\n if (!SOF_SignData(tokenInfo.containerName, SGD_SM3, originalData, certBase64)) {\r\n return false;\r\n }\r\n\r\n //获取证书信息\r\n if (!SOF_GetCertInfo(certBase64)) {\r\n return false;\r\n }\r\n\r\n SOF_LogOut();\r\n return true;\r\n }\r\n\r\n /**\r\n * 获取签名结果\r\n */\r\n this.Hunca_GetSignData = function () {\r\n return signResultSignData;\r\n }\r\n\r\n /**\r\n * 获取签名证书\r\n */\r\n this.Hunca_GetSignCert = function () {\r\n return signResultCert;\r\n }\r\n\r\n this.Hunca_GetSignCertSn = function () {\r\n return certSn\r\n }\r\n\r\n this.Hunca_GetSignCertSubject = function () {\r\n return cert_subject;\r\n }\r\n\r\n this.Hunca_GetValidTime = function () {\r\n return cert_validTime;\r\n }\r\n\r\n this.HUnca_GetNotBeforeTime = function () {\r\n return cert_notbeforetime;\r\n }\r\n /**\r\n * 处理设备中签名证书信息\r\n * @param {*} userName\r\n */\r\n this.Hunca_DealCertInfo = function (userName) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var certBase64 = null; //签名证书值\r\n\r\n LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-undef\r\n signResultInfo = null;\r\n // eslint-disable-next-line no-undef\r\n certInfo = new Object();\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return false;\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return false;\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return false;\r\n }\r\n\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return false;\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return false;\r\n }\r\n\r\n //导出证书\r\n certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_SIGN);\r\n if (null == certBase64 || certBase64.length == 0) {\r\n return false;\r\n }\r\n\r\n SOF_GetCertInfo(certBase64);\r\n SOF_LogOut();\r\n return true;\r\n }\r\n\r\n /**\r\n * 对数据进行数字信封加密\r\n * @param {string} inData 待加密原文\r\n * @param {string} userName Ukey用户名称\r\n * @param {string} EncryptMethod 对称加密方式\r\n * @param {string} EncryptIV 加密IV值\r\n * @returns {string} \"\",加密失败;非空,加密成功\r\n */\r\n this.Hunca_EncryptDataPKCS7 = function (inData, userName, EncryptMethod, EncryptIV) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var certBase64 = null; //签名证书值\r\n var m_EncryptMethod = \"\",\r\n m_EncryptIV = \"\";\r\n\r\n var LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultInfo = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfo = new Object();\r\n\r\n\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return \"\";\r\n }\r\n\r\n //加载链接库\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return \"\";\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return \"\";\r\n }\r\n\r\n //导出加密证书\r\n certBase64 = SOF_ExportUserCert(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT);\r\n if (null == certBase64 || certBase64.length == 0) {\r\n return \"\";\r\n }\r\n\r\n //设置加密方式\r\n\r\n m_EncryptMethod = EncryptMethod + \"\";\r\n m_EncryptIV = EncryptIV + \"\";\r\n\r\n if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {\r\n m_EncryptMethod = SGD_SM4_ECB;\r\n m_EncryptIV = \"\";\r\n }\r\n\r\n if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {\r\n return \"\";\r\n }\r\n\r\n //对数据进行加密\r\n // eslint-disable-next-line no-undef\r\n encryptData = SOF_EncryptDataPKCS7(certBase64, inData);\r\n\r\n SOF_LogOut();\r\n\r\n // eslint-disable-next-line no-undef\r\n return encryptData;\r\n }\r\n\r\n /**\r\n * 对密文进行数字信封解密操作\r\n * @param {string} encryptData 待解密密文\r\n * @param {string} userName Ukey用户名称\r\n * @param {string} userPin Ukey用户PIN码\r\n * @param {string} EncryptMethod 对称加密方式\r\n * @param {string} EncryptIV 加密IV值\r\n * @returns {string} \"\",加密失败;非空,加密成功\r\n */\r\n this.Hunca_DecryptDataPKCS7 = function (encryptData, userName, userPin, EncryptMethod, EncryptIV) {\r\n var tokenInfo = null; //Ukey设备信息\r\n var tempTokenInfo = null; //临时设备信息,循环遍历用\r\n var m_EncryptMethod = \"\",\r\n m_EncryptIV = \"\";\r\n var m_EncryptData = \"\";\r\n var m_DecryptData = \"\";\r\n var resData = \"\";\r\n\r\n var LAST_ERRORSTRING = \"\";\r\n // eslint-disable-next-line no-unused-vars\r\n var signResultInfo = null;\r\n // eslint-disable-next-line no-unused-vars\r\n var certInfo = new Object();\r\n\r\n\r\n m_EncryptData = \"\" + encryptData;\r\n //设备名称为空\r\n if (null == userName || userName.length == null) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERNAME_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n //查找匹配的设备序列号\r\n if (null == tokenInfoList || tokenInfoList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return \"\";\r\n }\r\n\r\n //索引设备编号\r\n for (var i = 0; i < tokenInfoList.length; i++) {\r\n tempTokenInfo = tokenInfoList[i];\r\n if (tempTokenInfo.userName == userName) {\r\n tokenInfo = tempTokenInfo;\r\n break;\r\n }\r\n }\r\n\r\n //如果所选择的设备不存在\r\n if (null == tokenInfo) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_NOT_EXIT;\r\n return \"\";\r\n }\r\n\r\n //加载链接库\r\n if (!SOF_LoadLibrary(tokenInfo.libraryName)) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_LIBRAY;\r\n return \"\";\r\n }\r\n\r\n //实例化设备\r\n if (!SOF_GetDeviceInstance(tokenInfo.serial)) {\r\n return \"\";\r\n }\r\n\r\n //登陆应用\r\n if (!SOF_Login(userPin)) {\r\n return \"\";\r\n }\r\n\r\n //设置加密方式\r\n m_EncryptMethod = EncryptMethod + \"\";\r\n m_EncryptIV = EncryptIV + \"\";\r\n if (m_EncryptMethod == null || m_EncryptMethod.length == 0) {\r\n m_EncryptMethod = SGD_SM4_ECB;\r\n m_EncryptIV = \"\";\r\n }\r\n\r\n if (!SOF_SetEncryptMethodAndIV(m_EncryptMethod, m_EncryptIV)) {\r\n return \"\";\r\n }\r\n\r\n m_DecryptData = SOF_DecryptDataPKCS7(tokenInfo.containerName, KEY_SPEC_TYPE_ENCRYPT, m_EncryptData);\r\n if (m_DecryptData.length == 0) {\r\n return \"\";\r\n }\r\n\r\n try {\r\n // eslint-disable-next-line no-undef\r\n resData = _Base64decode(m_DecryptData);\r\n } catch (e) {\r\n resData = m_DecryptData;\r\n // eslint-disable-next-line no-unused-vars\r\n LAST_ERRORSTRING = \"解密失败:Base64解码失败\";\r\n }\r\n\r\n return resData;\r\n }\r\n\r\n /**\r\n * 加载底层文件\r\n * @returns {boolean} true,加载成功;false加载失败;\r\n */\r\n function SOF_LoadLibrary (libraryName) {\r\n var resultCode = 0;\r\n if (libraryName == \"GM3000\") {\r\n resultCode = token.SOF_LoadLibrary(token.GM3000);\r\n }\r\n else if (libraryName == \"HT\") {\r\n resultCode = token.SOF_LoadLibrary(token.HT);\r\n }\r\n else if (libraryName == \"SJK1137\") {\r\n resultCode = token.SOF_LoadLibrary(token.SJK1137);\r\n }\r\n\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_LOADLIBRARY + token.SOF_GetLastError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 枚举设备\r\n */\r\n function SOF_EnumDevice () {\r\n var deviceNameList = \"\";\r\n\r\n deviceNameList = token.SOF_EnumDevice();\r\n\r\n //检测是否插入USBKey\r\n if (null == deviceNameList || deviceNameList.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_FIND_UKEY;\r\n return null;\r\n }\r\n\r\n return deviceNameList;\r\n }\r\n\r\n /**\r\n * 实例化设备,为后续一系列操作准备\r\n * @param {string} deviceName 设备名称\r\n */\r\n function SOF_GetDeviceInstance (deviceName) {\r\n var resultCode = 0;\r\n\r\n resultCode = token.SOF_GetDeviceInstance(deviceName, \"\");\r\n //设备未正常实例化\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_NOT_INSTANCE_DEVICE + token.SOF_GetLastError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 枚举应用中的容器\r\n */\r\n function SOF_GetUserList () {\r\n var userList = \"\";\r\n\r\n userList = token.SOF_GetUserList();\r\n if (null == userList || userList.length == 0) {\r\n LAST_ERRORSTRING = \"USBkey中未找到证书!\";\r\n return null;\r\n }\r\n\r\n return userList;\r\n }\r\n\r\n /**\r\n * 登陆应用,验证密码是否正确\r\n * @param {string} userPin\r\n */\r\n function SOF_Login (userPin) {\r\n var resultCode = 0;\r\n var m_userPin = \"\" + userPin;\r\n var RetryCount = 0;\r\n\r\n if (null == m_userPin || m_userPin.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (m_userPin.length < 4 || m_userPin.length > 16) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n resultCode = token.SOF_Login(m_userPin);\r\n if (resultCode != 0) {\r\n RetryCount = SOF_GetPinRetryCount();\r\n if (RetryCount > 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_IS_ERROR + \",还剩 \" + RetryCount + \" 次重试机会!\";\r\n } else {\r\n LAST_ERRORSTRING = \"UKey已经锁死,请联系管理员进行解锁!\"\r\n }\r\n return false;\r\n }\r\n return true\r\n }\r\n\r\n /**\r\n * 修改UKey密码\r\n * @param {*} oldUserPin\r\n * @param {*} newUserPin\r\n */\r\n function SOF_ChangeUserPin (oldUserPin, newUserPin) {\r\n var resultCode = 0;\r\n var m_oldUserPin = \"\" + oldUserPin;\r\n var m_newUserPin = \"\" + newUserPin;\r\n var RetryCount = 0;\r\n\r\n if (null == m_oldUserPin || m_oldUserPin.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (null == m_newUserPin || m_newUserPin.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (m_oldUserPin.length < 4 || m_oldUserPin.length > 16) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n if (m_newUserPin.length < 4 || m_newUserPin.length > 16) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_LENGTH;\r\n return false;\r\n }\r\n\r\n resultCode = token.SOF_ChangePassWd(m_oldUserPin, m_newUserPin);\r\n if (resultCode != 0) {\r\n RetryCount = SOF_GetPinRetryCount();\r\n if (RetryCount > 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_USERPIN_CHANGE_ERROR + \",还剩 \" + RetryCount + \" 次重试机会!\";\r\n } else {\r\n LAST_ERRORSTRING = \"UKey已经锁死,请联系管理员进行解锁!\"\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 返回重试次数\r\n */\r\n function SOF_GetPinRetryCount () {\r\n var retryCount = 0;\r\n retryCount = token.SOF_GetPinRetryCount();\r\n return retryCount;\r\n }\r\n\r\n function SOF_GetDeviceNumber () {\r\n var deviceNumber = null;\r\n deviceNumber = token.SOF_GetDeviceInfo(token.SGD_DEVICE_SERIAL_NUMBER);\r\n return deviceNumber;\r\n }\r\n\r\n /**\r\n * 导出证书值\r\n * @param {string} containerName 容器名称\r\n * @param {int} keySec 证书用途\r\n */\r\n function SOF_ExportUserCert (containerName, keySec) {\r\n var certBase64;\r\n certBase64 = token.SOF_ExportUserCert(containerName, keySec);\r\n if (null == certBase64 || certBase64.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_KEY_EXPORT_CERT;\r\n return null;\r\n }\r\n return certBase64;\r\n }\r\n\r\n /**\r\n * 设置加密算法\r\n * @param {*} EncryptMethod 设置加密算法\r\n * @param {*} EncryptIV 设置IV值\r\n */\r\n function SOF_SetEncryptMethodAndIV (EncryptMethod, EncryptIV) {\r\n var resCode = 1;\r\n\r\n if (EncryptMethod == undefined || EncryptMethod == null) {\r\n LAST_ERRORSTRING = \"请设置加密方式!\";\r\n return false;\r\n }\r\n\r\n resCode = token.SOF_SetEncryptMethodAndIV(EncryptMethod, _Base64encode(EncryptIV));\r\n if (resCode != 0) {\r\n LAST_ERRORSTRING = token.SOF_GetLastError();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 设置签名算法\r\n * @param {}} digestMethod\r\n */\r\n function SOF_SetDigestMethod (digestMethod) {\r\n var resultCode = 0;\r\n resultCode = token.SOF_SetDigestMethod(digestMethod);\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * 设置默认USERID\r\n */\r\n function SOF_SetUserID () {\r\n var resultCode = 0;\r\n resultCode = token.SOF_SetUserID(USER_ID);\r\n if (resultCode != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SET_USERID_ERROR;\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * 数字信封加密\r\n * @param {String} Base64EncodeCert 加密证书值\r\n * @param {String} inData 待加密原文\r\n * @returns {*} \"\",表示加密失败;非空,加密成功\r\n */\r\n function SOF_EncryptDataPKCS7 (Base64EncodeCert, inData) {\r\n var encryptData = \"\";\r\n var inDataBase64 = \"\";\r\n var m_inData = \"\";\r\n\r\n m_inData = \"\" + inData;\r\n if (m_inData.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n inDataBase64 = _Base64encode(m_inData)\r\n encryptData = token.SOF_EncryptDataPKCS7(Base64EncodeCert, inDataBase64, inData.length);\r\n\r\n if (encryptData == null || encryptData.length == 0) {\r\n LAST_ERRORSTRING = \"加密失败,\" + token.SOF_GetLastError();\r\n return \"\";\r\n }\r\n return encryptData;\r\n }\r\n\r\n /**\r\n * 数字信封解密\r\n * @param {*} containerName 应用名称\r\n * @param {int} cerType\r\n * @param {*} encrypedData\r\n */\r\n function SOF_DecryptDataPKCS7 (containerName, cerType, encrypedData) {\r\n var m_EncrypedData = \"\",\r\n m_DecryptData = \"\";\r\n\r\n m_EncrypedData = \"\" + encrypedData;\r\n if (containerName == null || containerName.length == 0) {\r\n LAST_ERRORSTRING = \"应用名称不能为空!\";\r\n return \"\";\r\n }\r\n\r\n if (m_EncrypedData.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_DECRYPT_DATA_IS_NULL;\r\n return \"\";\r\n }\r\n\r\n try {\r\n m_DecryptData = token.SOF_DecryptDataPKCS7(containerName, cerType, m_EncrypedData);\r\n } catch (e) {\r\n m_DecryptData = \"\";\r\n }\r\n if (undefined == m_DecryptData || m_DecryptData == null || m_DecryptData == \"\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR;\r\n return \"\";\r\n }\r\n\r\n return m_DecryptData;\r\n }\r\n\r\n /**\r\n * 数据签名\r\n * @param {*} containerName\r\n * @param {*} ulKeySpec\r\n * @param {*} data\r\n * @param {*} certBase64\r\n */\r\n function SOF_SignData (containerName, ulKeySpec, data, certBase64) {\r\n var signData = null;\r\n var b64Data = null;\r\n var m_data = \"\" + data;\r\n\r\n\r\n if (null == m_data || m_data.length == 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL;\r\n return false;\r\n }\r\n\r\n b64Data = _Base64encode(m_data);\r\n signData = token.SOF_SignData(containerName, ulKeySpec, _Base64encode(b64Data), b64Data.length)\r\n if (null == signData || signData.length == 0) {\r\n // eslint-disable-next-line no-undef\r\n LAST_ERRORSTRING = ERROR_MESSAGE_SIGN_ERROR + SOF_GetLastError();\r\n return false;\r\n }\r\n\r\n signResultCert = certBase64;\r\n signResultSignData = signData;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * 导出证书\r\n * @param {*} certBase64\r\n */\r\n function SOF_GetCertInfo (certBase64) {\r\n var str = null;\r\n var subject = null;\r\n var tmpList = null;\r\n var validTime = null;\r\n var notBeforetime = null;\r\n var key, value;\r\n\r\n if (null == certBase64 || certBase64.length == 0) {\r\n return false;\r\n }\r\n\r\n cert_subject_GN = \"\";\r\n certSn = \"\";\r\n cert_subject = \"\";\r\n\r\n str = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_SERIAL);\r\n certSn = hexToDec(str);\r\n\r\n subject = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_SUBJECT);\r\n cert_subject = subject;\r\n\r\n validTime = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_VALID_TIME);\r\n cert_validTime = validTime;\r\n\r\n notBeforetime = token.SOF_GetCertInfo(certBase64, token.SGD_CERT_NOT_BEFORE);\r\n cert_notbeforetime = notBeforetime;\r\n\r\n tmpList = subject.split(',');\r\n for (var i = 0; i < tmpList.length; i++) {\r\n if (tmpList[i].indexOf(\"=\") == -1) {\r\n continue;\r\n }\r\n\r\n key = tmpList[i].split('=')[0];\r\n value = tmpList[i].split('=')[1];\r\n\r\n if (key == 'GN') {\r\n cert_subject_GN = value;\r\n break;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\r\n\r\n /**\r\n * 登出UKey\r\n */\r\n function SOF_LogOut () {\r\n token.SOF_LogOut();\r\n }\r\n\r\n /**\r\n * 生成解锁请求\r\n */\r\n function SOF_GenRemoteUnblockRequest () {\r\n var request = token.SOF_GenRemoteUnblockRequest();\r\n if (request == null || request == \"\") {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL;\r\n return \"\";\r\n }\r\n\r\n return request;\r\n }\r\n\r\n function SOF_RemoteUnlockPIN (response) {\r\n var result = false;\r\n\r\n if (null == response || response.length == 0) {\r\n LAST_ERRORSTRING = \"解锁失败解:响应不能为空!\";\r\n return false;\r\n }\r\n\r\n result = token.SOF_RemoteUnblockPIN(response);\r\n if (result != 0) {\r\n LAST_ERRORSTRING = ERROR_MESSAGE_REMOTE_UNLOCK_FAIL;\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n function add (x, y, base) {\r\n var z = [];\r\n var n = Math.max(x.length, y.length);\r\n var carry = 0;\r\n var i = 0;\r\n while (i < n || carry) {\r\n var xi = i < x.length ? x[i] : 0;\r\n var yi = i < y.length ? y[i] : 0;\r\n var zi = carry + xi + yi;\r\n z.push(zi % base);\r\n carry = Math.floor(zi / base);\r\n i++;\r\n }\r\n return z;\r\n }\r\n\r\n function multiplyByNumber (num, x, base) {\r\n if (num < 0) return null;\r\n if (num == 0) return [];\r\n\r\n var result = [];\r\n var power = x;\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n if (num & 1) {\r\n result = add(result, power, base);\r\n }\r\n num = num >> 1;\r\n if (num === 0) break;\r\n power = add(power, power, base);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function parseToDigitsArray (str, base) {\r\n var digits = str.split('');\r\n var ary = [];\r\n for (var i = digits.length - 1; i >= 0; i--) {\r\n var n = parseInt(digits[i], base);\r\n if (isNaN(n)) return null;\r\n ary.push(n);\r\n }\r\n return ary;\r\n }\r\n\r\n\r\n function convertBase (str, fromBase, toBase) {\r\n var digits = parseToDigitsArray(str, fromBase);\r\n if (digits === null) return null;\r\n\r\n var outArray = [];\r\n var power = [1];\r\n for (var i = 0; i < digits.length; i++) {\r\n // invariant: at this point, fromBase^i = power\r\n if (digits[i]) {\r\n outArray = add(outArray, multiplyByNumber(digits[i], power, toBase), toBase);\r\n }\r\n power = multiplyByNumber(fromBase, power, toBase);\r\n }\r\n\r\n var out = '';\r\n for (let i = outArray.length - 1; i >= 0; i--) {\r\n out += outArray[i].toString(toBase);\r\n }\r\n return out;\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n function decToHex (decStr) {\r\n var hex = convertBase(decStr, 10, 16);\r\n return hex ? '0x' + hex : null;\r\n }\r\n\r\n\r\n function hexToDec (hexStr) {\r\n if (hexStr.substring(0, 2) === '0x') hexStr = hexStr.substring(2);\r\n hexStr = hexStr.toLowerCase();\r\n return convertBase(hexStr, 16, 10);\r\n }\r\n}\r\n","// 过滤时间\r\nexport function formateTime(dateStr) {\r\n let year = dateStr.slice(0, 4);\r\n let month = dateStr.slice(4, 6);\r\n let date = dateStr.slice(6, 8);\r\n let hours = dateStr.slice(8, 10);\r\n let minute = dateStr.slice(10, 12);\r\n let second = dateStr.slice(12);\r\n return `${year}-${month}-${date} ${hours}:${minute}:${second}`;\r\n}\r\n","<template>\r\n <div>\r\n <el-form\r\n ref=\"loginForm\"\r\n :model=\"loginForm\"\r\n :rules=\"loginRules\"\r\n class=\"login-form\"\r\n >\r\n <div class=\"ca-bg-box\" v-if=\"loginForm.username == undefined\">\r\n <div class=\"ca-bg-img\"></div>\r\n <div class=\"ca-bg-text\">请插入UKEY证书</div>\r\n <img\r\n :src=\"require('assets/ca/refresh.png')\"\r\n class=\"ca-refresh\"\r\n :class=\"{ start: caLoading }\"\r\n @click=\"caRead\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <div class=\"ca-bg-info\" v-else>\r\n <div class=\"ca-bg-text\">\r\n CA名称:<span class=\"caName\">{{ loginForm.username }}</span>\r\n </div>\r\n <img\r\n :src=\"require('assets/ca/refresh.png')\"\r\n class=\"ca-refresh\"\r\n :class=\"{ start: caLoading }\"\r\n @click=\"caRead\"\r\n alt=\"\"\r\n />\r\n </div>\r\n <el-form-item prop=\"password\">\r\n <el-input\r\n v-model=\"loginForm.password\"\r\n type=\"password\"\r\n auto-complete=\"off\"\r\n placeholder=\"密码\"\r\n show-password\r\n @keyup.enter.native=\"handleLogin\"\r\n >\r\n <img\r\n slot=\"prefix\"\r\n class=\"el-input__icon input-icon\"\r\n :src=\"require('assets/ca/password.png')\"\r\n />\r\n </el-input>\r\n </el-form-item>\r\n <el-form-item>\r\n <el-button\r\n :loading=\"loading\"\r\n size=\"medium\"\r\n type=\"primary\"\r\n class=\"login-btn\"\r\n style=\"width: 100%\"\r\n @click.native.prevent=\"handleLogin\"\r\n >\r\n <span v-if=\"!loading\">登 录</span>\r\n <span v-else>登 录 中...</span>\r\n </el-button>\r\n </el-form-item>\r\n <slot></slot>\r\n </el-form>\r\n <el-dialog\r\n title=\"提示\"\r\n :visible.sync=\"dialogVisible.showInfo\"\r\n width=\"30%\"\r\n center\r\n >\r\n <span style=\"color: red\">{{ caInfo.error_text }}</span>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible.showInfo = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"dialogVisible.showInfo = false\"\r\n >确 定</el-button\r\n >\r\n </span>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { hunca_mToken_core } from \"utils/mTokenPlugin/hunca_mToken_core2\"\r\n// 北京ca\r\nimport \"utils/mTokenPluginBeijin/xtxasyn\"\r\nimport { formateTime } from \"utils/mTokenPluginBeijin/formateTime\"\r\nexport default {\r\n name: \"YcCA\",\r\n props: {\r\n region: {\r\n /** 1背景CA,0湖南CA */\r\n type: Number,\r\n default: 0,\r\n },\r\n },\r\n data() {\r\n return {\r\n form: {},\r\n caInfo: {\r\n error_text: \"\",\r\n have_error_info: false,\r\n },\r\n loginForm: {\r\n username: \"\",\r\n password: \"\",\r\n uuid: \"\",\r\n caInfo: \"\",\r\n },\r\n dialogVisible: {\r\n ca: false,\r\n showInfo: false,\r\n },\r\n loginRules: {\r\n password: [\r\n { required: true, trigger: \"blur\", message: \"请输入您的密码\" },\r\n ],\r\n },\r\n loading: false,\r\n caLoading: false,\r\n }\r\n },\r\n computed: {\r\n isBJCA() {\r\n return this.region == 1\r\n },\r\n },\r\n watch: {\r\n region() {\r\n this.caRead()\r\n },\r\n },\r\n created() {\r\n // this.caRead()\r\n },\r\n methods: {\r\n //读取CA\r\n caRead() {\r\n if (this.isBJCA) {\r\n this.caReadBeijin()\r\n } else {\r\n window.mToken = new hunca_mToken_core()\r\n let tempName = window.mToken.Hunca_GetUserListGN()\r\n this.loginForm.username = tempName[0]\r\n }\r\n },\r\n async caReadBeijin() {\r\n if (this.caLoading) return\r\n this.caLoading = true\r\n setTimeout(() => {\r\n this.caLoading = false\r\n }, 1000)\r\n let retObj = await new Promise((resolve) => {\r\n window.SOF_GetUserList(function (retObj) {\r\n resolve(retObj)\r\n })\r\n })\r\n this.loginForm.username = retObj.retVal.split(\"||\")[0]\r\n },\r\n // CA登录选择\r\n caLogin(flag) {\r\n switch (flag) {\r\n case 0:\r\n this.HNCALogin()\r\n break\r\n default:\r\n this.$message({\r\n type: \"warning\",\r\n message: \"请选择CA平台!!!\",\r\n })\r\n }\r\n },\r\n // 湖南CA平台登录\r\n HNCALogin() {\r\n window.mToken = new hunca_mToken_core()\r\n this.loginForm.username = window.mToken.Hunca_GetUserListGN()\r\n let tempuserName = window.mToken.Hunca_userNameGNToUserName(\r\n this.loginForm.username[0]\r\n ) //将证书G项信息转化为证书名称\r\n let rn = Math.random()\r\n if (\r\n !window.mToken.Hunca_PKCS1(rn, tempuserName, this.loginForm.password)\r\n ) {\r\n this.caInfo.error_text = window.mToken.Hunca_GetLastError()\r\n this.caInfo.have_error_info = true\r\n this.dialogVisible.showInfo = true\r\n return false\r\n }\r\n this.ca_cert = window.mToken.Hunca_GetSignCert()\r\n this.sign = window.mToken.Hunca_GetSignData()\r\n this.certSn = window.mToken.Hunca_GetSignCertSn() //CA唯一码\r\n this.cert_subject = window.mToken.Hunca_GetSignCertSubject() //CA信息\r\n this.cert_validTime = window.mToken.Hunca_GetValidTime() //过期时间\r\n this.cert_notBeforeTime = window.mToken.HUnca_GetNotBeforeTime() //生效时间\r\n let tempinfo = this.cert_subject.split(\",\")\r\n let tempinfo1 = {}\r\n tempinfo.forEach((e) => {\r\n tempinfo1[e.split(\"=\")[0]] = e.split(\"=\")[1]\r\n })\r\n this.loginForm = {\r\n cert: this.ca_cert,\r\n sign: this.sign,\r\n rn: rn,\r\n caInfo: this.cert_subject, //CA信息\r\n caAddr: tempinfo1.ST + tempinfo1.OU, //设备归属地\r\n caCode: tempinfo1.TITLE, //证书代码\r\n caName: tempinfo1.GN, //ca名字\r\n caSn: this.certSn, //CA唯一码\r\n caEffectiveDate: this.cert_notBeforeTime, //生效时间\r\n caExpireDate: this.cert_validTime, //过期时间\r\n loginType: \"3\",\r\n username: tempinfo1.GN,\r\n }\r\n return true\r\n },\r\n handleLogin() {\r\n this.$refs.loginForm.validate((valid) => {\r\n if (valid) {\r\n this.loading = true\r\n if (this.isBJCA) {\r\n this.BJCALogin()\r\n } else {\r\n this.HNCALogin()\r\n if (this.dialogVisible.showInfo == true) {\r\n this.loading = false\r\n } else if (this.loginForm.username != undefined) {\r\n this.loading = true\r\n this.$emit(\"caSuccess\", this.loginForm, () => {\r\n this.loading = false\r\n })\r\n } else {\r\n this.msgErr(\"请插入CA\")\r\n }\r\n }\r\n }\r\n })\r\n },\r\n async BJCALogin() {\r\n if (this.loginForm.password == undefined) {\r\n this.msgErr(\"请插入CA\")\r\n return\r\n } else {\r\n let certId = await new Promise((resolve) => {\r\n window.SOF_GetUserList(function (retObj) {\r\n resolve(retObj.retVal.split(\"&&&\")[0].split(\"||\")[1])\r\n })\r\n })\r\n // --------------执行ca登录接口开始\r\n var time_begin = new Date()\r\n let passwd = this.loginForm.password\r\n if (!certId || !passwd) {\r\n return\r\n }\r\n var platform = navigator.platform.toLowerCase()\r\n if (platform.indexOf(\"win\") != -1) {\r\n window.SOF_LoginEx(certId, passwd, 0, this.login_callback, {\r\n begin: time_begin,\r\n certId: certId,\r\n })\r\n } else {\r\n window.SOF_Login(certId, passwd, this.login_callback, {\r\n begin: time_begin,\r\n certId: certId,\r\n })\r\n }\r\n // --------------执行ca登录接口结束\r\n }\r\n },\r\n login_callback(retObj) {\r\n const that = this\r\n var certId = retObj.ctx.certId\r\n if (retObj.retVal) {\r\n // 登录成功对数据进行签名\r\n this.BJSignData()\r\n } else {\r\n //当登录失败时,调用SOF_GetLastError取错误码,errcode为79时表示pin码复杂度不符合\r\n window.SOF_GetLastError(function (retObj) {\r\n var err = retObj.retVal\r\n if (err == 79) {\r\n that.msgErr(\"请核对pin码复杂度是否符合要求\")\r\n }\r\n }, retObj.ctx)\r\n // 实际情况可能仅在登录失败时获取一下重试次数做个提醒\r\n window.SOF_GetPinRetryCount(\r\n certId,\r\n function (retObj) {\r\n var certId = retObj.ctx.certId\r\n that.msgErr(\r\n \"证书[\" + certId + \"]重试次数剩余:\" + retObj.retVal + \"次...\"\r\n )\r\n },\r\n retObj.ctx\r\n )\r\n }\r\n },\r\n async BJSignData() {\r\n let certId = await new Promise((resolve) => {\r\n window.SOF_GetUserList(function (retObj) {\r\n resolve(retObj.retVal.split(\"&&&\")[0].split(\"||\")[1])\r\n })\r\n })\r\n let rn = Math.random()\r\n this.form[\"rn\"] = rn\r\n window.SOF_SignData(certId, rn, this.signData_callback, {\r\n certId: certId,\r\n })\r\n // --------------登录成功对数据进行签名结束\r\n },\r\n async signData_callback(retObj) {\r\n if (retObj.retVal == \"\") {\r\n this.caInfo.error_text = \"数据签名失败\"\r\n this.caInfo.have_error_info = true\r\n this.dialogVisible.showInfo = true\r\n return\r\n }\r\n this.form[\"sign\"] = retObj.retVal\r\n // 签名成功获取其他信息后端登录接口所需信息-------\r\n var certId = retObj.ctx.certId\r\n // 导出用户证书\r\n let userCert = await new Promise((resolve) => {\r\n window.SOF_ExportUserCert(certId, function (retObj) {\r\n resolve(retObj.retVal)\r\n })\r\n })\r\n this.form[\"username\"] = userCert\r\n if (userCert) {\r\n var certInfoTypeArray = {\r\n caAddrProvince: { type: 16, label: \"使用者省州名ST\" }, //caAddr\r\n caAddrcity: { type: 18, label: \"使用者城市名L\" }, //caAddr\r\n caEffectiveDate: { type: 11, label: \"证书有效开始日期\" }, //caEffectiveDate\r\n caExpireDate: { type: 12, label: \"证书有效结束日期\" }, //caExpireDate\r\n caInfo: { type: 35, label: \"使用者DN项第2种格式\" }, //caInfo\r\n //caCode\r\n //username\r\n caSn: { type: 2, label: \"证书序列号\" }, //caSn\r\n caType: { type: 34, label: \"颁发者DN项第1种格式\" }, //caType\r\n }\r\n // 导出证书成功,解析证书基本项\r\n for (let key in certInfoTypeArray) {\r\n let certInfo = await new Promise((resolve) => {\r\n window.SOF_GetCertInfo(\r\n userCert,\r\n certInfoTypeArray[key].type,\r\n function (retObj) {\r\n resolve(retObj)\r\n },\r\n { key: key }\r\n )\r\n })\r\n this.form[certInfo.ctx.key] = certInfo.retVal\r\n }\r\n let bindParams = {\r\n caSn: this.form[\"caSn\"],\r\n caInfo: this.form[\"caInfo\"],\r\n caAddr: this.form[\"caAddrProvince\"] + this.form[\"caAddrcity\"],\r\n caCode: this.form[\"caInfo\"]\r\n .split(\",\")\r\n .filter((v) => {\r\n return v.search(/^title=/i) != -1\r\n })[0]\r\n .replace(/title=/i, \"\"),\r\n username: this.form[\"caInfo\"]\r\n .split(\",\")\r\n .filter((v) => {\r\n return v.search(/^cn=/i) != -1\r\n })[0]\r\n .replace(/cn=/i, \"\"),\r\n caEffectiveDate: formateTime(this.form[\"caEffectiveDate\"]),\r\n caExpireDate: formateTime(this.form[\"caExpireDate\"]),\r\n // region: this.readForm.region,\r\n pass: this.loginForm.password,\r\n caType: \"北京ca\",\r\n sign: this.form.sign,\r\n rn: this.form.rn,\r\n cert: this.form.username,\r\n }\r\n this.form = bindParams\r\n this.loginForm = {\r\n cert: this.form.cert,\r\n sign: this.form.sign,\r\n rn: this.form.rn,\r\n caInfo: this.form.caInfo, //CA信息\r\n caAddr: this.form.caAddr, //设备归属地\r\n caCode: this.form.caCode, //证书代码\r\n caName: this.form.username, //证书名称\r\n caSn: this.form.caSn, //CA唯一码\r\n caEffectiveDate: this.form.caEffectiveDate, //生效时间\r\n caExpireDate: this.form.caExpireDate, //过期时间\r\n loginType: \"3\",\r\n username: this.form.username,\r\n }\r\n if (this.dialogVisible.showInfo == true) {\r\n this.loading = false\r\n } else if (this.loginForm.username != undefined) {\r\n this.$emit(\"caSuccess\", this.loginForm, () => {\r\n this.loading = false\r\n })\r\n } else {\r\n this.msgErr(\"请插入CA\")\r\n }\r\n }\r\n },\r\n handleClose(done) {\r\n this.$confirm(\"确认关闭?\")\r\n .then(() => {\r\n done()\r\n this.loading = false\r\n })\r\n .catch(() => {})\r\n },\r\n msgErr(msg) {\r\n this.loading = false\r\n this.$message.error(msg)\r\n },\r\n },\r\n}\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n::v-deep .el-input__prefix {\r\n display: flex;\r\n align-items: center;\r\n left: 1.04vw;\r\n}\r\n::v-deep .el-form-item__error {\r\n font-size: 0.04vw;\r\n}\r\n::v-deep .el-input__icon {\r\n color: #409eff;\r\n width: 0.98vw;\r\n height: 1.14vw;\r\n}\r\n::v-deep .el-input__inner {\r\n padding: 0 3.64vw;\r\n height: 2.81vw;\r\n font-size: 1.04vw;\r\n border: 0.1vw solid #409eff;\r\n}\r\n::v-deep .el-input .el-input__clear {\r\n font-size: 1.24vw;\r\n}\r\n::v-deep .el-input__suffix {\r\n right: 1.04vw;\r\n top: 0.46vw;\r\n}\r\n.el-form-item {\r\n margin-bottom: 1.2vw;\r\n margin-top: 1vw;\r\n}\r\n.ca-download-box {\r\n display: flex;\r\n justify-content: right;\r\n align-items: center;\r\n margin: 10px 0;\r\n .ca-download-text {\r\n color: #53a8ff;\r\n font-size: 14px;\r\n font-weight: 400;\r\n }\r\n .ca-download-img {\r\n width: 10px;\r\n height: 10px;\r\n background: url(\"assets/ca/ca-download.png\") no-repeat;\r\n background-size: 100% 100%;\r\n margin-left: 2px;\r\n }\r\n}\r\n.contentBox {\r\n width: 100%;\r\n height: 50px;\r\n margin-bottom: 15px;\r\n}\r\n.ca-bg-box {\r\n background-color: #ecf5ff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 30px 70px;\r\n position: relative;\r\n -webkit-animation: fadeinout 1s linear forwards;\r\n animation: fadeinout 1s linear forwards;\r\n .ca-bg-img {\r\n width: 97px;\r\n height: 57px;\r\n background: url(\"assets/ca/ca-bg.png\") no-repeat;\r\n background-size: 100% 100%;\r\n }\r\n}\r\n@-webkit-keyframes fadeinout {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 50% {\r\n opacity: 0.5;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n@keyframes fadeinout {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 50% {\r\n opacity: 0.5;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n.ca-bg-info {\r\n display: flex;\r\n padding: 40px 70px 40px 25px;\r\n position: relative;\r\n background: url(\"assets/ca/caBg.png\") no-repeat;\r\n background-size: 100% 100%;\r\n -webkit-animation: fadeinout 1s linear forwards;\r\n animation: fadeinout 1s linear forwards;\r\n}\r\n.ca-bg-text {\r\n margin-left: 15px;\r\n font-size: 18px;\r\n font-weight: 500;\r\n color: #53a8ff;\r\n}\r\n.caName {\r\n margin-left: 10px;\r\n color: #303133;\r\n}\r\n.ca-refresh {\r\n position: absolute;\r\n top: 6px;\r\n right: 8px;\r\n width: 25px;\r\n height: 25px;\r\n cursor: pointer;\r\n &.start {\r\n animation: rotate 0.7s linear;\r\n }\r\n @keyframes rotate {\r\n 0% {\r\n transform: rotate(0deg); /* 初始状态 */\r\n }\r\n 100% {\r\n transform: rotate(360deg); /* 结束状态 */\r\n }\r\n }\r\n}\r\n.login-btn {\r\n height: 2.81vw;\r\n font-size: 1.04vw;\r\n font-weight: bold;\r\n background: url(\"assets/ca/login-btn-bg.png\") no-repeat;\r\n background-size: 100% 100%;\r\n border: none;\r\n}\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-124.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=eeb04946&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=eeb04946&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eeb04946\",\n null\n \n)\n\nexport default component.exports","import YcSlideVerify from 'comp/YcSlideVerify'\r\nimport YcCustomerService from 'comp/YcCustomerService'\r\nimport YcQuestion from 'comp/YcQuestion'\r\nimport YcCA from 'comp/YcCA'\r\n\r\n\r\nconst components = [\r\n YcSlideVerify,\r\n YcCustomerService,\r\n YcQuestion,\r\n YcCA\r\n]\r\n// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册\r\nconst install = function (Vue) {\r\n // 遍历注册全局组件\r\n components.forEach(component => {\r\n Vue.component(component.name, component)\r\n })\r\n\r\n // 判断是否是直接引入文件,如果是,就不用调用 Vue.use()\r\n if (typeof window !== 'undefined' && window.Vue) {\r\n install(window.Vue)\r\n }\r\n}\r\n\r\n// 导出的对象必须具有 install,才能被 Vue.use() 方法安装\r\nexport default {\r\n install\r\n}\r\n","import './setPublicPath'\nimport mod from '~entry'\nexport default mod\nexport * from '~entry'\n"],"names":["root","factory","exports","module","define","amd","self","this","isCallable","tryToString","$TypeError","TypeError","argument","isObject","$String","String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","value","O","length","index","includes","indexOf","DESCRIPTORS","isArray","getOwnPropertyDescriptor","Object","SILENT_ON_NON_WRITABLE_LENGTH_SET","undefined","defineProperty","writable","error","uncurryThis","toString","stringSlice","slice","it","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","target","source","exceptions","keys","f","i","key","createPropertyDescriptor","object","bitmap","enumerable","configurable","makeBuiltIn","defineGlobalProperty","options","simple","name","global","unsafe","nonConfigurable","nonWritable","fails","get","documentAll","document","all","IS_HTMLDDA","EXISTS","createElement","MAX_SAFE_INTEGER","navigator","userAgent","match","version","process","Deno","versions","v8","split","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","FORCED","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","prototype","dontCallGetSet","forced","sham","exec","test","bind","hasOwnProperty","NATIVE_BIND","call","Function","apply","arguments","FunctionPrototype","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","fn","aFunction","namespace","method","aCallable","isNullOrUndefined","V","P","func","check","Math","globalThis","window","g","toObject","a","classof","$Object","propertyIsEnumerable","store","functionToString","inspectSource","set","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","enforce","getterFor","TYPE","state","type","metadata","facade","STATE","Array","$documentAll","replacement","feature","detection","data","normalize","POLYFILL","NATIVE","string","replace","toLowerCase","getBuiltIn","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","toLength","obj","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","join","CONFIGURABLE_LENGTH","TEMPLATE","getter","setter","arity","constructor","ceil","floor","trunc","x","n","IE8_DOM_DEFINE","V8_PROTOTYPE_DEFINE_BUG","anObject","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","enumBugKeys","concat","getOwnPropertyNames","getOwnPropertySymbols","push","names","result","$propertyIsEnumerable","NASHORN_BUG","input","pref","val","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","uid","SHARED","IS_PURE","mode","copyright","license","V8_VERSION","symbol","Symbol","toIntegerOrInfinity","max","min","integer","IndexedObject","requireObjectCoercible","number","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","toPrimitive","id","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$","setArrayLength","doesNotExceedSafeInteger","INCORRECT_TO_LENGTH","properErrorOnNonWritableLength","proto","item","len","argCount","xtxasyn","XTXAsynHashMap","map","put","remove","removeAll","keySet","_keys","HashMap","initUtilObject","util","checkBrowserISIE","ActiveXObject","checkLocationIsHttps","location","protocol","evalFunction","cb","eval","consolelog","param","console","log","isEmpty","loadIECtl","clsid","ctlName","checkFunc","ctl","getElementById","loadObjString","write","e","getAutoExecFunctionString","ret","attachIEEvent","eventName","eventFunc","attachEvent","handler","setAttribute","eventScript","appendChild","createTextNode","getElementsByTagName","loadWebSocketCtl","wsUrl","wssUrl","wsObject","url","socket","wsMessageQueue","wsMessageQueueId","wsEventQueue","wsURL","wsCacheMessage","custom","defaultUsbkeyChange","WebSocket","onopen","evt","SOF_GetVersion","retVal","tb_send","shift","send","onclose","XTXAppWebSocket","onmessage","res","JSON","parse","cmdId","methodName","execFunc","messageQueue","ctx","returnType","Number","token","setToken","retObj","onerror","attachWebSocketEvent","callWebSocketMethod","argsArray","sendArray","href","strParam","getToken","readyState","OPEN","stringify","CONNECTING","SynToAsyn","initCustomActions","softCertListID","hardCertListID","allCertListID","loginCertID","logoutFunc","UsbkeyChangeFunc","loginToken","errorReportFunc","msg","alert","setAutoLogoutParameter","strCertID","clearDropList","dropListId","pushOneDropListBox","userListArray","strListID","certObj","objItem","Option","certName","certID","add","pushUserListToAllDroplist","strUserList","allListArray","strOneUser","substring","strName","GetDeviceInfo","setUserCertList","certListId","certType","CERT_TYPE_ALL","CERT_TYPE_HARD","CERT_TYPE_SOFT","SOF_GetUserList","setOnUsbKeyChangeCallBack","callback","setErrorReportFunc","errFunc","autoLogoutCallBack","initXTXAppCOM","XTXAppCOM","xtx_clsid","GetPicObj","getpic_clsid","GetPic","Hash","inData","ConvertPicFormat","ConvertGif2Jpg","GetPic1","ConvertPicSize","strPicture","w","h","XTXVersionOBJ","xtx_version_clsid","GetEnvVersion","initXTXAppWebSocket","initXTXAppObject","getImplmentFunction","methodInfo","inParams","funcName","outParamType","export_functions","aliasName","SetAutoLogoutParameter","SetUserCertList","SetOnUsbKeyChangeCallBack","SetAlertFunction","custom_alert","GetLoginToken","SetLoginToken","tokenData","GetUserListByType","strType","GetDeviceType","userList","GetUserList_USBKey","GetUserList_Soft","SignByP7","strInData","bDetach","SOF_SignMessage","GetSymKeyLength","HashFile","strFilePath","SOF_HashFile","ParseDateString","strDate","strYear","strMonth","strDay","strHour","strMin","strSecond","RtnDate","Date","setFullYear","setHours","setMinutes","setSeconds","__loginSignRandomCallBack","objForm","UserSignedData","LoginToken","action","submit","__loginVerifyServerSignatureCallBack","SOF_SignData","strServerRan","__loginCheckCertValidNotAfter","notAfterDate","milliseconds","getTime","days","parseInt","hours","minutes","SOF_VerifySignedData","strServerCert","strServerSignedData","__loginCheckCertValidNotBefore","notBeforeDate","strUserCert","UserCert","SOF_GetCertInfo","__loginGetSignCertCallBack","__loginGetPINRetryCallBack","retryCount","__loginVerifyPINCallBack","CertID","ContainerName","SOF_ExportUserCert","SOF_GetPinRetryCount","Login","formName","strPin","strAction","custom_cb","insertAdjacentHTML","SOF_Login","mToken","SAR_OK","SAR_FALSE","SGD_SM1_ECB","SGD_SM1_CBC","SGD_SM1_CFB","SGD_SM1_OFB","SGD_SM1_MAC","SGD_SSF33_ECB","SGD_SSF33_CBC","SGD_SSF33_CFB","SGD_SSF33_OFB","SGD_SSF33_MAC","SGD_SM4_ECB","SGD_SM4_CBC","SGD_SM4_CFB","SGD_SM4_OFB","SGD_SM4_MAC","SGD_VENDOR_DEFINED","SGD_DES_ECB","SGD_DES_CBC","SGD_3DES168_ECB","SGD_3DES168_CBC","SGD_3DES112_ECB","SGD_3DES112_CBC","SGD_AES128_ECB","SGD_AES128_CBC","SGD_AES192_ECB","SGD_AES192_CBC","SGD_AES256_ECB","SGD_AES256_CBC","SGD_RSA","SGD_SM2_1","SGD_SM2_2","SGD_SM2_3","SGD_SM3","SGD_SHA1","SGD_SHA256","SGD_RAW","SGD_MD5","SGD_SHA384","SGD_SHA512","SGD_CERT_VERSION","SGD_CERT_SERIAL","SGD_CERT_ISSUE","SGD_CERT_VALID_TIME","SGD_CERT_SUBJECT","SGD_CERT_DER_PUBLIC_KEY","SGD_CERT_DER_EXTENSIONS","SGD_CERT_NOT_BEFORE","SGD_CERT_ISSUER_CN","SGD_CERT_ISSUER_O","SGD_CERT_ISSUER_OU","SGD_CERT_ISSUER_C","SGD_CERT_ISSUER_P","SGD_CERT_ISSUER_L","SGD_CERT_ISSUER_S","SGD_CERT_ISSUER_EMAIL","SGD_CERT_SUBJECT_CN","SGD_CERT_SUBJECT_O","SGD_CERT_SUBJECT_OU","SGD_CERT_SUBJECT_EMALL","SGD_REMAIN_TIME","SGD_SIGNATURE_ALG","SGD_CERT_SUBJECT_C","SGD_CERT_SUBJECT_P","SGD_CERT_SUBJECT_L","SGD_CERT_SUBJECT_S","SGD_CERT_CRL","SGD_DEVICE_SORT","SGD_DEVICE_TYPE","SGD_DEVICE_NAME","SGD_DEVICE_MANUFACTURER","SGD_DEVICE_HARDWARE_VERSION","SGD_DEVICE_SOFTWARE_VERSION","SGD_DEVICE_STANDARD_VERSION","SGD_DEVICE_SERIAL_NUMBER","SGD_DEVICE_SUPPORT_SYM_ALG","SGD_DEVICE_SUPPORT_ASYM_ALG","SGD_DEVICE_SUPPORT_HASH_ALG","SGD_DEVICE_SUPPORT_STORANGE_SPACE","SGD_DEVICE_SUPPORT_FREE_SAPCE","SGD_DEVICE_RUNTIME","SGD_DEVICE_USED_TIMES","SGD_DEVICE_LOCATION","SGD_DEVICE_DESCRIPTION","SGD_DEVICE_MANAGER_INFO","SGD_DEVICE_MAX_DATA_SIZE","TRUE","FALSE","GM3000","K5","TF","HT","SJK1137","TYPE_UKEY","TYPE_FPKEY","g_mTokenPlugin","isMobile","browser","u","appVersion","trident","presto","webKit","gecko","mobile","ios","android","iPhone","iPad","webApp","language","browserLanguage","SOF_GetLastError","SOF_LoadLibrary","os","check_os","mTokenPlugin","SOF_EnumDevice","array","SOF_GetDeviceInstance","DeviceName","ApplicationName","SOF_ReleaseDeviceInstance","list","user","KeySpec","SOF_GetDeviceInfo","Type","Base64EncodeCert","SOF_GetCertInfoByOid","OID","PassWd","SOF_LogOut","SOF_ChangePassWd","OldPassWd","NewPassWd","SOF_SetDigestMethod","DigestMethod","SOF_SetUserID","UserID","SOF_SetEncryptMethodAndIV","EncryptMethod","EncryptIV","SOF_EncryptFileToPKCS7","Cert","InFile","OutFile","SOF_SignFileToPKCS7","SOF_VerifyFileToPKCS7","strPkcs7Data","InFilePath","SOF_DecryptFileToPKCS7","keySpec","Pkcs7Data","SOF_DigestData","nData","InDataLen","ulKeySpec","InData","SOF_SignDataInteractive","SOF_SignDataToPKCS7","ulDetached","SOF_VerifyDataToPKCS7","SignedValue","digestMethod","SOF_EncryptDataPKCS7","SOF_DecryptDataPKCS7","SOF_GenRemoteUnblockRequest","SOF_GenResetpwdResponse","request","soPin","userPin","SOF_RemoteUnblockPIN","OriginalText","SOF_ExportPubKey","containerName","cerType","expType","SOF_EncryptByPubKey","strPubKey","strInput","SOF_DecryptByPrvKey","strAsymCipher","SOF_GenerateP10Request","deviceName","container","dn","asymAlg","keyLength","SOF_EnumCertContiner","SOF_FindContainer","certSN","SOF_DeleteCert","SOF_DeleteContainer","SOF_SignByCert","plain","SOF_VerifyByCert","signature","SOF_ImportCert","cert","SOF_ImportCryptoCertAndKey","nAsymAlg","EncryptedSessionKeyData","symAlg","EncryptedPrivateKeyData","SOF_VerifyByExtCert","SOF_GenerateRandom","SOF_SymEncryptFile","sessionKey","srcfile","destfile","SOF_SymDecryptFile","SOF_SymEncryptData","SOF_SymDecryptData","SOF_GenerateQRCode","qrcode_text","SOF_VerifyPinMS","responseKey","SOF_GetHardwareType","SOF_VerifyFingerprint","SOF_EnumFiles","SOF_ReadFile","fileName","offset","SOF_WriteFile","SOF_CreateFile","readRight","writeRight","SOF_DeleteFile","hasPlugin","plugins","windows","linux","linuxWin","undef","nativeSplit","compliantExecNpcg","str","separator","limit","separator2","lastIndex","lastLength","output","flags","ignoreCase","multiline","extended","sticky","lastLastIndex","RegExp","_xmlhttp","retJSON","_curDevName","AjaxIO","json_in","router","json","invoke","_url","XMLHttpRequest","open","setRequestHeader","GetHttpResult","status","responseText","errorCode","rtn","mac","info","envelopData","signed","digest","InDataBase64","encrypedData","decryptedData","pkcs7","pubKey","asymCipher","asymPlain","SOF_CreateKeyPair","outData","qrcode_text_in","SocketConnect","HostName","Port","SocketDisConnect","SocketSendText","SendText","RecvText","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","resolve","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","__esModule","d","definition","prop","r","toStringTag","p","currentScript","src","render","_vm","_c","_self","attrs","title","isShow","on","handleClose","ref","imgs","accuracy","sliderText","onSuccess","onFail","onAgain","onRefresh","onFulfilled","staticRenderFns","staticClass","style","width","class","loadBlock","show","refresh","_e","containerActive","containerSuccess","containerFail","sliderMaskWidth","left","sliderLeft","sliderDown","touchStartEvent","$event","handleMoveEvent","handleMoveEndEvent","_v","_s","PI","sum","y","square","props","l","default","Boolean","canvasCtx","blockCtx","block","block_x","block_y","L","img","originX","originY","isMouseDown","trail","success","timestamp","mounted","init","methods","initDom","initImg","bindEvents","$refs","canvas","getContext","createImg","drawBlock","drawImage","_y","ImageData","getImageData","putImageData","getRandomNumberByRange","draw","operation","beginPath","moveTo","arc","lineTo","lineWidth","fillStyle","strokeStyle","stroke","globalCompositeOperation","onload","crossOrigin","getRandomImg","start","end","round","reset","$emit","event","clientX","clientY","changedTouches","pageX","pageY","addEventListener","throttle","moveX","moveY","blockLeft","spliced","TuringTest","verify","setTimeout","arr","average","reduce","deviations","stddev","sqrt","abs","clearRect","destroyed","removeEventListener","interval","leading","trailing","resultCallback","lastTime","timer","_throttle","args","Promise","reject","nowTime","remainTime","clearTimeout","cancel","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","component","components","SlideVerify","countDownNum","computed","watch","newVal","slideblock","created","staticStyle","visible","jumpPage","regular","_t","_m","directives","rawName","expression","require","enlarge","close","_l","messagelist","domProps","regularClick","based","handExpand","isActive","minRows","maxRows","nativeOn","_k","keyCode","carriageReturn","model","textareaValue","$$v","commit","questions","search","filter","faq","vlaue","prev","curr","fun","$nextTick","main","scrollTop","scrollHeight","mixins","chatMixin","chatVue","hasSlot","$slots","$route","to","path","customer","display","currData","preventDefault","activeNames","questionsList","slot","getHours","getMinutes","loginForm","loginRules","username","caLoading","caRead","handleLogin","password","$set","loading","dialogVisible","showInfo","caInfo","error_text","_keyStr","_Base64encode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","_utf8_encode","charCodeAt","isNaN","charAt","in_string","utftext","c","fromCharCode","hunca_mToken_core","libraryNameList","platform","LAST_ERRORSTRING","KEY_SPEC_TYPE_ENCRYPT","KEY_SPEC_TYPE_SIGN","USER_ID","ERROR_MESSAGE_NOT_LOADLIBRARY","ERROR_MESSAGE_NOT_FIND_UKEY","ERROR_MESSAGE_NOT_INSTANCE_DEVICE","ERROR_MESSAGE_USERPIN_LENGTH","ERROR_MESSAGE_USERPIN_IS_ERROR","ERROR_MESSAGE_USERPIN_CHANGE_ERROR","ERROR_MESSAGE_KEY_NOT_EXIT","ERROR_MESSAGE_USERNAME_IS_NULL","ERROR_MESSAGE_KEY_EXPORT_CERT","ERROR_MESSAGE_SET_DIGEST_METHOD_ERROR","ERROR_MESSAGE_SET_USERID_ERROR","ERROR_MESSAGE_SIGN_ORIGINALDATA_IS_NULL","ERROR_MESSAGE_SIGN_ERROR","ERROR_MESSAGE_USERNAMEGN_IS_NULL","ERROR_MESSAGE_USERNAMEGN_TO_USERNAME_ERROR","ERROR_MESSAGE_KEY_LIBRAY","ERROR_MESSAGE_ENCRYPT_DATA_IS_NULL","ERROR_MESSAGE_DECRYPT_DATA_IS_NULL","ERROR_MESSAGE_DECRYPT_DATA_IS_ERROR","ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_FAIL","ERROR_MESSAGE_GET_REMOTEUNLOCKREQUEST_NOT_SUPPORT","ERROR_MESSAGE_REMOTE_UNLOCK_FAIL","tokenInfoList","signResultSignData","signResultCert","certSn","cert_subject_GN","cert_subject","cert_validTime","cert_notbeforetime","libraryName","resultCode","deviceNameList","m_userPin","RetryCount","SOF_ChangeUserPin","oldUserPin","newUserPin","m_oldUserPin","m_newUserPin","SOF_GetDeviceNumber","deviceNumber","keySec","certBase64","resCode","encryptData","inDataBase64","m_inData","m_EncrypedData","m_DecryptData","signData","b64Data","m_data","subject","tmpList","validTime","notBeforetime","hexToDec","SOF_RemoteUnlockPIN","response","base","z","carry","xi","yi","zi","multiplyByNumber","num","power","parseToDigitsArray","digits","ary","convertBase","fromBase","toBase","outArray","out","hexStr","Hunca_GetLastError","Hunca_GetUserList","deviceArray","userName","tmpInfo","tokenInfo","serial","userNameList","Hunca_GetUserListGN","certB64","deviceSerial","subjectGN","userNameGNList","Hunca_userNameGNToUserName","userNameGN","Hunca_GenRemoteUnblockRequest","tempTokenInfo","HUnca_GetDeviceNumber","m_devNumber","Hunca_RemoteUnlockPIN","Hunca_ChangeUserPin","Hunca_PKCS1","originalData","Hunca_GetSignData","Hunca_GetSignCert","Hunca_GetSignCertSn","Hunca_GetSignCertSubject","Hunca_GetValidTime","HUnca_GetNotBeforeTime","Hunca_DealCertInfo","signResultInfo","certInfo","Hunca_EncryptDataPKCS7","m_EncryptMethod","m_EncryptIV","Hunca_DecryptDataPKCS7","m_EncryptData","resData","_Base64decode","formateTime","dateStr","year","month","date","minute","second","region","form","have_error_info","uuid","ca","required","trigger","message","isBJCA","caReadBeijin","tempName","caLogin","flag","HNCALogin","$message","tempuserName","rn","ca_cert","sign","cert_notBeforeTime","tempinfo","tempinfo1","forEach","caAddr","ST","OU","caCode","TITLE","caName","GN","caSn","caEffectiveDate","caExpireDate","loginType","validate","valid","BJCALogin","msgErr","certId","time_begin","passwd","SOF_LoginEx","login_callback","begin","that","BJSignData","err","signData_callback","userCert","certInfoTypeArray","caAddrProvince","label","caAddrcity","caType","bindParams","v","pass","done","$confirm","then","catch","YcSlideVerify","YcCustomerService","YcQuestion","YcCA","install","Vue"],"sourceRoot":""}
|