apacuana-sdk-core 0.1.0 → 0.3.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 +175 -55
- package/coverage/clover.xml +249 -101
- package/coverage/coverage-final.json +9 -6
- package/coverage/lcov-report/index.html +45 -30
- package/coverage/lcov-report/src/api/certs.js.html +117 -81
- package/coverage/lcov-report/src/api/index.html +40 -25
- package/coverage/lcov-report/src/api/revocations.js.html +1 -1
- package/coverage/lcov-report/src/api/signatures.js.html +546 -72
- package/coverage/lcov-report/src/api/users.js.html +25 -61
- 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 +290 -116
- package/coverage/lcov-report/src/utils/httpClient.js.html +646 -0
- package/coverage/lcov-report/src/utils/index.html +30 -15
- package/coverage/lcov.info +515 -181
- package/dist/index.js +323 -189
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +323 -189
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/api/certs.js +49 -37
- package/src/api/signatures.js +213 -49
- package/src/api/users.js +17 -29
- package/src/errors/index.js +1 -0
- package/src/index.js +4 -1
- package/src/utils/helpers.js +156 -98
- package/tests/api/certs.test.js +111 -5
- package/tests/api/signatures.test.js +152 -4
- package/tests/api/users.test.js +11 -10
- 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">12.12% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>8/66</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/86</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/
|
|
42
|
+
<span class='fraction'>0/9</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">12.69% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>8/63</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -229,13 +229,72 @@
|
|
|
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>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
233
291
|
<span class="cline-any cline-neutral"> </span>
|
|
234
292
|
<span class="cline-any cline-neutral"> </span>
|
|
235
293
|
<span class="cline-any cline-neutral"> </span>
|
|
236
294
|
<span class="cline-any cline-neutral"> </span>
|
|
295
|
+
<span class="cline-any cline-yes">2x</span>
|
|
237
296
|
<span class="cline-any cline-neutral"> </span>
|
|
238
|
-
<span class="cline-any cline-yes">
|
|
297
|
+
<span class="cline-any cline-yes">2x</span>
|
|
239
298
|
<span class="cline-any cline-no"> </span>
|
|
240
299
|
<span class="cline-any cline-no"> </span>
|
|
241
300
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -272,7 +331,10 @@
|
|
|
272
331
|
<span class="cline-any cline-no"> </span>
|
|
273
332
|
<span class="cline-any cline-neutral"> </span>
|
|
274
333
|
<span class="cline-any cline-neutral"> </span>
|
|
275
|
-
<span class="cline-any cline-
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-yes">2x</span>
|
|
336
|
+
<span class="cline-any cline-no"> </span>
|
|
337
|
+
<span class="cline-any cline-no"> </span>
|
|
276
338
|
<span class="cline-any cline-neutral"> </span>
|
|
277
339
|
<span class="cline-any cline-neutral"> </span>
|
|
278
340
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -282,18 +344,24 @@
|
|
|
282
344
|
<span class="cline-any cline-no"> </span>
|
|
283
345
|
<span class="cline-any cline-neutral"> </span>
|
|
284
346
|
<span class="cline-any cline-neutral"> </span>
|
|
347
|
+
<span class="cline-any cline-yes">2x</span>
|
|
285
348
|
<span class="cline-any cline-no"> </span>
|
|
286
349
|
<span class="cline-any cline-neutral"> </span>
|
|
287
350
|
<span class="cline-any cline-neutral"> </span>
|
|
288
351
|
<span class="cline-any cline-neutral"> </span>
|
|
289
352
|
<span class="cline-any cline-neutral"> </span>
|
|
290
353
|
<span class="cline-any cline-neutral"> </span>
|
|
354
|
+
<span class="cline-any cline-no"> </span>
|
|
355
|
+
<span class="cline-any cline-neutral"> </span>
|
|
356
|
+
<span class="cline-any cline-neutral"> </span>
|
|
357
|
+
<span class="cline-any cline-yes">2x</span>
|
|
358
|
+
<span class="cline-any cline-no"> </span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
291
360
|
<span class="cline-any cline-neutral"> </span>
|
|
292
361
|
<span class="cline-any cline-neutral"> </span>
|
|
293
362
|
<span class="cline-any cline-neutral"> </span>
|
|
294
363
|
<span class="cline-any cline-neutral"> </span>
|
|
295
364
|
<span class="cline-any cline-neutral"> </span>
|
|
296
|
-
<span class="cline-any cline-no"> </span>
|
|
297
365
|
<span class="cline-any cline-neutral"> </span>
|
|
298
366
|
<span class="cline-any cline-no"> </span>
|
|
299
367
|
<span class="cline-any cline-no"> </span>
|
|
@@ -303,10 +371,13 @@
|
|
|
303
371
|
<span class="cline-any cline-neutral"> </span>
|
|
304
372
|
<span class="cline-any cline-neutral"> </span>
|
|
305
373
|
<span class="cline-any cline-neutral"> </span>
|
|
306
|
-
<span class="cline-any cline-neutral"> </span>
|
|
307
|
-
<span class="cline-any cline-yes">1x</span>
|
|
308
374
|
<span class="cline-any cline-no"> </span>
|
|
309
375
|
<span class="cline-any cline-no"> </span>
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
378
|
+
<span class="cline-any cline-neutral"> </span>
|
|
379
|
+
<span class="cline-any cline-neutral"> </span>
|
|
380
|
+
<span class="cline-any cline-neutral"> </span>
|
|
310
381
|
<span class="cline-any cline-neutral"> </span>
|
|
311
382
|
<span class="cline-any cline-neutral"> </span>
|
|
312
383
|
<span class="cline-any cline-no"> </span>
|
|
@@ -314,15 +385,22 @@
|
|
|
314
385
|
<span class="cline-any cline-neutral"> </span>
|
|
315
386
|
<span class="cline-any cline-neutral"> </span>
|
|
316
387
|
<span class="cline-any cline-neutral"> </span>
|
|
388
|
+
<span class="cline-any cline-neutral"> </span>
|
|
389
|
+
<span class="cline-any cline-neutral"> </span>
|
|
390
|
+
<span class="cline-any cline-neutral"> </span>
|
|
317
391
|
<span class="cline-any cline-no"> </span>
|
|
392
|
+
<span class="cline-any cline-neutral"> </span>
|
|
393
|
+
<span class="cline-any cline-neutral"> </span>
|
|
394
|
+
<span class="cline-any cline-neutral"> </span>
|
|
318
395
|
<span class="cline-any cline-no"> </span>
|
|
319
396
|
<span class="cline-any cline-neutral"> </span>
|
|
320
397
|
<span class="cline-any cline-neutral"> </span>
|
|
321
398
|
<span class="cline-any cline-neutral"> </span>
|
|
322
399
|
<span class="cline-any cline-neutral"> </span>
|
|
400
|
+
<span class="cline-any cline-neutral"> </span>
|
|
401
|
+
<span class="cline-any cline-neutral"> </span>
|
|
323
402
|
<span class="cline-any cline-no"> </span>
|
|
324
403
|
<span class="cline-any cline-no"> </span>
|
|
325
|
-
<span class="cline-any cline-neutral"> </span>
|
|
326
404
|
<span class="cline-any cline-no"> </span>
|
|
327
405
|
<span class="cline-any cline-neutral"> </span>
|
|
328
406
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -332,6 +410,8 @@
|
|
|
332
410
|
<span class="cline-any cline-neutral"> </span>
|
|
333
411
|
<span class="cline-any cline-neutral"> </span>
|
|
334
412
|
<span class="cline-any cline-neutral"> </span>
|
|
413
|
+
<span class="cline-any cline-no"> </span>
|
|
414
|
+
<span class="cline-any cline-no"> </span>
|
|
335
415
|
<span class="cline-any cline-neutral"> </span>
|
|
336
416
|
<span class="cline-any cline-neutral"> </span>
|
|
337
417
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -340,32 +420,37 @@
|
|
|
340
420
|
<span class="cline-any cline-neutral"> </span>
|
|
341
421
|
<span class="cline-any cline-neutral"> </span>
|
|
342
422
|
<span class="cline-any cline-neutral"> </span>
|
|
423
|
+
<span class="cline-any cline-no"> </span>
|
|
424
|
+
<span class="cline-any cline-no"> </span>
|
|
425
|
+
<span class="cline-any cline-neutral"> </span>
|
|
343
426
|
<span class="cline-any cline-neutral"> </span>
|
|
344
427
|
<span class="cline-any cline-neutral"> </span>
|
|
345
428
|
<span class="cline-any cline-neutral"> </span>
|
|
346
429
|
<span class="cline-any cline-neutral"> </span>
|
|
347
430
|
<span class="cline-any cline-neutral"> </span>
|
|
348
|
-
<span class="cline-any cline-no"> </span>
|
|
349
431
|
<span class="cline-any cline-neutral"> </span>
|
|
350
432
|
<span class="cline-any cline-neutral"> </span>
|
|
351
|
-
<span class="cline-any cline-no"> </span>
|
|
352
|
-
<span class="cline-any cline-no"> </span>
|
|
353
433
|
<span class="cline-any cline-neutral"> </span>
|
|
354
434
|
<span class="cline-any cline-neutral"> </span>
|
|
435
|
+
<span class="cline-any cline-yes">2x</span>
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
355
437
|
<span class="cline-any cline-neutral"> </span>
|
|
356
438
|
<span class="cline-any cline-no"> </span>
|
|
357
439
|
<span class="cline-any cline-no"> </span>
|
|
358
440
|
<span class="cline-any cline-neutral"> </span>
|
|
359
441
|
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-no"> </span>
|
|
361
442
|
<span class="cline-any cline-neutral"> </span>
|
|
362
443
|
<span class="cline-any cline-neutral"> </span>
|
|
444
|
+
<span class="cline-any cline-neutral"> </span>
|
|
445
|
+
<span class="cline-any cline-neutral"> </span>
|
|
446
|
+
<span class="cline-any cline-no"> </span>
|
|
363
447
|
<span class="cline-any cline-no"> </span>
|
|
364
448
|
<span class="cline-any cline-neutral"> </span>
|
|
365
449
|
<span class="cline-any cline-neutral"> </span>
|
|
366
450
|
<span class="cline-any cline-neutral"> </span>
|
|
367
451
|
<span class="cline-any cline-neutral"> </span>
|
|
368
452
|
<span class="cline-any cline-neutral"> </span>
|
|
453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
369
454
|
<span class="cline-any cline-no"> </span>
|
|
370
455
|
<span class="cline-any cline-no"> </span>
|
|
371
456
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -375,32 +460,64 @@
|
|
|
375
460
|
<span class="cline-any cline-neutral"> </span>
|
|
376
461
|
<span class="cline-any cline-neutral"> </span>
|
|
377
462
|
<span class="cline-any cline-neutral"> </span>
|
|
378
|
-
<span class="cline-any cline-
|
|
379
|
-
<span class="cline-any cline-yes">1x</span>
|
|
463
|
+
<span class="cline-any cline-yes">2x</span>
|
|
380
464
|
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-neutral"> </span>
|
|
466
|
+
<span class="cline-any cline-neutral"> </span>
|
|
467
|
+
<span class="cline-any cline-neutral"> </span>
|
|
468
|
+
<span class="cline-any cline-neutral"> </span>
|
|
381
469
|
<span class="cline-any cline-no"> </span>
|
|
382
470
|
<span class="cline-any cline-neutral"> </span>
|
|
383
471
|
<span class="cline-any cline-neutral"> </span>
|
|
384
472
|
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
385
476
|
<span class="cline-any cline-no"> </span>
|
|
477
|
+
<span class="cline-any cline-neutral"> </span>
|
|
478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
479
|
+
<span class="cline-any cline-neutral"> </span>
|
|
386
480
|
<span class="cline-any cline-no"> </span>
|
|
481
|
+
<span class="cline-any cline-neutral"> </span>
|
|
482
|
+
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-neutral"> </span>
|
|
484
|
+
<span class="cline-any cline-neutral"> </span>
|
|
485
|
+
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-neutral"> </span>
|
|
487
|
+
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-yes">2x</span>
|
|
387
489
|
<span class="cline-any cline-no"> </span>
|
|
490
|
+
<span class="cline-any cline-neutral"> </span>
|
|
491
|
+
<span class="cline-any cline-neutral"> </span>
|
|
492
|
+
<span class="cline-any cline-neutral"> </span>
|
|
493
|
+
<span class="cline-any cline-neutral"> </span>
|
|
494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
495
|
+
<span class="cline-any cline-neutral"> </span>
|
|
388
496
|
<span class="cline-any cline-no"> </span>
|
|
389
497
|
<span class="cline-any cline-neutral"> </span>
|
|
390
498
|
<span class="cline-any cline-neutral"> </span>
|
|
391
|
-
<span class="cline-any cline-yes">1x</span>
|
|
392
499
|
<span class="cline-any cline-neutral"> </span>
|
|
393
500
|
<span class="cline-any cline-neutral"> </span>
|
|
394
501
|
<span class="cline-any cline-neutral"> </span>
|
|
395
502
|
<span class="cline-any cline-neutral"> </span>
|
|
396
503
|
<span class="cline-any cline-neutral"> </span>
|
|
397
504
|
<span class="cline-any cline-neutral"> </span>
|
|
398
|
-
<span class="cline-any cline-neutral"> </span
|
|
399
|
-
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import CryptoJS from "crypto-js";
|
|
400
515
|
import { getCrypto } from "pkijs";
|
|
401
516
|
import { STATUS_CERTIFICATE, VERIFICATION_STATUS } from "./constant";
|
|
402
517
|
import { ApacuanaAPIError } from "../errors/index";
|
|
403
518
|
|
|
519
|
+
const KEY_HEX = "dRgUkXp2s5v8y/B?";
|
|
520
|
+
|
|
404
521
|
const getCertificateStatus = <span class="fstat-no" title="function not covered" >(u</span>serData, certificateInDevice) => {
|
|
405
522
|
<span class="cstat-no" title="statement not covered" > if (!userData) {</span>
|
|
406
523
|
<span class="cstat-no" title="statement not covered" > throw new Error("El parámetro userData es requerido.");</span>
|
|
@@ -438,128 +555,185 @@ const getCertificateStatus = <span class="fstat-no" title="function not covered"
|
|
|
438
555
|
<span class="cstat-no" title="statement not covered" > return STATUS_CERTIFICATE.revoque;</span>
|
|
439
556
|
};
|
|
440
557
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
<span class="
|
|
448
|
-
<span class="cstat-no" title="statement not covered" >
|
|
449
|
-
|
|
558
|
+
// Función para convertir ArrayBuffer a Base64
|
|
559
|
+
const arrayBufferToBase64 = <span class="fstat-no" title="function not covered" >(b</span>uffer) => {
|
|
560
|
+
const binary = <span class="cstat-no" title="statement not covered" >String.fromCharCode.apply(null, new Uint8Array(buffer));</span>
|
|
561
|
+
<span class="cstat-no" title="statement not covered" > return window.btoa(binary);</span>
|
|
562
|
+
};
|
|
563
|
+
|
|
564
|
+
async function <span class="fstat-no" title="function not covered" >exportPrivateKey(</span>key) {
|
|
565
|
+
const crypto = <span class="cstat-no" title="statement not covered" >getCrypto();</span>
|
|
566
|
+
const exported = <span class="cstat-no" title="statement not covered" >await crypto.exportKey("pkcs8", key);</span>
|
|
567
|
+
const exportablePrivateKey = <span class="cstat-no" title="statement not covered" >new Uint8Array(exported);</span>
|
|
568
|
+
<span class="cstat-no" title="statement not covered" > return arrayBufferToBase64(exportablePrivateKey);</span>
|
|
569
|
+
}
|
|
450
570
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
571
|
+
const encryptedCsr = <span class="fstat-no" title="function not covered" >(c</span>sr, encryptKey = <span class="branch-0 cbranch-no" title="branch not covered" >KEY_HEX)</span> => {
|
|
572
|
+
const body = <span class="cstat-no" title="statement not covered" >{</span>
|
|
573
|
+
csr: CryptoJS.AES.encrypt(csr, encryptKey, {
|
|
574
|
+
mode: CryptoJS.mode.ECB,
|
|
575
|
+
padding: CryptoJS.pad.Pkcs7,
|
|
576
|
+
}).toString(),
|
|
577
|
+
};
|
|
578
|
+
<span class="cstat-no" title="statement not covered" > return body;</span>
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
const validateOnBoardingSignerData = <span class="fstat-no" title="function not covered" >(s</span>ignerData) => {
|
|
582
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.name || typeof signerData.name !== "string") {</span>
|
|
583
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
584
|
+
'El campo "name" es requerido y debe ser una cadena de texto.',
|
|
585
|
+
400,
|
|
586
|
+
"INVALID_PARAMETER_FORMAT"
|
|
460
587
|
);
|
|
588
|
+
}
|
|
461
589
|
|
|
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>
|
|
590
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.reference || typeof signerData.reference !== "string") {</span>
|
|
465
591
|
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
"
|
|
592
|
+
'El campo "reference" es requerido y debe ser una cadena de texto.',
|
|
593
|
+
400,
|
|
594
|
+
"INVALID_PARAMETER_FORMAT"
|
|
595
|
+
);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
const validDocTypes = <span class="cstat-no" title="statement not covered" >["V", "P", "E"];</span>
|
|
599
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.typedoc || !validDocTypes.includes(signerData.typedoc)) {</span>
|
|
600
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
601
|
+
'El campo "typedoc" es requerido y debe ser uno de los siguientes valores: V, P, E.',
|
|
602
|
+
400,
|
|
603
|
+
"INVALID_PARAMETER_FORMAT"
|
|
469
604
|
);
|
|
470
605
|
}
|
|
471
|
-
};
|
|
472
606
|
|
|
473
|
-
|
|
474
|
-
<span class="cstat-no" title="statement not covered" >
|
|
475
|
-
|
|
607
|
+
<span class="cstat-no" title="statement not covered" > if (!signerData.doc || typeof signerData.doc !== "string") {</span>
|
|
608
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
609
|
+
'El campo "doc" es requerido y debe ser una cadena de texto.',
|
|
610
|
+
400,
|
|
611
|
+
"INVALID_PARAMETER_FORMAT"
|
|
612
|
+
);
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
616
|
+
!Array.isArray(signerData.signature) ||
|
|
617
|
+
signerData.signature.length === 0
|
|
618
|
+
) {
|
|
619
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
620
|
+
'El campo "signature" es requerido y debe ser un array no vacío.',
|
|
621
|
+
400,
|
|
622
|
+
"INVALID_PARAMETER_FORMAT"
|
|
623
|
+
);
|
|
624
|
+
}
|
|
476
625
|
|
|
477
|
-
|
|
478
|
-
<span class="cstat-no" title="statement not covered" > if (!
|
|
479
|
-
<span class="cstat-no" title="statement not covered" > throw new
|
|
480
|
-
|
|
626
|
+
<span class="cstat-no" title="statement not covered" > signerData.signature.forEach(<span class="fstat-no" title="function not covered" >(s</span>ig, index) => {</span>
|
|
627
|
+
<span class="cstat-no" title="statement not covered" > if (!Number.isInteger(sig.page) || sig.page < 1) {</span>
|
|
628
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
629
|
+
`La página de la firma ${
|
|
630
|
+
index + 1
|
|
631
|
+
} debe ser un número entero positivo.`,
|
|
632
|
+
400,
|
|
633
|
+
"INVALID_PARAMETER_FORMAT"
|
|
481
634
|
);
|
|
482
635
|
}
|
|
483
|
-
|
|
484
|
-
<span class="cstat-no" title="statement not covered" >
|
|
485
|
-
|
|
636
|
+
|
|
637
|
+
<span class="cstat-no" title="statement not covered" > if (typeof sig.x !== "number" || sig.x < 0 || sig.x > 1) {</span>
|
|
638
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
639
|
+
`La coordenada X de la firma ${
|
|
640
|
+
index + 1
|
|
641
|
+
} debe ser un número entre 0 y 1.`,
|
|
642
|
+
400,
|
|
643
|
+
"INVALID_PARAMETER_FORMAT"
|
|
486
644
|
);
|
|
487
645
|
}
|
|
488
646
|
|
|
489
|
-
|
|
490
|
-
<span class="cstat-no" title="statement not covered" >
|
|
647
|
+
<span class="cstat-no" title="statement not covered" > if (typeof sig.y !== "number" || sig.y < 0 || sig.y > 1) {</span>
|
|
648
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
649
|
+
`La coordenada Y de la firma ${
|
|
650
|
+
index + 1
|
|
651
|
+
} debe ser un número entre 0 y 1.`,
|
|
652
|
+
400,
|
|
653
|
+
"INVALID_PARAMETER_FORMAT"
|
|
654
|
+
);
|
|
655
|
+
}
|
|
656
|
+
});
|
|
657
|
+
};
|
|
491
658
|
|
|
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.
|
|
659
|
+
const validateCsr = <span class="fstat-no" title="function not covered" >(c</span>sr) => {
|
|
660
|
+
const base64Regex = <span class="cstat-no" title="statement not covered" >/^[A-Za-z0-9+/=]+$/;</span>
|
|
515
661
|
|
|
516
|
-
|
|
517
|
-
<span class="cstat-no" title="statement not covered" >
|
|
518
|
-
|
|
662
|
+
<span class="cstat-no" title="statement not covered" > if (!csr) {</span>
|
|
663
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
664
|
+
"La solicitud de firma de certificado (CSR) es requerida.",
|
|
665
|
+
400,
|
|
666
|
+
"INVALID_PARAMETER"
|
|
519
667
|
);
|
|
668
|
+
}
|
|
520
669
|
|
|
521
|
-
|
|
522
|
-
<span class="cstat-no" title="statement not covered" >
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
670
|
+
<span class="cstat-no" title="statement not covered" > if (typeof csr !== "string" || csr.trim() === "") {</span>
|
|
671
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
672
|
+
"El CSR debe ser una cadena de texto válida y no puede estar vacía.",
|
|
673
|
+
400,
|
|
674
|
+
"INVALID_PARAMETER_FORMAT"
|
|
675
|
+
);
|
|
676
|
+
}
|
|
527
677
|
|
|
528
|
-
|
|
529
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
530
|
-
csr,
|
|
531
|
-
subject: pkcs10.subject,
|
|
532
|
-
};
|
|
533
|
-
} catch (error) {
|
|
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>
|
|
678
|
+
<span class="cstat-no" title="statement not covered" > if (!base64Regex.test(csr)) {</span>
|
|
536
679
|
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
"
|
|
680
|
+
"El CSR debe estar codificado en formato base64 válido.",
|
|
681
|
+
400,
|
|
682
|
+
"INVALID_PARAMETER_FORMAT"
|
|
540
683
|
);
|
|
541
684
|
}
|
|
542
685
|
};
|
|
543
686
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
687
|
+
const validateGetDocsData = <span class="fstat-no" title="function not covered" >(d</span>ata) => {
|
|
688
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
689
|
+
!data ||
|
|
690
|
+
typeof data.page === "undefined" ||
|
|
691
|
+
typeof data.size === "undefined"
|
|
692
|
+
) {
|
|
693
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
694
|
+
"Los parámetros 'page' y 'size' son requeridos.",
|
|
695
|
+
400,
|
|
696
|
+
"INVALID_PARAMETER"
|
|
697
|
+
);
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
701
|
+
typeof data.status !== "undefined" &&
|
|
702
|
+
![-1, 0, 1, 2].includes(data.status)
|
|
703
|
+
) {
|
|
704
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
705
|
+
"El parámetro 'status' no es válido. Los valores permitidos son: -1, 0, 1, 2.",
|
|
706
|
+
400,
|
|
707
|
+
"INVALID_PARAMETER"
|
|
708
|
+
);
|
|
709
|
+
}
|
|
548
710
|
};
|
|
549
711
|
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
712
|
+
const validateGetDigestData = <span class="fstat-no" title="function not covered" >(s</span>ignData) => {
|
|
713
|
+
<span class="cstat-no" title="statement not covered" > if (</span>
|
|
714
|
+
!signData ||
|
|
715
|
+
!signData.cert ||
|
|
716
|
+
typeof signData.cert !== "string" ||
|
|
717
|
+
!signData.signatureId ||
|
|
718
|
+
typeof signData.signatureId !== "string"
|
|
719
|
+
) {
|
|
720
|
+
<span class="cstat-no" title="statement not covered" > throw new ApacuanaAPIError(</span>
|
|
721
|
+
"Los parámetros 'cert' y 'signatureId' son requeridos y deben ser cadenas de texto.",
|
|
722
|
+
400,
|
|
723
|
+
"INVALID_PARAMETER"
|
|
724
|
+
);
|
|
725
|
+
}
|
|
726
|
+
};
|
|
556
727
|
|
|
557
|
-
export
|
|
728
|
+
export default {
|
|
558
729
|
getCertificateStatus,
|
|
559
|
-
generateKeyPair,
|
|
560
|
-
generateCSR,
|
|
561
730
|
exportPrivateKey,
|
|
562
731
|
arrayBufferToBase64,
|
|
732
|
+
encryptedCsr,
|
|
733
|
+
validateOnBoardingSignerData,
|
|
734
|
+
validateCsr,
|
|
735
|
+
validateGetDocsData,
|
|
736
|
+
validateGetDigestData,
|
|
563
737
|
};
|
|
564
738
|
</pre></td></tr></table></pre>
|
|
565
739
|
|
|
@@ -568,7 +742,7 @@ export const helpers = {
|
|
|
568
742
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
569
743
|
Code coverage generated by
|
|
570
744
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
571
|
-
at 2025-08-
|
|
745
|
+
at 2025-08-22T21:07:16.060Z
|
|
572
746
|
</div>
|
|
573
747
|
<script src="../../prettify.js"></script>
|
|
574
748
|
<script>
|