@ai-pip/core 0.4.0 → 0.5.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.
Files changed (88) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/README.md +5 -2
  3. package/dist/isl/index.d.ts +2 -0
  4. package/dist/isl/index.d.ts.map +1 -1
  5. package/dist/isl/index.js +2 -0
  6. package/dist/isl/index.js.map +1 -1
  7. package/dist/isl/process/buildISLResult.d.ts +3 -1
  8. package/dist/isl/process/buildISLResult.d.ts.map +1 -1
  9. package/dist/isl/process/buildISLResult.js +3 -1
  10. package/dist/isl/process/buildISLResult.js.map +1 -1
  11. package/dist/isl/sanitize.d.ts.map +1 -1
  12. package/dist/isl/sanitize.js +13 -1
  13. package/dist/isl/sanitize.js.map +1 -1
  14. package/dist/isl/tags/index.d.ts +19 -0
  15. package/dist/isl/tags/index.d.ts.map +1 -0
  16. package/dist/isl/tags/index.js +17 -0
  17. package/dist/isl/tags/index.js.map +1 -0
  18. package/dist/isl/tags/namespace.d.ts +18 -0
  19. package/dist/isl/tags/namespace.d.ts.map +1 -0
  20. package/dist/isl/tags/namespace.js +18 -0
  21. package/dist/isl/tags/namespace.js.map +1 -0
  22. package/dist/isl/tags/serializer.d.ts +39 -0
  23. package/dist/isl/tags/serializer.d.ts.map +1 -0
  24. package/dist/isl/tags/serializer.js +45 -0
  25. package/dist/isl/tags/serializer.js.map +1 -0
  26. package/dist/isl/tags/tag-registry.d.ts +15 -0
  27. package/dist/isl/tags/tag-registry.d.ts.map +1 -0
  28. package/dist/isl/tags/tag-registry.js +17 -0
  29. package/dist/isl/tags/tag-registry.js.map +1 -0
  30. package/dist/isl/tags/threat-tag-type.d.ts +13 -0
  31. package/dist/isl/tags/threat-tag-type.d.ts.map +1 -0
  32. package/dist/isl/tags/threat-tag-type.js +9 -0
  33. package/dist/isl/tags/threat-tag-type.js.map +1 -0
  34. package/dist/isl/tags/threat-tag.d.ts +32 -0
  35. package/dist/isl/tags/threat-tag.d.ts.map +1 -0
  36. package/dist/isl/tags/threat-tag.js +43 -0
  37. package/dist/isl/tags/threat-tag.js.map +1 -0
  38. package/dist/isl/types.d.ts +13 -0
  39. package/dist/isl/types.d.ts.map +1 -1
  40. package/package.json +3 -2
  41. package/dist/AAL/process/applyRemovalPlan.d.ts +0 -23
  42. package/dist/AAL/process/applyRemovalPlan.d.ts.map +0 -1
  43. package/dist/AAL/process/applyRemovalPlan.js +0 -157
  44. package/dist/AAL/process/applyRemovalPlan.js.map +0 -1
  45. package/dist/AAL/process/buildRemovalPlan.d.ts +0 -50
  46. package/dist/AAL/process/buildRemovalPlan.d.ts.map +0 -1
  47. package/dist/AAL/process/buildRemovalPlan.js +0 -116
  48. package/dist/AAL/process/buildRemovalPlan.js.map +0 -1
  49. package/dist/cpe/envelope.d.ts +0 -34
  50. package/dist/cpe/envelope.d.ts.map +0 -1
  51. package/dist/cpe/envelope.js +0 -70
  52. package/dist/cpe/envelope.js.map +0 -1
  53. package/dist/cpe/exceptions/EnvelopeError.d.ts +0 -8
  54. package/dist/cpe/exceptions/EnvelopeError.d.ts.map +0 -1
  55. package/dist/cpe/exceptions/EnvelopeError.js +0 -13
  56. package/dist/cpe/exceptions/EnvelopeError.js.map +0 -1
  57. package/dist/cpe/exceptions/index.d.ts +0 -5
  58. package/dist/cpe/exceptions/index.d.ts.map +0 -1
  59. package/dist/cpe/exceptions/index.js +0 -5
  60. package/dist/cpe/exceptions/index.js.map +0 -1
  61. package/dist/cpe/index.d.ts +0 -24
  62. package/dist/cpe/index.d.ts.map +0 -1
  63. package/dist/cpe/index.js +0 -26
  64. package/dist/cpe/index.js.map +0 -1
  65. package/dist/cpe/types.d.ts +0 -58
  66. package/dist/cpe/types.d.ts.map +0 -1
  67. package/dist/cpe/types.js +0 -5
  68. package/dist/cpe/types.js.map +0 -1
  69. package/dist/cpe/utils.d.ts +0 -38
  70. package/dist/cpe/utils.d.ts.map +0 -1
  71. package/dist/cpe/utils.js +0 -47
  72. package/dist/cpe/utils.js.map +0 -1
  73. package/dist/cpe/value-objects/Metadata.d.ts +0 -32
  74. package/dist/cpe/value-objects/Metadata.d.ts.map +0 -1
  75. package/dist/cpe/value-objects/Metadata.js +0 -65
  76. package/dist/cpe/value-objects/Metadata.js.map +0 -1
  77. package/dist/cpe/value-objects/Nonce.d.ts +0 -33
  78. package/dist/cpe/value-objects/Nonce.d.ts.map +0 -1
  79. package/dist/cpe/value-objects/Nonce.js +0 -44
  80. package/dist/cpe/value-objects/Nonce.js.map +0 -1
  81. package/dist/cpe/value-objects/Signature.d.ts +0 -39
  82. package/dist/cpe/value-objects/Signature.d.ts.map +0 -1
  83. package/dist/cpe/value-objects/Signature.js +0 -60
  84. package/dist/cpe/value-objects/Signature.js.map +0 -1
  85. package/dist/cpe/value-objects/index.d.ts +0 -9
  86. package/dist/cpe/value-objects/index.d.ts.map +0 -1
  87. package/dist/cpe/value-objects/index.js +0 -7
  88. package/dist/cpe/value-objects/index.js.map +0 -1
