idmission-web-sdk 1.0.61 → 1.0.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ 'use strict'
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./sdk2.cjs.production.js')
5
+ } else {
6
+ module.exports = require('./sdk2.cjs.development.js')
7
+ }
@@ -7,7 +7,6 @@ var React = require('react');
7
7
  var ReactDOM = require('react-dom/client');
8
8
  var styled = require('styled-components');
9
9
  var reactI18next = require('react-i18next');
10
- var jsrsasign = require('jsrsasign');
11
10
  var tf = require('@tensorflow/tfjs');
12
11
  var useResizeObserver = require('use-resize-observer');
13
12
  var LanguageDetector = require('i18next-browser-languagedetector');
@@ -47,7 +46,7 @@ var LanguageDetector__default = /*#__PURE__*/_interopDefaultLegacy(LanguageDetec
47
46
  var i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
48
47
  var SignatureCanvas__default = /*#__PURE__*/_interopDefaultLegacy(SignatureCanvas);
49
48
 
50
- var webSdkVersion = '1.0.61';
49
+ var webSdkVersion = '1.0.62';
51
50
 
52
51
  function getPlatform() {
53
52
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -1108,7 +1107,7 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1108
1107
  React.useEffect(function () {
1109
1108
  (function () {
1110
1109
  return tslib.__awaiter(void 0, void 0, void 0, function () {
1111
- var parsed, iss, publicKey, resp, e_3, valid, exp;
1110
+ var parsed, iss, publicKey, resp, e_3, valid, parts, e_4, exp;
1112
1111
  return tslib.__generator(this, function (_a) {
1113
1112
  switch (_a.label) {
1114
1113
  case 0:
@@ -1123,28 +1122,44 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1123
1122
  iss = parsed.iss;
1124
1123
  _a.label = 1;
1125
1124
  case 1:
1126
- _a.trys.push([1, 3,, 4]);
1125
+ _a.trys.push([1, 4,, 5]);
1127
1126
  return [4 /*yield*/, fetch(iss).then(function (r) {
1128
1127
  return r.json();
1129
1128
  })];
1130
1129
  case 2:
1131
1130
  resp = _a.sent();
1132
- publicKey = jsrsasign.KEYUTIL.getKey("-----BEGIN PUBLIC KEY-----\n".concat(resp.public_key, "\n-----END PUBLIC KEY-----"));
1133
- return [3 /*break*/, 4];
1131
+ return [4 /*yield*/, importRsaKey("-----BEGIN PUBLIC KEY-----\n".concat(resp.public_key, "\n-----END PUBLIC KEY-----"))];
1134
1132
  case 3:
1133
+ publicKey = _a.sent();
1134
+ return [3 /*break*/, 5];
1135
+ case 4:
1135
1136
  e_3 = _a.sent();
1136
1137
  console.error('error fetching public key', e_3);
1137
1138
  setTokenError(new TokenPublicKeyError(e_3, iss));
1138
1139
  return [2 /*return*/, setTokenState('PUBLIC_KEY_LOAD_FAILED')];
1139
- case 4:
1140
+ case 5:
1140
1141
  valid = false;
1141
- try {
1142
- valid = jsrsasign.KJUR.jws.JWS.verifyJWT(token, publicKey, {
1143
- alg: ['RS256']
1144
- });
1145
- } catch (e) {
1146
- console.error('error validating token', e);
1147
- }
1142
+ _a.label = 6;
1143
+ case 6:
1144
+ _a.trys.push([6, 8,, 9]);
1145
+ parts = token.split('.');
1146
+ return [4 /*yield*/, window.crypto.subtle.verify({
1147
+ name: 'RSASSA-PKCS1-v1_5'
1148
+ }, publicKey,
1149
+ //from generateKey or importKey above
1150
+ str2ab(parts[1]),
1151
+ //ArrayBuffer of the signature
1152
+ str2ab(parts[2]) //ArrayBuffer of the data
1153
+ )];
1154
+ case 7:
1155
+ _a.sent();
1156
+ valid = true;
1157
+ return [3 /*break*/, 9];
1158
+ case 8:
1159
+ e_4 = _a.sent();
1160
+ console.error('error validating token', e_4);
1161
+ return [3 /*break*/, 9];
1162
+ case 9:
1148
1163
  if (!valid) return [2 /*return*/, setTokenState('INVALID_SIGNATURE')];
1149
1164
  exp = parsed.exp;
1150
1165
  if (Date.now() >= exp * 1000) {
@@ -1211,6 +1226,28 @@ var SubmissionProvider = function SubmissionProvider(_a) {
1211
1226
  onRetry: onRetry
1212
1227
  })));
1213
1228
  };
1229
+ function str2ab(str) {
1230
+ var buf = new ArrayBuffer(str.length);
1231
+ var bufView = new Uint8Array(buf);
1232
+ for (var i = 0, strLen = str.length; i < strLen; i++) {
1233
+ bufView[i] = str.charCodeAt(i);
1234
+ }
1235
+ return buf;
1236
+ }
1237
+ function importRsaKey(pem) {
1238
+ // fetch the part of the PEM string between header and footer
1239
+ var pemHeader = '-----BEGIN PUBLIC KEY-----';
1240
+ var pemFooter = '-----END PUBLIC KEY-----';
1241
+ var pemContents = pem.substring(pemHeader.length, pem.length - pemFooter.length - 1);
1242
+ // base64 decode the string to get the binary data
1243
+ var binaryDerString = window.atob(pemContents);
1244
+ // convert from a binary string to an ArrayBuffer
1245
+ var binaryDer = str2ab(binaryDerString);
1246
+ return window.crypto.subtle.importKey('spki', binaryDer, {
1247
+ name: 'RSASSA-PKCS1-v1_5',
1248
+ hash: 'SHA-256'
1249
+ }, true, ['verify']);
1250
+ }
1214
1251
 
1215
1252
  var DocumentType;
1216
1253
  (function (DocumentType) {