apacuana-sdk-core 0.1.0 → 0.2.0
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/README.md +117 -46
- package/coverage/clover.xml +205 -91
- package/coverage/coverage-final.json +9 -6
- package/coverage/lcov-report/index.html +48 -33
- package/coverage/lcov-report/src/api/certs.js.html +74 -83
- package/coverage/lcov-report/src/api/index.html +36 -21
- package/coverage/lcov-report/src/api/revocations.js.html +1 -1
- package/coverage/lcov-report/src/api/signatures.js.html +528 -81
- package/coverage/lcov-report/src/api/users.js.html +5 -2
- package/coverage/lcov-report/src/config/index.html +21 -21
- package/coverage/lcov-report/src/config/index.js.html +65 -32
- package/coverage/lcov-report/src/errors/index.html +5 -5
- package/coverage/lcov-report/src/errors/index.js.html +13 -10
- package/coverage/lcov-report/src/index.html +1 -1
- package/coverage/lcov-report/src/index.js.html +13 -4
- package/coverage/lcov-report/src/utils/constant.js.html +4 -4
- package/coverage/lcov-report/src/utils/helpers.js.html +268 -145
- package/coverage/lcov-report/src/utils/httpClient.js.html +646 -0
- package/coverage/lcov-report/src/utils/index.html +32 -17
- package/coverage/lcov.info +429 -167
- package/dist/index.js +390 -150
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +390 -150
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/api/certs.js +27 -30
- package/src/api/signatures.js +205 -50
- package/src/api/users.js +1 -0
- package/src/errors/index.js +1 -0
- package/src/index.js +4 -1
- package/src/utils/helpers.js +140 -99
- package/tests/api/certs.test.js +126 -4
- package/tests/api/signatures.test.js +207 -4
- package/tests/api/users.test.js +1 -0
- package/src/auth/index.js +0 -24
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">41.26% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>26/63</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">31.64% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>25/79</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">37.5% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>3/8</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">41.66% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>25/60</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -229,64 +229,142 @@
|
|
|
229
229
|
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
230
|
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
231
|
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
274
|
+
<span class="cline-any cline-neutral"> </span>
|
|
275
|
+
<span class="cline-any cline-neutral"> </span>
|
|
276
|
+
<span class="cline-any cline-neutral"> </span>
|
|
277
|
+
<span class="cline-any cline-neutral"> </span>
|
|
278
|
+
<span class="cline-any cline-yes">2x</span>
|
|
279
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
|
+
<span class="cline-any cline-yes">2x</span>
|
|
281
|
+
<span class="cline-any cline-yes">1x</span>
|
|
282
|
+
<span class="cline-any cline-no"> </span>
|
|
233
283
|
<span class="cline-any cline-neutral"> </span>
|
|
284
|
+
<span class="cline-any cline-yes">1x</span>
|
|
285
|
+
<span class="cline-any cline-no"> </span>
|
|
234
286
|
<span class="cline-any cline-neutral"> </span>
|
|
235
287
|
<span class="cline-any cline-neutral"> </span>
|
|
236
288
|
<span class="cline-any cline-neutral"> </span>
|
|
237
289
|
<span class="cline-any cline-neutral"> </span>
|
|
238
290
|
<span class="cline-any cline-yes">1x</span>
|
|
239
291
|
<span class="cline-any cline-no"> </span>
|
|
240
|
-
<span class="cline-any cline-
|
|
292
|
+
<span class="cline-any cline-yes">1x</span>
|
|
293
|
+
<span class="cline-any cline-neutral"> </span>
|
|
241
294
|
<span class="cline-any cline-neutral"> </span>
|
|
242
|
-
<span class="cline-any cline-no"> </span>
|
|
243
|
-
<span class="cline-any cline-no"> </span>
|
|
244
295
|
<span class="cline-any cline-neutral"> </span>
|
|
245
296
|
<span class="cline-any cline-neutral"> </span>
|
|
246
297
|
<span class="cline-any cline-neutral"> </span>
|
|
247
298
|
<span class="cline-any cline-neutral"> </span>
|
|
248
299
|
<span class="cline-any cline-no"> </span>
|
|
300
|
+
<span class="cline-any cline-neutral"> </span>
|
|
301
|
+
<span class="cline-any cline-yes">1x</span>
|
|
249
302
|
<span class="cline-any cline-no"> </span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
304
|
+
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
250
307
|
<span class="cline-any cline-no"> </span>
|
|
251
308
|
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-yes">1x</span>
|
|
310
|
+
<span class="cline-any cline-yes">1x</span>
|
|
252
311
|
<span class="cline-any cline-neutral"> </span>
|
|
312
|
+
<span class="cline-any cline-yes">1x</span>
|
|
253
313
|
<span class="cline-any cline-neutral"> </span>
|
|
314
|
+
<span class="cline-any cline-no"> </span>
|
|
254
315
|
<span class="cline-any cline-neutral"> </span>
|
|
255
316
|
<span class="cline-any cline-neutral"> </span>
|
|
256
317
|
<span class="cline-any cline-neutral"> </span>
|
|
318
|
+
<span class="cline-any cline-yes">2x</span>
|
|
319
|
+
<span class="cline-any cline-no"> </span>
|
|
257
320
|
<span class="cline-any cline-no"> </span>
|
|
258
321
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-no"> </span>
|
|
259
325
|
<span class="cline-any cline-no"> </span>
|
|
260
326
|
<span class="cline-any cline-no"> </span>
|
|
261
327
|
<span class="cline-any cline-no"> </span>
|
|
262
328
|
<span class="cline-any cline-neutral"> </span>
|
|
263
329
|
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-yes">2x</span>
|
|
331
|
+
<span class="cline-any cline-yes">2x</span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
335
|
<span class="cline-any cline-neutral"> </span>
|
|
265
|
-
<span class="cline-any cline-no"> </span>
|
|
266
336
|
<span class="cline-any cline-neutral"> </span>
|
|
337
|
+
<span class="cline-any cline-yes">2x</span>
|
|
338
|
+
<span class="cline-any cline-neutral"> </span>
|
|
339
|
+
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-yes">2x</span>
|
|
267
341
|
<span class="cline-any cline-no"> </span>
|
|
268
342
|
<span class="cline-any cline-no"> </span>
|
|
269
343
|
<span class="cline-any cline-neutral"> </span>
|
|
270
|
-
<span class="cline-any cline-no"> </span>
|
|
271
344
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
+
<span class="cline-any cline-neutral"> </span>
|
|
346
|
+
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-neutral"> </span>
|
|
348
|
+
<span class="cline-any cline-neutral"> </span>
|
|
349
|
+
<span class="cline-any cline-no"> </span>
|
|
272
350
|
<span class="cline-any cline-no"> </span>
|
|
273
351
|
<span class="cline-any cline-neutral"> </span>
|
|
274
352
|
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-yes">1x</span>
|
|
276
353
|
<span class="cline-any cline-neutral"> </span>
|
|
277
354
|
<span class="cline-any cline-neutral"> </span>
|
|
278
355
|
<span class="cline-any cline-neutral"> </span>
|
|
279
|
-
<span class="cline-any cline-
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
280
357
|
<span class="cline-any cline-no"> </span>
|
|
281
358
|
<span class="cline-any cline-no"> </span>
|
|
282
359
|
<span class="cline-any cline-no"> </span>
|
|
283
360
|
<span class="cline-any cline-neutral"> </span>
|
|
284
361
|
<span class="cline-any cline-neutral"> </span>
|
|
285
|
-
<span class="cline-any cline-no"> </span>
|
|
286
362
|
<span class="cline-any cline-neutral"> </span>
|
|
287
363
|
<span class="cline-any cline-neutral"> </span>
|
|
288
364
|
<span class="cline-any cline-neutral"> </span>
|
|
289
365
|
<span class="cline-any cline-neutral"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
367
|
+
<span class="cline-any cline-no"> </span>
|
|
290
368
|
<span class="cline-any cline-neutral"> </span>
|
|
291
369
|
<span class="cline-any cline-neutral"> </span>
|
|
292
370
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -295,22 +373,23 @@
|
|
|
295
373
|
<span class="cline-any cline-neutral"> </span>
|
|
296
374
|
<span class="cline-any cline-no"> </span>
|
|
297
375
|
<span class="cline-any cline-neutral"> </span>
|
|
298
|
-
<span class="cline-any cline-no"> </span>
|
|
299
|
-
<span class="cline-any cline-no"> </span>
|
|
300
376
|
<span class="cline-any cline-neutral"> </span>
|
|
301
377
|
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-no"> </span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
302
380
|
<span class="cline-any cline-neutral"> </span>
|
|
303
381
|
<span class="cline-any cline-neutral"> </span>
|
|
304
382
|
<span class="cline-any cline-neutral"> </span>
|
|
305
383
|
<span class="cline-any cline-neutral"> </span>
|
|
306
384
|
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-
|
|
385
|
+
<span class="cline-any cline-no"> </span>
|
|
308
386
|
<span class="cline-any cline-no"> </span>
|
|
309
387
|
<span class="cline-any cline-no"> </span>
|
|
310
388
|
<span class="cline-any cline-neutral"> </span>
|
|
311
389
|
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-
|
|
313
|
-
<span class="cline-any cline-
|
|
390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
391
|
+
<span class="cline-any cline-neutral"> </span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
314
393
|
<span class="cline-any cline-neutral"> </span>
|
|
315
394
|
<span class="cline-any cline-neutral"> </span>
|
|
316
395
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -320,10 +399,13 @@
|
|
|
320
399
|
<span class="cline-any cline-neutral"> </span>
|
|
321
400
|
<span class="cline-any cline-neutral"> </span>
|
|
322
401
|
<span class="cline-any cline-neutral"> </span>
|
|
402
|
+
<span class="cline-any cline-neutral"> </span>
|
|
403
|
+
<span class="cline-any cline-neutral"> </span>
|
|
404
|
+
<span class="cline-any cline-neutral"> </span>
|
|
405
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
406
|
<span class="cline-any cline-no"> </span>
|
|
324
407
|
<span class="cline-any cline-no"> </span>
|
|
325
408
|
<span class="cline-any cline-neutral"> </span>
|
|
326
|
-
<span class="cline-any cline-no"> </span>
|
|
327
409
|
<span class="cline-any cline-neutral"> </span>
|
|
328
410
|
<span class="cline-any cline-neutral"> </span>
|
|
329
411
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -333,233 +415,274 @@
|
|
|
333
415
|
<span class="cline-any cline-neutral"> </span>
|
|
334
416
|
<span class="cline-any cline-neutral"> </span>
|
|
335
417
|
<span class="cline-any cline-neutral"> </span>
|
|
418
|
+
<span class="cline-any cline-yes">2x</span>
|
|
419
|
+
<span class="cline-any cline-yes">7x</span>
|
|
336
420
|
<span class="cline-any cline-neutral"> </span>
|
|
421
|
+
<span class="cline-any cline-yes">7x</span>
|
|
422
|
+
<span class="cline-any cline-yes">1x</span>
|
|
337
423
|
<span class="cline-any cline-neutral"> </span>
|
|
338
424
|
<span class="cline-any cline-neutral"> </span>
|
|
339
425
|
<span class="cline-any cline-neutral"> </span>
|
|
340
426
|
<span class="cline-any cline-neutral"> </span>
|
|
341
427
|
<span class="cline-any cline-neutral"> </span>
|
|
342
428
|
<span class="cline-any cline-neutral"> </span>
|
|
429
|
+
<span class="cline-any cline-yes">6x</span>
|
|
430
|
+
<span class="cline-any cline-yes">1x</span>
|
|
343
431
|
<span class="cline-any cline-neutral"> </span>
|
|
344
432
|
<span class="cline-any cline-neutral"> </span>
|
|
345
433
|
<span class="cline-any cline-neutral"> </span>
|
|
346
434
|
<span class="cline-any cline-neutral"> </span>
|
|
347
435
|
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-no"> </span>
|
|
349
436
|
<span class="cline-any cline-neutral"> </span>
|
|
437
|
+
<span class="cline-any cline-yes">5x</span>
|
|
438
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
439
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-no"> </span>
|
|
352
|
-
<span class="cline-any cline-no"> </span>
|
|
353
440
|
<span class="cline-any cline-neutral"> </span>
|
|
354
441
|
<span class="cline-any cline-neutral"> </span>
|
|
355
442
|
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-no"> </span>
|
|
357
|
-
<span class="cline-any cline-no"> </span>
|
|
358
443
|
<span class="cline-any cline-neutral"> </span>
|
|
359
444
|
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-yes">2x</span>
|
|
360
447
|
<span class="cline-any cline-no"> </span>
|
|
361
448
|
<span class="cline-any cline-neutral"> </span>
|
|
362
449
|
<span class="cline-any cline-neutral"> </span>
|
|
450
|
+
<span class="cline-any cline-neutral"> </span>
|
|
451
|
+
<span class="cline-any cline-neutral"> </span>
|
|
363
452
|
<span class="cline-any cline-no"> </span>
|
|
364
453
|
<span class="cline-any cline-neutral"> </span>
|
|
365
454
|
<span class="cline-any cline-neutral"> </span>
|
|
366
455
|
<span class="cline-any cline-neutral"> </span>
|
|
367
456
|
<span class="cline-any cline-neutral"> </span>
|
|
368
457
|
<span class="cline-any cline-neutral"> </span>
|
|
369
|
-
<span class="cline-any cline-
|
|
458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
370
459
|
<span class="cline-any cline-no"> </span>
|
|
371
460
|
<span class="cline-any cline-neutral"> </span>
|
|
372
461
|
<span class="cline-any cline-neutral"> </span>
|
|
373
462
|
<span class="cline-any cline-neutral"> </span>
|
|
463
|
+
<span class="cline-any cline-no"> </span>
|
|
374
464
|
<span class="cline-any cline-neutral"> </span>
|
|
375
465
|
<span class="cline-any cline-neutral"> </span>
|
|
376
466
|
<span class="cline-any cline-neutral"> </span>
|
|
377
467
|
<span class="cline-any cline-neutral"> </span>
|
|
378
468
|
<span class="cline-any cline-neutral"> </span>
|
|
379
|
-
<span class="cline-any cline-yes">1x</span>
|
|
380
|
-
<span class="cline-any cline-no"> </span>
|
|
381
|
-
<span class="cline-any cline-no"> </span>
|
|
382
469
|
<span class="cline-any cline-neutral"> </span>
|
|
383
470
|
<span class="cline-any cline-neutral"> </span>
|
|
384
471
|
<span class="cline-any cline-neutral"> </span>
|
|
385
|
-
<span class="cline-any cline-no"> </span>
|
|
386
|
-
<span class="cline-any cline-no"> </span>
|
|
387
|
-
<span class="cline-any cline-no"> </span>
|
|
388
|
-
<span class="cline-any cline-no"> </span>
|
|
389
472
|
<span class="cline-any cline-neutral"> </span>
|
|
390
473
|
<span class="cline-any cline-neutral"> </span>
|
|
391
|
-
<span class="cline-any cline-yes">1x</span>
|
|
392
474
|
<span class="cline-any cline-neutral"> </span>
|
|
393
475
|
<span class="cline-any cline-neutral"> </span>
|
|
394
476
|
<span class="cline-any cline-neutral"> </span>
|
|
395
477
|
<span class="cline-any cline-neutral"> </span>
|
|
396
478
|
<span class="cline-any cline-neutral"> </span>
|
|
397
479
|
<span class="cline-any cline-neutral"> </span>
|
|
398
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import
|
|
399
|
-
import * as asn1js from "asn1js";
|
|
480
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import CryptoJS from "crypto-js";
|
|
400
481
|
import { getCrypto } from "pkijs";
|
|
401
482
|
import { STATUS_CERTIFICATE, VERIFICATION_STATUS } from "./constant";
|
|
402
483
|
import { ApacuanaAPIError } from "../errors/index";
|
|
403
484
|
|
|
404
|
-
const
|
|
405
|
-
|
|
485
|
+
const KEY_HEX = "dRgUkXp2s5v8y/B?";
|
|
486
|
+
|
|
487
|
+
const getCertificateStatus = (userData, certificateInDevice) => {
|
|
488
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!userData) {
|
|
406
489
|
<span class="cstat-no" title="statement not covered" > throw new Error("El parámetro userData es requerido.");</span>
|
|
407
490
|
}
|
|
408
|
-
<span class="
|
|
491
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof certificateInDevice !== "boolean") {
|
|
409
492
|
<span class="cstat-no" title="statement not covered" > throw new Error(</span>
|
|
410
493
|
"El parámetro certificateInDevice es requerido y debe ser un valor booleano."
|
|
411
494
|
);
|
|
412
495
|
}
|
|
413
496
|
|
|
414
|
-
<span class="
|
|
497
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (userData?.verificationstatus?.id !== VERIFICATION_STATUS.APPROVED)
|
|
415
498
|
<span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.request;</span>
|
|
416
|
-
<span class="
|
|
499
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
417
500
|
userData?.certificationId &&
|
|
418
501
|
!userData?.cangenerate &&
|
|
419
502
|
!userData?.requestscert?.pending &&
|
|
420
503
|
!certificateInDevice &&
|
|
421
|
-
userData?.certificatestatus !== STATUS_CERTIFICATE.revoque
|
|
504
|
+
<span class="branch-4 cbranch-no" title="branch not covered" > userData?.certificatestatus !== STATUS_CERTIFICATE.revoque</span>
|
|
422
505
|
)
|
|
423
506
|
<span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.certificate_another_device;</span>
|
|
424
507
|
|
|
425
|
-
<span class="
|
|
508
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (userData?.requestscert?.pending && <span class="branch-1 cbranch-no" title="branch not covered" >userData?.certificationId)</span>
|
|
426
509
|
<span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.request_revoque;</span>
|
|
427
|
-
<span class="
|
|
510
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (
|
|
428
511
|
!userData?.cangenerate &&
|
|
429
512
|
userData?.certificatestatus === STATUS_CERTIFICATE.revoque
|
|
430
513
|
)
|
|
431
514
|
<span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.revoque;</span>
|
|
432
515
|
|
|
433
|
-
<span class="
|
|
434
|
-
<span class="
|
|
516
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!userData?.approvedUser) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.request;</span>
|
|
517
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (userData?.cangenerate) <span class="cstat-no" title="statement not covered" >return STATUS_CERTIFICATE.generate;</span>
|
|
435
518
|
|
|
436
|
-
<span class="
|
|
519
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (userData?.certificationId) return STATUS_CERTIFICATE.current;
|
|
437
520
|
|
|
438
521
|
<span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.revoque;</span>
|
|
439
522
|
};
|
|
440
523
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
const crypto = <span class="cstat-no" title="statement not covered" >getCrypto();</span>
|
|
447
|
-
<span class="cstat-no" title="statement not covered" > if (!crypto) {</span>
|
|
448
|
-
<span class="cstat-no" title="statement not covered" > throw new Error("API criptográfica no disponible a través de pkijs.");</span>
|
|
449
|
-
}
|
|
524
|
+
// Función para convertir ArrayBuffer a Base64
|
|
525
|
+
const arrayBufferToBase64 = <span class="fstat-no" title="function not covered" >(b</span>uffer) => {
|
|
526
|
+
const binary = <span class="cstat-no" title="statement not covered" >String.fromCharCode.apply(null, new Uint8Array(buffer));</span>
|
|
527
|
+
<span class="cstat-no" title="statement not covered" > return window.btoa(binary);</span>
|
|
528
|
+
};
|
|
450
529
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
530
|
+
async function <span class="fstat-no" title="function not covered" >exportPrivateKey(</span>key) {
|
|
531
|
+
const crypto = <span class="cstat-no" title="statement not covered" >getCrypto();</span>
|
|
532
|
+
const exported = <span class="cstat-no" title="statement not covered" >await crypto.exportKey("pkcs8", key);</span>
|
|
533
|
+
const exportablePrivateKey = <span class="cstat-no" title="statement not covered" >new Uint8Array(exported);</span>
|
|
534
|
+
<span class="cstat-no" title="statement not covered" > return arrayBufferToBase64(exportablePrivateKey);</span>
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
const encryptedCsr = (csr, encryptKey = KEY_HEX) => {
|
|
538
|
+
const body = {
|
|
539
|
+
csr: CryptoJS.AES.encrypt(csr, encryptKey, {
|
|
540
|
+
mode: CryptoJS.mode.ECB,
|
|
541
|
+
padding: CryptoJS.pad.Pkcs7,
|
|
542
|
+
}).toString(),
|
|
543
|
+
};
|
|
544
|
+
return body;
|
|
545
|
+
};
|
|
546
|
+
|
|
547
|
+
const validateOnBoardingSignerData = <span class="fstat-no" title="function not covered" >(s</span>ignerData) => {
|
|
548
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.name || typeof signerData.name !== "string") {</span>
|
|
549
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
550
|
+
'El campo "name" es requerido y debe ser una cadena de texto.',
|
|
551
|
+
400,
|
|
552
|
+
"INVALID_PARAMETER_FORMAT"
|
|
460
553
|
);
|
|
554
|
+
}
|
|
461
555
|
|
|
462
|
-
<span class="cstat-no" title="statement not covered" >
|
|
463
|
-
} catch (error) {
|
|
464
|
-
<span class="cstat-no" title="statement not covered" > console.error("Error durante la generación del par de claves:", error);</span>
|
|
556
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.reference || typeof signerData.reference !== "string") {</span>
|
|
465
557
|
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
"
|
|
558
|
+
'El campo "reference" es requerido y debe ser una cadena de texto.',
|
|
559
|
+
400,
|
|
560
|
+
"INVALID_PARAMETER_FORMAT"
|
|
561
|
+
);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
const validDocTypes = <span class="cstat-no" title="statement not covered" >["V", "P", "E"];</span>
|
|
565
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.typedoc || !validDocTypes.includes(signerData.typedoc)) {</span>
|
|
566
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
567
|
+
'El campo "typedoc" es requerido y debe ser uno de los siguientes valores: V, P, E.',
|
|
568
|
+
400,
|
|
569
|
+
"INVALID_PARAMETER_FORMAT"
|
|
469
570
|
);
|
|
470
571
|
}
|
|
471
|
-
};
|
|
472
572
|
|
|
473
|
-
|
|
474
|
-
<span class="cstat-no" title="statement not covered" >
|
|
475
|
-
|
|
573
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.doc || typeof signerData.doc !== "string") {</span>
|
|
574
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
575
|
+
'El campo "doc" es requerido y debe ser una cadena de texto.',
|
|
576
|
+
400,
|
|
577
|
+
"INVALID_PARAMETER_FORMAT"
|
|
578
|
+
);
|
|
579
|
+
}
|
|
476
580
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
581
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
582
|
+
!Array.isArray(signerData.signature) ||
|
|
583
|
+
signerData.signature.length === 0
|
|
584
|
+
) {
|
|
585
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
586
|
+
'El campo "signature" es requerido y debe ser un array no vacío.',
|
|
587
|
+
400,
|
|
588
|
+
"INVALID_PARAMETER_FORMAT"
|
|
589
|
+
);
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
<span class="cstat-no" title="statement not covered" > signerData.signature.forEach(<span class="fstat-no" title="function not covered" >(s</span>ig, index) => {</span>
|
|
593
|
+
<span class="cstat-no" title="statement not covered" > if (!Number.isInteger(sig.page) || sig.page < 1) {</span>
|
|
594
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
595
|
+
`La página de la firma ${
|
|
596
|
+
index + 1
|
|
597
|
+
} debe ser un número entero positivo.`,
|
|
598
|
+
400,
|
|
599
|
+
"INVALID_PARAMETER_FORMAT"
|
|
481
600
|
);
|
|
482
601
|
}
|
|
483
|
-
|
|
484
|
-
<span class="cstat-no" title="statement not covered" >
|
|
485
|
-
|
|
602
|
+
|
|
603
|
+
<span class="cstat-no" title="statement not covered" > if (typeof sig.x !== "number" || sig.x < 0 || sig.x > 1) {</span>
|
|
604
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
605
|
+
`La coordenada X de la firma ${
|
|
606
|
+
index + 1
|
|
607
|
+
} debe ser un número entre 0 y 1.`,
|
|
608
|
+
400,
|
|
609
|
+
"INVALID_PARAMETER_FORMAT"
|
|
486
610
|
);
|
|
487
611
|
}
|
|
488
612
|
|
|
489
|
-
|
|
490
|
-
<span class="cstat-no" title="statement not covered" >
|
|
613
|
+
<span class="cstat-no" title="statement not covered" > if (typeof sig.y !== "number" || sig.y < 0 || sig.y > 1) {</span>
|
|
614
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
615
|
+
`La coordenada Y de la firma ${
|
|
616
|
+
index + 1
|
|
617
|
+
} debe ser un número entre 0 y 1.`,
|
|
618
|
+
400,
|
|
619
|
+
"INVALID_PARAMETER_FORMAT"
|
|
620
|
+
);
|
|
621
|
+
}
|
|
622
|
+
});
|
|
623
|
+
};
|
|
491
624
|
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
type: "2.5.4.6", // OID para 'Country' (C)
|
|
495
|
-
value: new asn1js.PrintableString({ value: userData.country || "VE" }),
|
|
496
|
-
},
|
|
497
|
-
{
|
|
498
|
-
type: "2.5.4.3", // OID para 'Common Name' (CN)
|
|
499
|
-
value: new asn1js.Utf8String({ value: userData.commonName || "N/A" }),
|
|
500
|
-
},
|
|
501
|
-
{
|
|
502
|
-
type: "1.2.840.113549.1.9.1", // OID para 'E-mail' (E)
|
|
503
|
-
value: new asn1js.IA5String({ value: userData.email }),
|
|
504
|
-
},
|
|
505
|
-
// Puedes agregar más atributos aquí, como:
|
|
506
|
-
// {
|
|
507
|
-
// type: '2.5.4.8', // OID para 'State or Province' (ST)
|
|
508
|
-
// value: new asn1js.Utf8String({ value: userData.state || 'N/A' }),
|
|
509
|
-
// },
|
|
510
|
-
// {
|
|
511
|
-
// type: '2.5.4.7', // OID para 'Locality' (L)
|
|
512
|
-
// value: new asn1js.Utf8String({ value: userData.locality || 'N/A' }),
|
|
513
|
-
// },
|
|
514
|
-
].filter(<span class="fstat-no" title="function not covered" >(a</span>ttr) => <span class="cstat-no" title="statement not covered" >attr.value.value)</span>; // Filtra atributos sin valor.
|
|
625
|
+
const validateCsr = (csr) => {
|
|
626
|
+
const base64Regex = /^[A-Za-z0-9+/=]+$/;
|
|
515
627
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
628
|
+
if (!csr) {
|
|
629
|
+
throw new ApacuanaAPIError(
|
|
630
|
+
"La solicitud de firma de certificado (CSR) es requerida.",
|
|
631
|
+
400,
|
|
632
|
+
"INVALID_PARAMETER"
|
|
519
633
|
);
|
|
634
|
+
}
|
|
520
635
|
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
636
|
+
if (typeof csr !== "string" || csr.trim() === "") {
|
|
637
|
+
throw new ApacuanaAPIError(
|
|
638
|
+
"El CSR debe ser una cadena de texto válida y no puede estar vacía.",
|
|
639
|
+
400,
|
|
640
|
+
"INVALID_PARAMETER_FORMAT"
|
|
641
|
+
);
|
|
642
|
+
}
|
|
524
643
|
|
|
525
|
-
|
|
526
|
-
|
|
644
|
+
if (!base64Regex.test(csr)) {
|
|
645
|
+
throw new ApacuanaAPIError(
|
|
646
|
+
"El CSR debe estar codificado en formato base64 válido.",
|
|
647
|
+
400,
|
|
648
|
+
"INVALID_PARAMETER_FORMAT"
|
|
649
|
+
);
|
|
650
|
+
}
|
|
651
|
+
};
|
|
527
652
|
|
|
528
|
-
|
|
529
|
-
<span class="cstat-no" title="statement not covered" >
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
// Manejo de errores centralizado.
|
|
535
|
-
<span class="cstat-no" title="statement not covered" > console.error("Error durante la generación del CSR:", error);</span>
|
|
653
|
+
const validateGetDocsData = <span class="fstat-no" title="function not covered" >(d</span>ata) => {
|
|
654
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
655
|
+
!data ||
|
|
656
|
+
typeof data.page === "undefined" ||
|
|
657
|
+
typeof data.size === "undefined"
|
|
658
|
+
) {
|
|
536
659
|
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
"
|
|
660
|
+
"Los parámetros 'page' y 'size' son requeridos.",
|
|
661
|
+
400,
|
|
662
|
+
"INVALID_PARAMETER"
|
|
540
663
|
);
|
|
541
664
|
}
|
|
542
|
-
};
|
|
543
665
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
666
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
667
|
+
typeof data.status !== "undefined" &&
|
|
668
|
+
![-1, 0, 1, 2].includes(data.status)
|
|
669
|
+
) {
|
|
670
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
671
|
+
"El parámetro 'status' no es válido. Los valores permitidos son: -1, 0, 1, 2.",
|
|
672
|
+
400,
|
|
673
|
+
"INVALID_PARAMETER"
|
|
674
|
+
);
|
|
675
|
+
}
|
|
548
676
|
};
|
|
549
677
|
|
|
550
|
-
export
|
|
551
|
-
const crypto = <span class="cstat-no" title="statement not covered" >getCrypto();</span>
|
|
552
|
-
const exported = <span class="cstat-no" title="statement not covered" >await crypto.exportKey("pkcs8", key);</span>
|
|
553
|
-
const exportablePrivateKey = <span class="cstat-no" title="statement not covered" >new Uint8Array(exported);</span>
|
|
554
|
-
<span class="cstat-no" title="statement not covered" > return arrayBufferToBase64(exportablePrivateKey);</span>
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
export const helpers = {
|
|
678
|
+
export default {
|
|
558
679
|
getCertificateStatus,
|
|
559
|
-
generateKeyPair,
|
|
560
|
-
generateCSR,
|
|
561
680
|
exportPrivateKey,
|
|
562
681
|
arrayBufferToBase64,
|
|
682
|
+
encryptedCsr,
|
|
683
|
+
validateOnBoardingSignerData,
|
|
684
|
+
validateCsr,
|
|
685
|
+
validateGetDocsData,
|
|
563
686
|
};
|
|
564
687
|
</pre></td></tr></table></pre>
|
|
565
688
|
|
|
@@ -568,7 +691,7 @@ export const helpers = {
|
|
|
568
691
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
569
692
|
Code coverage generated by
|
|
570
693
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
571
|
-
at 2025-08-
|
|
694
|
+
at 2025-08-22T15:34:11.195Z
|
|
572
695
|
</div>
|
|
573
696
|
<script src="../../prettify.js"></script>
|
|
574
697
|
<script>
|