UNPKG

@ideem/zsm-react-native

Version:

ZSM makes 2FA easy and invisible for everyone, all the time, using advanced cryptography like MPC to establish cryptographic proof of the origin of any transaction or login attempt, while eliminating opportunities for social engineering. ZSM has no relian

1 lines 8.62 kB
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule=true;exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _classPrivateFieldLooseBase2=_interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseBase"));var _classPrivateFieldLooseKey2=_interopRequireDefault(require("@babel/runtime/helpers/classPrivateFieldLooseKey"));var _webauthnClient=_interopRequireDefault(require("./webauthn-client"));var _zsmLogger=_interopRequireDefault(require("./zsm-logger"));var _zsmAPI=(0,_classPrivateFieldLooseKey2["default"])("zsmAPI");var UMFAClient=function(){function UMFAClient(config){var _this=this;Object.defineProperty(this,_zsmAPI,{writable:true,value:void 0});this.checkEnrollment=function(){var _ref=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(userIdentifier){var traceId,enrollmentDetails,_t;return _regenerator["default"].wrap(function(_context){while(1)switch(_context.prev=_context.next){case 0:if(userIdentifier===void 0){userIdentifier=_this.userIdentifier;}traceId=_zsmLogger["default"].generateTraceId();_context.prev=1;_zsmLogger["default"].debug("checkEnrollment called with userIdentifier: "+userIdentifier,traceId);_context.next=2;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].initializeZsm(userIdentifier);case 2:_context.next=3;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].webauthnRetrieve(userIdentifier,false,traceId);case 3:enrollmentDetails=_context.sent;return _context.abrupt("return",!!enrollmentDetails);case 4:_context.prev=4;_t=_context["catch"](1);_zsmLogger["default"].debug("checkEnrollment failed: "+_t.message,traceId);return _context.abrupt("return",false);case 5:case"end":return _context.stop();}},_callee,null,[[1,4]]);}));return function(_x){return _ref.apply(this,arguments);};}();this.enroll=function(){var _ref2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(userIdentifier){var traceId,userIsEnrolled,creationResult,_t2;return _regenerator["default"].wrap(function(_context2){while(1)switch(_context2.prev=_context2.next){case 0:if(userIdentifier===void 0){userIdentifier=_this.userIdentifier;}traceId=_zsmLogger["default"].generateTraceId();_context2.prev=1;_zsmLogger["default"].debug("enroll called with userIdentifier: "+userIdentifier,traceId);_context2.next=2;return _this.checkEnrollment(userIdentifier);case 2:userIsEnrolled=_context2.sent;if(!(userIsEnrolled!==false)){_context2.next=3;break;}return _context2.abrupt("return",false);case 3:_context2.next=4;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].webauthnCreate(userIdentifier,traceId);case 4:creationResult=_context2.sent;if(!(creationResult instanceof Error)){_context2.next=5;break;}throw"Unable to enroll "+userIdentifier+" during the creation process!";case 5:return _context2.abrupt("return",(creationResult==null?void 0:creationResult.token)||creationResult);case 6:_context2.prev=6;_t2=_context2["catch"](1);_t2=_t2.message||_t2;_t2='Unable to complete enrollment: '+_t2;_zsmLogger["default"].trace("enroll failed: "+_t2);return _context2.abrupt("return",new Error(_t2));case 7:case"end":return _context2.stop();}},_callee2,null,[[1,6]]);}));return function(_x2){return _ref2.apply(this,arguments);};}();this.authenticate=function(){var _ref3=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(userIdentifier){var traceId,userIsEnrolled,authCredential,_t3;return _regenerator["default"].wrap(function(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(userIdentifier===void 0){userIdentifier=_this.userIdentifier;}traceId=_zsmLogger["default"].generateTraceId();_context3.prev=1;_zsmLogger["default"].debug("authenticate called with userIdentifier: "+userIdentifier,traceId);if((0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].identityId){_context3.next=3;break;}_zsmLogger["default"].debug("Getting identity for authentication: "+userIdentifier,traceId);_context3.next=2;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].checkIdentity(userIdentifier,false);case 2:_context3.next=4;break;case 3:_zsmLogger["default"].debug("Using existing identity_id for authentication: "+(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].identityId,traceId);case 4:_context3.next=5;return _this.checkEnrollment(userIdentifier);case 5:userIsEnrolled=_context3.sent;if(!(userIsEnrolled===false)){_context3.next=6;break;}throw userIdentifier+" is not enrolled.";case 6:_context3.next=7;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].webauthnPartialGet(userIdentifier,traceId);case 7:authCredential=_context3.sent;return _context3.abrupt("return",authCredential);case 8:_context3.prev=8;_t3=_context3["catch"](1);_t3=_t3.message||_t3;_t3='Unable to complete authentication: '+_t3;_zsmLogger["default"].trace("authenticate failed: "+_t3);return _context3.abrupt("return",new Error(_t3));case 9:case"end":return _context3.stop();}},_callee3,null,[[1,8]]);}));return function(_x3){return _ref3.apply(this,arguments);};}();this.resetDevice=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){return _regenerator["default"].wrap(function(_context4){while(1)switch(_context4.prev=_context4.next){case 0:(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].webauthnReset();case 1:case"end":return _context4.stop();}},_callee4);}));this.healthCheck=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(){var traceId,baseHealth,umfaHealth,enrollmentResult,errorResult,_t4,_t5;return _regenerator["default"].wrap(function(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_context5.prev=0;traceId=_zsmLogger["default"].generateTraceId();_zsmLogger["default"].info('Starting UMFA health check...',traceId);_context5.next=1;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmAPI)[_zsmAPI].healthCheck();case 1:baseHealth=_context5.sent;umfaHealth=(0,_extends2["default"])({},baseHealth,{umfa_client:{version:_this.version,config:_this.config,current_user:_this.userIdentifier||'NOT_SET',credential_id:_this.credentialID||'NOT_SET',enrollment_status:_this.credentialID?'ENROLLED':'NOT_ENROLLED'}});if(!_this.userIdentifier){_context5.next=5;break;}_zsmLogger["default"].trace('Testing UMFA enrollment check...',traceId);_context5.prev=2;_context5.next=3;return _this.checkEnrollment(_this.userIdentifier);case 3:enrollmentResult=_context5.sent;umfaHealth.umfa_client.enrollment_test={status:enrollmentResult instanceof Error?'FAILED':'OK',result:enrollmentResult instanceof Error?enrollmentResult.message:'User enrollment verified'};_context5.next=5;break;case 4:_context5.prev=4;_t4=_context5["catch"](2);umfaHealth.umfa_client.enrollment_test={status:'ERROR',error:_t4.message};case 5:_zsmLogger["default"].info("UMFA health check complete: "+umfaHealth.overall_status,traceId);_zsmLogger["default"].trace("Full UMFA health check result: "+JSON.stringify(umfaHealth),traceId);return _context5.abrupt("return",umfaHealth);case 6:_context5.prev=6;_t5=_context5["catch"](0);errorResult={timestamp:new Date().toISOString(),overall_status:'ERROR',umfa_client:{version:_this.version,error:_t5.message}};_zsmLogger["default"].trace("UMFA health check failed: "+_t5.message);return _context5.abrupt("return",errorResult);case 7:case"end":return _context5.stop();}},_callee5,null,[[0,6],[2,4]]);}));window.zsm={};this.config=config;(0,_classPrivateFieldLooseBase2["default"])(this,_zsmAPI)[_zsmAPI]=new _webauthnClient["default"](config);this.checkEnrollment=this.checkEnrollment.bind(this);this.enroll=this.enroll.bind(this);this.authenticate=this.authenticate.bind(this);this.resetDevice=this.resetDevice.bind(this);}return(0,_createClass2["default"])(UMFAClient,[{key:"userIdentifier",get:function get(){return(0,_classPrivateFieldLooseBase2["default"])(this,_zsmAPI)[_zsmAPI].userIdentifier;}},{key:"credentialID",get:function get(){return(0,_classPrivateFieldLooseBase2["default"])(this,_zsmAPI)[_zsmAPI].credentialID;}}],[{key:"version",get:function get(){return _webauthnClient["default"].version;}}]);}();var _default=exports["default"]=UMFAClient;