yc-ui2 0.1.2-beta24 → 0.1.2-beta25
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/css/286.00e562fe.css +1 -0
- package/dist/css/774.de9a931f.css +139 -0
- package/dist/css/94.de9a931f.css +139 -0
- package/dist/yc-ui2.common.94.js +442 -0
- package/dist/yc-ui2.common.94.js.map +1 -0
- package/dist/yc-ui2.common.js +370 -107
- package/dist/yc-ui2.common.js.map +1 -1
- package/dist/yc-ui2.css +1 -1
- package/dist/yc-ui2.umd.774.js +442 -0
- package/dist/yc-ui2.umd.774.js.map +1 -0
- package/dist/yc-ui2.umd.js +370 -107
- package/dist/yc-ui2.umd.js.map +1 -1
- package/dist/yc-ui2.umd.min.286.js +2 -0
- package/dist/yc-ui2.umd.min.286.js.map +1 -0
- 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/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","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/ensure chunk","webpack://yc-ui2/webpack/runtime/get javascript chunk filename","webpack://yc-ui2/webpack/runtime/get mini-css chunk filename","webpack://yc-ui2/webpack/runtime/global","webpack://yc-ui2/webpack/runtime/hasOwnProperty shorthand","webpack://yc-ui2/webpack/runtime/load script","webpack://yc-ui2/webpack/runtime/make namespace object","webpack://yc-ui2/webpack/runtime/publicPath","webpack://yc-ui2/webpack/runtime/css loading","webpack://yc-ui2/webpack/runtime/jsonp chunk loading","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/./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 ","/* 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","'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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"yc-ui2.umd.min.\" + chunkId + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + \"00e562fe\" + \".css\";\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); }","var inProgress = {};\nvar dataWebpackPrefix = \"yc-ui2:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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 = \"\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t859: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"286\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t859: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = (typeof self !== 'undefined' ? self : this)[\"webpackChunkyc_ui2\"] = (typeof self !== 'undefined' ? self : this)[\"webpackChunkyc_ui2\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/* 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 components: {\r\n slideVerify: () =>\r\n import(\"vue-monoplasty-slide-verify/src/lib/slide-verify\"),\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=27550b14&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=27550b14&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 \"27550b14\",\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","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","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","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","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","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","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","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__","m","__esModule","d","definition","chunkId","Promise","reduce","promises","miniCssF","prop","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","s","getAttribute","charset","timeout","nc","src","onScriptComplete","prev","event","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","head","r","toStringTag","p","createStylesheet","fullhref","oldTag","reject","linkTag","rel","onLinkComplete","errorType","realHref","err","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","then","installedChunks","j","installedChunkData","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","currentScript","_vm","_c","_self","attrs","title","isShow","on","handleClose","ref","imgs","accuracy","sliderText","onSuccess","onFail","onAgain","onRefresh","onFulfilled","components","slideVerify","props","default","Boolean","countDownNum","computed","watch","newVal","$refs","slideblock","reset","created","methods","$emit","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","search","filter","faq","vlaue","curr","fun","$nextTick","main","scrollTop","scrollHeight","mixins","chatMixin","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","isBJCA","caReadBeijin","tempName","caLogin","flag","HNCALogin","$message","tempuserName","rn","ca_cert","sign","cert_notBeforeTime","tempinfo","tempinfo1","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","signData_callback","userCert","certInfoTypeArray","caAddrProvince","label","caAddrcity","caType","bindParams","v","pass","$confirm","catch","YcSlideVerify","YcCustomerService","YcQuestion","YcCA","install","Vue"],"sourceRoot":""}
|