UNPKG

@ideem/zsm-react-native

Version:

ZSM React Native

1 lines 11.4 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 _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 _relyingParty2=_interopRequireDefault(require("./relying-party"));var _config=(0,_classPrivateFieldLooseKey2["default"])("config");var _relyingParty=(0,_classPrivateFieldLooseKey2["default"])("relyingParty");var _zsmApi=(0,_classPrivateFieldLooseKey2["default"])("zsmApi");var WebAuthnClientBase=function(){function WebAuthnClientBase(config){var _window,_this=this;Object.defineProperty(this,_config,{writable:true,value:{"application_id":"","api_key":"","host_url":"https://zsm-authenticator-demo.useideem.com/","application_environment":"TEST","installation_description":typeof window!=='undefined'?(_window=window)==null||(_window=_window.navigator)==null?void 0:_window.userAgent:'',"log_level":'Debug',"request_timeout_ms":30000,"retry_count":0,"consumer_id":""}});Object.defineProperty(this,_relyingParty,{writable:true,value:undefined});Object.defineProperty(this,_zsmApi,{writable:true,value:undefined});this.initializeZsm=function(){var _ref=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(userIdentifier){var rawAPI;return _regenerator["default"].wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:if(userIdentifier===void 0){userIdentifier=_this.userIdentifier;}(0,_classPrivateFieldLooseBase2["default"])(_this,_config)[_config].consumer_id=_this.userIdentifier=userIdentifier;if(typeof zsmAppConfig!=='undefined')zsmAppConfig=(0,_classPrivateFieldLooseBase2["default"])(_this,_config)[_config];if(!(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmApi)[_zsmApi]){_context.next=6;break;}_context.next=6;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmApi)[_zsmApi].configure((0,_classPrivateFieldLooseBase2["default"])(_this,_config)[_config]);case 6:_this.status="ZSM_INITIALIZING";_context.next=9;return _this.getZsmApi((0,_classPrivateFieldLooseBase2["default"])(_this,_config)[_config]);case 9:rawAPI=_context.sent;return _context.abrupt("return",Promise.resolve((0,_classPrivateFieldLooseBase2["default"])(_this,_zsmApi)[_zsmApi]=rawAPI));case 11:case"end":return _context.stop();}},_callee);}));return function(_x){return _ref.apply(this,arguments);};}();this.getZsmApi=function(){var _ref2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(config){return _regenerator["default"].wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:Promise.reject(new Error('Method not implemented'));case 1:case"end":return _context2.stop();}},_callee2);}));return function(_x2){return _ref2.apply(this,arguments);};}();this.toObject=function(inp){if(inp instanceof Map)return Object.fromEntries([].concat(inp.entries()).map(function(_ref3){var k=_ref3[0],v=_ref3[1];return[k,_this.toObject(v)];}));if(inp instanceof Array)return inp.map(function(v){return _this.toObject(v);});return inp;};this.checkIdentity=function(){var _ref4=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(userIdentifier,createNewIdentity){var resultOfCheck,identityID;return _regenerator["default"].wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:if(createNewIdentity===void 0){createNewIdentity=false;}_context3.prev=1;_this.status='CHECKING_IDENTITY_STARTING';_context3.next=5;return _this.initializeZsm(userIdentifier);case 5:_context3.next=7;return(0,_classPrivateFieldLooseBase2["default"])(_this,_relyingParty)[_relyingParty].checkServerSideIdentity(createNewIdentity);case 7:resultOfCheck=_context3.sent;if(resultOfCheck){_context3.next=10;break;}throw new Error('Unable to communicate with identity server!');case 10:identityID=resultOfCheck.identity_id;if(identityID){_context3.next=13;break;}throw new Error('Unable to acquire identity_id!');case 13:return _context3.abrupt("return",identityID);case 16:_context3.prev=16;_context3.t0=_context3["catch"](1);_this.status='CHECKING_IDENTITY_FAILED';return _context3.abrupt("return",Promise.reject(_context3.t0));case 20:case"end":return _context3.stop();}},_callee3,null,[[1,16]]);}));return function(_x3,_x4){return _ref4.apply(this,arguments);};}();this.webauthnCreate=function(){var _ref5=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(userIdentifier){var publicKey,webAuthnRes,credential;return _regenerator["default"].wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_this.status='ENROLLMENT_STARTING';_context4.next=3;return _this.initializeZsm(userIdentifier);case 3:_context4.next=5;return(0,_classPrivateFieldLooseBase2["default"])(_this,_relyingParty)[_relyingParty].registrationStart();case 5:publicKey=_context4.sent;_context4.t0=_this;_context4.next=9;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmApi)[_zsmApi].webauthn_create(publicKey);case 9:_context4.t1=_context4.sent;webAuthnRes=_context4.t0.toObject.call(_context4.t0,_context4.t1);if(webAuthnRes!=null&&webAuthnRes.result){_context4.next=13;break;}throw new Error(' [mpc_round] webauthnCreate failed');case 13:credential=webAuthnRes.result;if(credential.response){_context4.next=16;break;}throw new Error('Unable to acquire attestation object!');case 16:_context4.next=18;return(0,_classPrivateFieldLooseBase2["default"])(_this,_relyingParty)[_relyingParty].registrationFinish(credential);case 18:return _context4.abrupt("return",_context4.sent);case 19:case"end":return _context4.stop();}},_callee4);}));return function(_x5){return _ref5.apply(this,arguments);};}();this.webauthnGet=function(){var _ref6=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(userIdentifier){var pubKey,response,credential,output;return _regenerator["default"].wrap(function _callee5$(_context5){while(1)switch(_context5.prev=_context5.next){case 0:_this.status='AUTHENTICATION_STARTING';_context5.next=3;return _this.initializeZsm(userIdentifier);case 3:if(_this.isEnrolled){_context5.next=5;break;}throw new Error("Credential is missing for "+userIdentifier);case 5:_context5.next=7;return(0,_classPrivateFieldLooseBase2["default"])(_this,_relyingParty)[_relyingParty].authenticationStart(_this.credentialID);case 7:pubKey=_context5.sent.rcr.publicKey;_context5.t0=_this;_context5.next=11;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmApi)[_zsmApi].webauthn_get(pubKey);case 11:_context5.t1=_context5.sent;response=_context5.t0.toObject.call(_context5.t0,_context5.t1);credential=response.result;_context5.next=16;return(0,_classPrivateFieldLooseBase2["default"])(_this,_relyingParty)[_relyingParty].authenticationFinish(credential);case 16:output=_context5.sent;return _context5.abrupt("return",{signature:credential.response.signature,signedChallenge:credential.response.clientDataJSON,user_id:output.user_id,token:output.token,challenge:pubKey.challenge,credential:credential});case 18:case"end":return _context5.stop();}},_callee5);}));return function(_x6){return _ref6.apply(this,arguments);};}();this.webauthnRetrieve=function(){var _ref7=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(userIdentifier,silent){var _response$result,response;return _regenerator["default"].wrap(function _callee6$(_context6){while(1)switch(_context6.prev=_context6.next){case 0:if(silent===void 0){silent=false;}_this.credentialID=null;if(!silent){_this.status='CREDENTIAL_RETRIEVING';}_context6.prev=3;_context6.next=6;return _this.initializeZsm(userIdentifier);case 6:_context6.t0=_this;_context6.next=9;return(0,_classPrivateFieldLooseBase2["default"])(_this,_zsmApi)[_zsmApi].webauthn_retrieve(userIdentifier);case 9:_context6.t1=_context6.sent;response=_context6.t0.toObject.call(_context6.t0,_context6.t1);if(!(response.error||!(response!=null&&(_response$result=response.result)!=null&&_response$result.rawId))){_context6.next=13;break;}return _context6.abrupt("return",false);case 13:_this.credentialID=response.result.rawId;if(!silent){_this.status='CREDENTIAL_RETRIEVED';}return _context6.abrupt("return",_this.credentialID);case 18:_context6.prev=18;_context6.t2=_context6["catch"](3);_this.status='CREDENTIAL_RETRIEVAL_FAILED';throw _context6.t2;case 22:case"end":return _context6.stop();}},_callee6,null,[[3,18]]);}));return function(_x7,_x8){return _ref7.apply(this,arguments);};}();this.webauthnReset=function(){return(0,_classPrivateFieldLooseBase2["default"])(_this,_relyingParty)[_relyingParty].resetAll();};this.resetDevice=this.webauthnReset;if(!(config!=null&&config.authenticator_host_url))config.authenticator_host_url=config.host_url;if(!(config!=null&&config.zsm_host_url))config.zsm_host_url=config.host_url.replace("-authenticator","");config.host_url=config.zsm_host_url;(0,_classPrivateFieldLooseBase2["default"])(this,_config)[_config]=Object.assign((0,_classPrivateFieldLooseBase2["default"])(this,_config)[_config],config);if(typeof zsmAppConfig!=='undefined')zsmAppConfig=(0,_classPrivateFieldLooseBase2["default"])(this,_config)[_config];(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty]=new _relyingParty2["default"]((0,_classPrivateFieldLooseBase2["default"])(this,_config)[_config].authenticator_host_url,(0,_classPrivateFieldLooseBase2["default"])(this,_config)[_config].api_key,(0,_classPrivateFieldLooseBase2["default"])(this,_config)[_config].application_id);(0,_classPrivateFieldLooseBase2["default"])(this,_zsmApi)[_zsmApi];this.initializationMutex=false;}return(0,_createClass2["default"])(WebAuthnClientBase,[{key:"userIdentifier",get:function get(){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].customerDefinedIdentifier;},set:function set(v){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].customerDefinedIdentifier=v;}},{key:"customerDefinedIdentifier",get:function get(){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].customerDefinedIdentifier;},set:function set(v){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].customerDefinedIdentifier=v;}},{key:"username",get:function get(){return this.userIdentifier;},set:function set(v){return this.userIdentifier=v;}},{key:"userID",get:function get(){return this.userIdentifier;}},{key:"token",get:function get(){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].token;}},{key:"credentialID",get:function get(){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].credentialID;},set:function set(v){return(0,_classPrivateFieldLooseBase2["default"])(this,_relyingParty)[_relyingParty].credentialID=v;}},{key:"isEnrolled",get:function get(){return!!this.credentialID;}},{key:"version",get:function get(){return"ZSM WebAuthn client";}}]);}();var _default=exports["default"]=WebAuthnClientBase;