@@ -1,58 +0,0 @@
1
- /**
2
- * Types for CPE (Cryptographic Prompt Envelope) - Core Semántico
3
- */
4
- import type { LineageEntry } from '../csl/value-objects/index.js';
5
- /**
6
- * ProtocolVersion - Versión del protocolo AI-PIP
7
- */
8
- export type ProtocolVersion = string;
9
- /**
10
- * Timestamp - Timestamp Unix en milisegundos
11
- */
12
- export type Timestamp = number;
13
- /**
14
- * NonceValue - Valor único para prevenir ataques de replay (string)
15
- */
16
- export type NonceValue = string;
17
- /**
18
- * SignatureAlgorithm - Algoritmo de firma criptográfica
19
- */
20
- export type SignatureAlgorithm = 'HMAC-SHA256';
21
- /**
22
- * Signature - Firma criptográfica del envelope
23
- */
24
- export type Signature = string;
25
- /**
26
- * CPEMetadata - Metadata de seguridad del envelope
27
- * Según especificación: timestamp, nonce, protocolVersion, previousSignatures opcionales
28
- */
29
- export interface CPEMetadata {
30
- readonly timestamp: Timestamp;
31
- readonly nonce: NonceValue;
32
- readonly protocolVersion: ProtocolVersion;
33
- readonly previousSignatures?: {
34
- readonly csl?: string | undefined;
35
- readonly isl?: string | undefined;
36
- } | undefined;
37
- }
38
- /**
39
- * CPEEvelope - Envoltorio criptográfico completo
40
- * Según especificación: payload, metadata, signature (value + algorithm), lineage
41
- */
42
- export interface CPEEvelope {
43
- readonly payload: unknown;
44
- readonly metadata: CPEMetadata;
45
- readonly signature: {
46
- readonly value: string;
47
- readonly algorithm: string;
48
- };
49
- readonly lineage: readonly LineageEntry[];
50
- }
51
- /**
52
- * CPEResult - Resultado de la generación del envelope
53
- */
54
- export interface CPEResult {
55
- readonly envelope: CPEEvelope;
56
- readonly processingTimeMs?: number;
57
- }
58
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cpe/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAEjE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAEpC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAA;AAE9C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAClC,GAAG,SAAS,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC"}
package/dist/cpe/types.js DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Types for CPE (Cryptographic Prompt Envelope) - Core Semántico
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cpe/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Utilidades puras para CPE
3
- */
4
- /**
5
- * Serializa el contenido sanitizado de ISL para firma
6
- *
7
- * @param segments - Segmentos sanitizados
8
- * @returns Contenido serializado
9
- */
10
- export declare function serializeContent(segments: readonly {
11
- readonly sanitizedContent: string;
12
- }[]): string;
13
- /**
14
- * Serializa metadata para firma
15
- *
16
- * @param metadata - Metadata a serializar
17
- * @returns Metadata serializada
18
- */
19
- export declare function serializeMetadata(metadata: {
20
- readonly timestamp: number;
21
- readonly nonce: string;
22
- readonly protocolVersion: string;
23
- readonly previousSignatures?: {
24
- readonly csl?: string | undefined;
25
- readonly isl?: string | undefined;
26
- } | undefined;
27
- }): string;
28
- /**
29
- * Genera el contenido completo para firma
30
- * Según spec: contenido procesado + metadata + identificador del algoritmo
31
- *
32
- * @param content - Contenido serializado (payload semántico)
33
- * @param metadata - Metadata serializada
34
- * @param algorithm - Identificador del algoritmo de firma
35
- * @returns Contenido completo para firma
36
- */
37
- export declare function generateSignableContent(content: string, metadata: string, algorithm: string): string;
38
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cpe/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS;IAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAInG;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAClC,GAAG,SAAS,CAAA;CACd,GAAG,MAAM,CAgBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
package/dist/cpe/utils.js DELETED
@@ -1,47 +0,0 @@
1
- /**
2
- * Utilidades puras para CPE
3
- */
4
- /**
5
- * Serializa el contenido sanitizado de ISL para firma
6
- *
7
- * @param segments - Segmentos sanitizados
8
- * @returns Contenido serializado
9
- */
10
- export function serializeContent(segments) {
11
- return segments
12
- .map((segment, index) => `[${index}]:${segment.sanitizedContent}`)
13
- .join('\n');
14
- }
15
- /**
16
- * Serializa metadata para firma
17
- *
18
- * @param metadata - Metadata a serializar
19
- * @returns Metadata serializada
20
- */
21
- export function serializeMetadata(metadata) {
22
- const parts = [
23
- `timestamp:${metadata.timestamp}`,
24
- `nonce:${metadata.nonce}`,
25
- `version:${metadata.protocolVersion}`,
26
- ];
27
- if (metadata.previousSignatures?.csl) {
28
- parts.push(`csl:${metadata.previousSignatures.csl}`);
29
- }
30
- if (metadata.previousSignatures?.isl) {
31
- parts.push(`isl:${metadata.previousSignatures.isl}`);
32
- }
33
- return parts.join('|');
34
- }
35
- /**
36
- * Genera el contenido completo para firma
37
- * Según spec: contenido procesado + metadata + identificador del algoritmo
38
- *
39
- * @param content - Contenido serializado (payload semántico)
40
- * @param metadata - Metadata serializada
41
- * @param algorithm - Identificador del algoritmo de firma
42
- * @returns Contenido completo para firma
43
- */
44
- export function generateSignableContent(content, metadata, algorithm) {
45
- return `${metadata}\n---\n${content}\n---\nalgorithm:${algorithm}`;
46
- }
47
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cpe/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA0D;IACzF,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAQjC;IACC,MAAM,KAAK,GAAG;QACZ,aAAa,QAAQ,CAAC,SAAS,EAAE;QACjC,SAAS,QAAQ,CAAC,KAAK,EAAE;QACzB,WAAW,QAAQ,CAAC,eAAe,EAAE;KACtC,CAAA;IAED,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,QAAgB,EAChB,SAAiB;IAEjB,OAAO,GAAG,QAAQ,UAAU,OAAO,oBAAoB,SAAS,EAAE,CAAA;AACpE,CAAC"}
@@ -1,32 +0,0 @@
1
- /**
2
- * CPEMetadata - Metadata de seguridad del envelope
3
- * Value Object puro e inmutable
4
- */
5
- import type { CPEMetadata, ProtocolVersion, Timestamp } from '../types.js';
6
- import type { Nonce as NonceVO } from './Nonce.js';
7
- /**
8
- * Versión actual del protocolo
9
- */
10
- export declare const CURRENT_PROTOCOL_VERSION: ProtocolVersion;
11
- /**
12
- * Crea metadata de seguridad para el envelope
13
- * Según especificación: timestamp, nonce, protocolVersion, previousSignatures opcionales
14
- *
15
- * @param timestamp - Timestamp Unix en milisegundos
16
- * @param nonce - Nonce único
17
- * @param protocolVersion - Versión del protocolo (default: CURRENT_PROTOCOL_VERSION)
18
- * @param previousSignatures - Firmas opcionales de capas anteriores (csl, isl)
19
- * @returns CPEMetadata inmutable
20
- */
21
- export declare function createMetadata(timestamp: Timestamp, nonce: NonceVO, protocolVersion?: ProtocolVersion, previousSignatures?: {
22
- csl?: string;
23
- isl?: string;
24
- }): CPEMetadata;
25
- /**
26
- * Valida que la metadata sea válida
27
- *
28
- * @param metadata - Metadata a validar
29
- * @returns true si es válida
30
- */
31
- export declare function isValidMetadata(metadata: CPEMetadata): boolean;
32
- //# sourceMappingURL=Metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../../src/cpe/value-objects/Metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,KAAK,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAAyB,CAAA;AAEhE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,EACd,eAAe,GAAE,eAA0C,EAC3D,kBAAkB,CAAC,EAAE;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GACA,WAAW,CA4Bb;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAS9D"}
@@ -1,65 +0,0 @@
1
- /**
2
- * CPEMetadata - Metadata de seguridad del envelope
3
- * Value Object puro e inmutable
4
- */
5
- /**
6
- * Versión actual del protocolo
7
- */
8
- export const CURRENT_PROTOCOL_VERSION = '0.1.4';
9
- /**
10
- * Crea metadata de seguridad para el envelope
11
- * Según especificación: timestamp, nonce, protocolVersion, previousSignatures opcionales
12
- *
13
- * @param timestamp - Timestamp Unix en milisegundos
14
- * @param nonce - Nonce único
15
- * @param protocolVersion - Versión del protocolo (default: CURRENT_PROTOCOL_VERSION)
16
- * @param previousSignatures - Firmas opcionales de capas anteriores (csl, isl)
17
- * @returns CPEMetadata inmutable
18
- */
19
- export function createMetadata(timestamp, nonce, protocolVersion = CURRENT_PROTOCOL_VERSION, previousSignatures) {
20
- // Validar timestamp
21
- if (timestamp <= 0) {
22
- throw new Error('Timestamp must be a positive number');
23
- }
24
- // Validar que no sea del futuro (con margen de 5 minutos para sincronización)
25
- const maxFutureTimestamp = Date.now() + 5 * 60 * 1000;
26
- if (timestamp > maxFutureTimestamp) {
27
- throw new Error('Timestamp cannot be in the future');
28
- }
29
- // Validar version del protocolo
30
- if (!protocolVersion || typeof protocolVersion !== 'string') {
31
- throw new Error('Protocol version must be a non-empty string');
32
- }
33
- return Object.freeze({
34
- timestamp,
35
- nonce: nonce.value,
36
- protocolVersion,
37
- previousSignatures: previousSignatures
38
- ? Object.freeze({
39
- csl: previousSignatures.csl ?? undefined,
40
- isl: previousSignatures.isl ?? undefined,
41
- })
42
- : undefined,
43
- });
44
- }
45
- /**
46
- * Valida que la metadata sea válida
47
- *
48
- * @param metadata - Metadata a validar
49
- * @returns true si es válida
50
- */
51
- export function isValidMetadata(metadata) {
52
- try {
53
- if (metadata.timestamp <= 0)
54
- return false;
55
- if (!metadata.nonce || metadata.nonce.length < 16)
56
- return false;
57
- if (!metadata.protocolVersion)
58
- return false;
59
- return true;
60
- }
61
- catch {
62
- return false;
63
- }
64
- }
65
- //# sourceMappingURL=Metadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/cpe/value-objects/Metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB,OAAO,CAAA;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAoB,EACpB,KAAc,EACd,kBAAmC,wBAAwB,EAC3D,kBAGC;IAED,oBAAoB;IACpB,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IAED,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;IACrD,IAAI,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe;QACf,kBAAkB,EAAE,kBAAkB;YACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,GAAG,EAAE,kBAAkB,CAAC,GAAG,IAAI,SAAS;gBACxC,GAAG,EAAE,kBAAkB,CAAC,GAAG,IAAI,SAAS;aACzC,CAAC;YACJ,CAAC,CAAC,SAAS;KACd,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAqB;IACnD,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAA;QAC/D,IAAI,CAAC,QAAQ,CAAC,eAAe;YAAE,OAAO,KAAK,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -1,33 +0,0 @@
1
- /**
2
- * Nonce - Valor único para prevenir ataques de replay
3
- * Value Object puro e inmutable
4
- */
5
- /**
6
- * Nonce - Valor único generado aleatoriamente
7
- */
8
- export type Nonce = {
9
- readonly value: string;
10
- };
11
- /**
12
- * Genera un nonce único
13
- *
14
- * @param length - Longitud del nonce en bytes (default: 16)
15
- * @returns Nonce único
16
- */
17
- export declare function createNonce(length?: number): Nonce;
18
- /**
19
- * Valida que un string sea un nonce válido
20
- *
21
- * @param value - String a validar
22
- * @returns true si es un nonce válido
23
- */
24
- export declare function isValidNonce(value: string): boolean;
25
- /**
26
- * Compara dos nonces
27
- *
28
- * @param nonce1 - Primer nonce
29
- * @param nonce2 - Segundo nonce
30
- * @returns true si son iguales
31
- */
32
- export declare function equalsNonce(nonce1: Nonce, nonce2: Nonce): boolean;
33
- //# sourceMappingURL=Nonce.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Nonce.d.ts","sourceRoot":"","sources":["../../../src/cpe/value-objects/Nonce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,GAAE,MAAW,GAAG,KAAK,CActD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAEjE"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Nonce - Valor único para prevenir ataques de replay
3
- * Value Object puro e inmutable
4
- */
5
- import { randomBytes } from 'node:crypto';
6
- /**
7
- * Genera un nonce único
8
- *
9
- * @param length - Longitud del nonce en bytes (default: 16)
10
- * @returns Nonce único
11
- */
12
- export function createNonce(length = 16) {
13
- if (length < 8) {
14
- throw new Error('Nonce length must be at least 8 bytes');
15
- }
16
- if (length > 64) {
17
- throw new Error('Nonce length must be at most 64 bytes');
18
- }
19
- const bytes = randomBytes(length);
20
- const value = bytes.toString('hex');
21
- return Object.freeze({
22
- value,
23
- });
24
- }
25
- /**
26
- * Valida que un string sea un nonce válido
27
- *
28
- * @param value - String a validar
29
- * @returns true si es un nonce válido
30
- */
31
- export function isValidNonce(value) {
32
- return /^[a-f0-9]{16,128}$/i.test(value);
33
- }
34
- /**
35
- * Compara dos nonces
36
- *
37
- * @param nonce1 - Primer nonce
38
- * @param nonce2 - Segundo nonce
39
- * @returns true si son iguales
40
- */
41
- export function equalsNonce(nonce1, nonce2) {
42
- return nonce1.value === nonce2.value;
43
- }
44
- //# sourceMappingURL=Nonce.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Nonce.js","sourceRoot":"","sources":["../../../src/cpe/value-objects/Nonce.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AASzC;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE;IAC7C,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IACD,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK;KACN,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAa,EAAE,MAAa;IACtD,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAA;AACtC,CAAC"}
@@ -1,39 +0,0 @@
1
- /**
2
- * Signature - Firma criptográfica HMAC-SHA256
3
- * Value Object puro e inmutable
4
- */
5
- import type { SignatureAlgorithm } from '../types.js';
6
- /**
7
- * Signature - Firma criptográfica
8
- */
9
- export type SignatureVO = {
10
- readonly value: string;
11
- readonly algorithm: SignatureAlgorithm;
12
- };
13
- /**
14
- * Genera una firma HMAC-SHA256 del contenido
15
- *
16
- * @param content - Contenido a firmar
17
- * @param secretKey - Clave secreta para HMAC
18
- * @returns Signature inmutable
19
- *
20
- * @throws {Error} Si la clave secreta está vacía
21
- */
22
- export declare function createSignature(content: string, secretKey: string): SignatureVO;
23
- /**
24
- * Verifica una firma HMAC-SHA256
25
- *
26
- * @param content - Contenido original
27
- * @param signature - Firma a verificar
28
- * @param secretKey - Clave secreta para HMAC
29
- * @returns true si la firma es válida
30
- */
31
- export declare function verifySignature(content: string, signature: string, secretKey: string): boolean;
32
- /**
33
- * Valida el formato de una firma
34
- *
35
- * @param signature - Firma a validar
36
- * @returns true si el formato es válido
37
- */
38
- export declare function isValidSignatureFormat(signature: string): boolean;
39
- //# sourceMappingURL=Signature.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Signature.d.ts","sourceRoot":"","sources":["../../../src/cpe/value-objects/Signature.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAA;CACvC,CAAA;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,WAAW,CAiBb;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAWT;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGjE"}
@@ -1,60 +0,0 @@
1
- /**
2
- * Signature - Firma criptográfica HMAC-SHA256
3
- * Value Object puro e inmutable
4
- */
5
- import { createHmac } from 'node:crypto';
6
- /**
7
- * Genera una firma HMAC-SHA256 del contenido
8
- *
9
- * @param content - Contenido a firmar
10
- * @param secretKey - Clave secreta para HMAC
11
- * @returns Signature inmutable
12
- *
13
- * @throws {Error} Si la clave secreta está vacía
14
- */
15
- export function createSignature(content, secretKey) {
16
- if (!secretKey || secretKey.length === 0) {
17
- throw new Error('Secret key is required for signature generation');
18
- }
19
- if (typeof content !== 'string') {
20
- throw new TypeError('Content must be a string');
21
- }
22
- const hmac = createHmac('sha256', secretKey);
23
- hmac.update(content);
24
- const signature = hmac.digest('hex');
25
- return Object.freeze({
26
- value: signature,
27
- algorithm: 'HMAC-SHA256',
28
- });
29
- }
30
- /**
31
- * Verifica una firma HMAC-SHA256
32
- *
33
- * @param content - Contenido original
34
- * @param signature - Firma a verificar
35
- * @param secretKey - Clave secreta para HMAC
36
- * @returns true si la firma es válida
37
- */
38
- export function verifySignature(content, signature, secretKey) {
39
- if (!secretKey || secretKey.length === 0) {
40
- return false;
41
- }
42
- try {
43
- const expectedSignature = createSignature(content, secretKey);
44
- return expectedSignature.value === signature;
45
- }
46
- catch {
47
- return false;
48
- }
49
- }
50
- /**
51
- * Valida el formato de una firma
52
- *
53
- * @param signature - Firma a validar
54
- * @returns true si el formato es válido
55
- */
56
- export function isValidSignatureFormat(signature) {
57
- // HMAC-SHA256 produce un hash hexadecimal de 64 caracteres
58
- return /^[a-f0-9]{64}$/i.test(signature);
59
- }
60
- //# sourceMappingURL=Signature.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Signature.js","sourceRoot":"","sources":["../../../src/cpe/value-objects/Signature.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAWxC;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,SAAiB;IAEjB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAA;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEpC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,SAAS;QAChB,SAAS,EAAE,aAAa;KACzB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAC7D,OAAO,iBAAiB,CAAC,KAAK,KAAK,SAAS,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,2DAA2D;IAC3D,OAAO,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC1C,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * CPE Value Objects - Exports
3
- */
4
- export type { Nonce } from './Nonce.js';
5
- export { createNonce, isValidNonce, equalsNonce } from './Nonce.js';
6
- export { createMetadata, isValidMetadata } from './Metadata.js';
7
- export type { SignatureVO } from './Signature.js';
8
- export { createSignature, verifySignature, isValidSignatureFormat } from './Signature.js';
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cpe/value-objects/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA"}
@@ -1,7 +0,0 @@
1
- /**
2
- * CPE Value Objects - Exports
3
- */
4
- export { createNonce, isValidNonce, equalsNonce } from './Nonce.js';
5
- export { createMetadata, isValidMetadata } from './Metadata.js';
6
- export { createSignature, verifySignature, isValidSignatureFormat } from './Signature.js';
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cpe/value-objects/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAE/D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA"}