docs(vectores): la firma OIT de las invitaciones V1, con los casos que deben fallar
Para Irhis y el servicio de invitaciones de originmetaverse.com (CONTRATO_INVITACIONES_V1 §3.1, origin-metaverse-web d5f5f5e). Ella escribe sus tests antes que el servicio. - Firma sobre etiqueta || 0x00 || JCS(cuerpo). - 4 vectores que deben aceptarse y 11 que deben rechazarse: nonce repetido, ts fuera de ventana, etiqueta cruzada, llave de cabecera distinta, S no canonico, cuerpo cambiado, tres llaves de orden pequeno con firma forjada sin llave privada, y clave JSON duplicada. - Ed25519 en Python puro (referencia del RFC 8032), comprobado con los TEST 1 y 2 del RFC y con OpenSSL byte a byte. Salida determinista. Medido: OpenSSL 3.6.4 ACEPTA las tres firmas forjadas (F8-F10). La verificacion sola no basta; hace falta la comprobacion de llave fuerte, como is_strong_ed25519_key en la cadena (RV14). Contrafactual del generador: sin la comprobacion de orden pequeno, la de S < L o la etiqueta, se niega a emitir. Las comprobaciones de codificacion canonica se solapan con la de orden pequeno en F10 y ningun vector puede separarlas (ver LEEME). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e7b9c0c8bf
commit
abe680e853
3 files changed
+893
No files matched your search
@@ -0,0 +1,435 @@
|
||||
{
|
||||
"version": "origin-invitaciones/vectores/v1",
|
||||
"contrato": "origin-metaverse-web docs/CONTRATO_INVITACIONES_V1.md §3.1 (d5f5f5e)",
|
||||
"autora": "Charon, 2026-10-28",
|
||||
"mensaje_firmado": "utf8(etiqueta) || 0x00 || JCS(cuerpo)",
|
||||
"codificacion": "pub, firma, nonce y token en base64url sin relleno; huella = sha256(token) en hex",
|
||||
"llaves_de_prueba": {
|
||||
"A_quien_invita": {
|
||||
"semilla_hex": "9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60",
|
||||
"pub_hex": "d75a980182b10ab7d54bfed3c964073a0ee172f3daa62325af021a68f707511a",
|
||||
"pub_b64url": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"origen": "RFC 8032 §7.1 TEST 1 (pública: nunca para nada real)"
|
||||
},
|
||||
"B_quien_canjea": {
|
||||
"semilla_hex": "4ccd089b28ff96da9db6c346ec114e0f5b8a319f35aba624da8cf6ed4fb8a6fb",
|
||||
"pub_hex": "3d4017c3e843895a92b70aa74d1b7ebc9c982ccf2ec4968cc0cd55f12af4660c",
|
||||
"pub_b64url": "PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw",
|
||||
"origen": "RFC 8032 §7.1 TEST 2"
|
||||
}
|
||||
},
|
||||
"token_de_prueba": "HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64",
|
||||
"huella_de_prueba": "d24ddd65bd757dc69b7a630d8410556221a433c4329531d22f66d23d4348b76c",
|
||||
"comprobado_con": [
|
||||
"RFC 8032 TEST 1 y 2 (llave y firma)",
|
||||
"OpenSSL 3.6.4 (V1-V3 byte a byte)"
|
||||
],
|
||||
"como_usarlos": [
|
||||
"Cada vector es una petición: transporte_json es el cuerpo HTTP y cabeceras sus cabeceras.",
|
||||
"Fija el reloj del servidor en reloj_del_servidor y empieza cada vector con el almacén de nonces vacío, salvo F1, que va justo después de V1.",
|
||||
"espera = acepta | rechaza. Un test que no sepa reprobar no vale: quita cada comprobación y mira que su vector pase a aceptarse.",
|
||||
"verificador_laxo_acepta_la_firma dice qué pasaría con un verificador permisivo: F6 y F8-F10 pasan ahí. F8-F10 cumplen la ecuación: OpenSSL 3.6.4 los ACEPTA (openssl_acepta_la_firma). Si tu verify con zip215:false tampoco los rechaza, falta la comprobación de llave fuerte: decodificar pub, exigir que vuelva a codificarse igual y que no sea de orden pequeño."
|
||||
],
|
||||
"supuestos_por_confirmar": [
|
||||
"expiraEn es un instante absoluto en segundos (ts + 7 días aquí). Si es una duración, se regeneran.",
|
||||
"canjear firma {aud, nonce, pub, token, ts}: pub es la OIT de quien canjea y el token (la preimagen) va DENTRO de lo firmado. El §3 punto 3 dice {token, canjeadorOit, firma} y el §3.1 dice «la huella del token»: con la huella sola el servidor no puede comprobar la preimagen.",
|
||||
"revocar firma {aud, huella, nonce, pub, ts}, con pub igual a invitadorOit."
|
||||
],
|
||||
"vectores": [
|
||||
{
|
||||
"id": "V1",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "acepta",
|
||||
"motivo": "petición válida",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true
|
||||
},
|
||||
{
|
||||
"id": "V2",
|
||||
"operacion": "canjear",
|
||||
"etiqueta": "origin-invitaciones/canjear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "ioBVewvUqbJNvOUwlE380w",
|
||||
"pub": "PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw",
|
||||
"token": "HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64"
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"nonce\":\"ioBVewvUqbJNvOUwlE380w\",\"pub\":\"PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw\",\"token\":\"HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"nonce\":\"ioBVewvUqbJNvOUwlE380w\",\"pub\":\"PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw\",\"token\":\"HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63616e6a6561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c226e6f6e6365223a22696f42566577765571624a4e764f55776c4533383077222c22707562223a2250554158772d6844695671537477716e5452742d764a79594c4d3875784a614d774d3156385372305a6777222c22746f6b656e223a22485643345454774163355839617778644c54563858396b444f63775f673379554a534f6164465f55573634222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw",
|
||||
"Origin-Firma": "3Z79SlRC62mrNAzMLP6o1CNbIdj2uIWlc2sWzQvQDhZP5m9dHCKPjrI3SqM33eZQRnYx7b4ouq2ARR2Yi-ujBA"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "acepta",
|
||||
"motivo": "petición válida",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true
|
||||
},
|
||||
{
|
||||
"id": "V3",
|
||||
"operacion": "revocar",
|
||||
"etiqueta": "origin-invitaciones/revocar/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "CbdsIxFrDPvBSN_2qYeVcw",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"huella": "d24ddd65bd757dc69b7a630d8410556221a433c4329531d22f66d23d4348b76c"
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"huella\":\"d24ddd65bd757dc69b7a630d8410556221a433c4329531d22f66d23d4348b76c\",\"nonce\":\"CbdsIxFrDPvBSN_2qYeVcw\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"huella\":\"d24ddd65bd757dc69b7a630d8410556221a433c4329531d22f66d23d4348b76c\",\"nonce\":\"CbdsIxFrDPvBSN_2qYeVcw\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f7265766f6361722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c226875656c6c61223a2264323464646436356264373537646336396237613633306438343130353536323231613433336334333239353331643232663636643233643433343862373663222c226e6f6e6365223a22436264734978467244507642534e5f32715965566377222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "FR69zi1RDZYrREfVHhZkoO190h27Mrw74_NLPIxze79_QZMRXL8f700OPAzOu00CQLaDIuel4VD30mvqtRcHBQ"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "acepta",
|
||||
"motivo": "petición válida",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true
|
||||
},
|
||||
{
|
||||
"id": "V4",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{ \"pub\": \"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\", \"ts\": 1793188800, \"nonce\": \"l-SsDclPrSgeO_MdNULifQ\", \"aud\": \"originmetaverse.com\", \"expiraEn\": 1793793600, \"destino\": \"mundo-de-prueba.v1\" }",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "acepta",
|
||||
"motivo": "mismo V1 con otro orden de claves y espacios en el transporte: el servidor firma sobre JCS, no sobre los bytes recibidos",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "usar como petición nueva; si se manda DESPUÉS de V1, es el caso F2 (nonce repetido)"
|
||||
},
|
||||
{
|
||||
"id": "F1",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "nonce repetido",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "enviar V1 y luego exactamente la misma petición: la firma es buena, el par (pub, nonce) ya se usó dentro de la ventana"
|
||||
},
|
||||
{
|
||||
"id": "F2",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793189101,
|
||||
"espera": "rechaza",
|
||||
"motivo": "ts fuera de la ventana de ±5 min",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "mismo V1, con el reloj del servidor 301 s por delante"
|
||||
},
|
||||
{
|
||||
"id": "F3",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188499,
|
||||
"espera": "rechaza",
|
||||
"motivo": "ts fuera de la ventana de ±5 min",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "mismo V1, con el reloj del servidor 301 s por detrás (ts del futuro)"
|
||||
},
|
||||
{
|
||||
"id": "F4",
|
||||
"operacion": "canjear",
|
||||
"etiqueta": "origin-invitaciones/canjear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "ioBVewvUqbJNvOUwlE380w",
|
||||
"pub": "PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw",
|
||||
"token": "HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64"
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"nonce\":\"ioBVewvUqbJNvOUwlE380w\",\"pub\":\"PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw\",\"token\":\"HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"nonce\":\"ioBVewvUqbJNvOUwlE380w\",\"pub\":\"PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw\",\"token\":\"HVC4TTwAc5X9awxdLTV8X9kDOcw_g3yUJSOadF_UW64\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63616e6a6561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c226e6f6e6365223a22696f42566577765571624a4e764f55776c4533383077222c22707562223a2250554158772d6844695671537477716e5452742d764a79594c4d3875784a614d774d3156385372305a6777222c22746f6b656e223a22485643345454774163355839617778644c54563858396b444f63775f673379554a534f6164465f55573634222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw",
|
||||
"Origin-Firma": "8tzYumpNlvl9a42l970jmXJB5PFYUq1pK-RJagxXDjq74a_hkeOVtDqGrOK0eopWrfNs9kWwE423IP99fsKDDg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "etiqueta cruzada: la firma se hizo con la etiqueta de crear sobre el cuerpo de canjear",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": false,
|
||||
"openssl_acepta_la_firma": false,
|
||||
"firmado_con": "origin-invitaciones/crear/v1"
|
||||
},
|
||||
{
|
||||
"id": "F5",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "PUAXw-hDiVqStwqnTRt-vJyYLM8uxJaMwM1V8Sr0Zgw",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "Origin-Llave no es igual al pub del cuerpo (debe rechazarse ANTES de verificar)",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": false,
|
||||
"openssl_acepta_la_firma": false
|
||||
},
|
||||
{
|
||||
"id": "F6",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZInqzhKG1Umj33GNd1bhQnwZ3ead6U9JeqJUdgY0Oc8HEg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "S no canónico (S >= L): firma maleable",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": false
|
||||
},
|
||||
{
|
||||
"id": "F7",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "otro-mundo",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"otro-mundo\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"otro-mundo\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226f74726f2d6d756e646f222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "el cuerpo no es el firmado (destino cambiado)",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": false,
|
||||
"openssl_acepta_la_firma": false
|
||||
},
|
||||
{
|
||||
"id": "F8",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "XJeasE1GFNTkdfN8ER9KCg",
|
||||
"pub": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"XJeasE1GFNTkdfN8ER9KCg\",\"pub\":\"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"XJeasE1GFNTkdfN8ER9KCg\",\"pub\":\"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a22584a656173453147464e546b64664e384552394b4367222c22707562223a2241514141414141414141414141414141414141414141414141414141414141414141414141414141414141222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"Origin-Firma": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "llave de orden pequeño: la identidad (orden 1). Firma trivial R de orden pequeño y S = 0, hecha SIN llave privada",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "la ecuación de verificación SE CUMPLE: sólo la rechaza la comprobación explícita de llave fuerte (en la cadena, is_strong_ed25519_key; RV14)"
|
||||
},
|
||||
{
|
||||
"id": "F9",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "REfXPa4tGjc5slEI5bpktg",
|
||||
"pub": "7P_______________________________________38",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"REfXPa4tGjc5slEI5bpktg\",\"pub\":\"7P_______________________________________38\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"REfXPa4tGjc5slEI5bpktg\",\"pub\":\"7P_______________________________________38\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a225245665850613474476a6335736c45493562706b7467222c22707562223a2237505f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f3338222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "7P_______________________________________38",
|
||||
"Origin-Firma": "7P_______________________________________38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "llave de orden pequeño: el punto de orden 2. Firma trivial R de orden pequeño y S = 0, hecha SIN llave privada",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "la ecuación de verificación SE CUMPLE: sólo la rechaza la comprobación explícita de llave fuerte (en la cadena, is_strong_ed25519_key; RV14)"
|
||||
},
|
||||
{
|
||||
"id": "F10",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "PBi0xI2621syp0145Qoi5Q",
|
||||
"pub": "7v_______________________________________38",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"PBi0xI2621syp0145Qoi5Q\",\"pub\":\"7v_______________________________________38\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"PBi0xI2621syp0145Qoi5Q\",\"pub\":\"7v_______________________________________38\",\"ts\":1793188800}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a225042693078493236323173797030313435516f693551222c22707562223a2237765f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f5f3338222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "7v_______________________________________38",
|
||||
"Origin-Firma": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "llave de orden pequeño: una codificación NO canónica de la identidad (y = p + 1). Firma trivial R de orden pequeño y S = 0, hecha SIN llave privada",
|
||||
"verificador_estricto_acepta_la_firma": false,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true,
|
||||
"nota": "la ecuación de verificación SE CUMPLE: sólo la rechaza la comprobación explícita de llave fuerte (en la cadena, is_strong_ed25519_key; RV14)"
|
||||
},
|
||||
{
|
||||
"id": "F11",
|
||||
"operacion": "crear",
|
||||
"etiqueta": "origin-invitaciones/crear/v1",
|
||||
"cuerpo": {
|
||||
"aud": "originmetaverse.com",
|
||||
"ts": 1793188800,
|
||||
"nonce": "l-SsDclPrSgeO_MdNULifQ",
|
||||
"pub": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"destino": "mundo-de-prueba.v1",
|
||||
"expiraEn": 1793793600
|
||||
},
|
||||
"jcs": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800}",
|
||||
"transporte_json": "{\"aud\":\"originmetaverse.com\",\"destino\":\"mundo-de-prueba.v1\",\"expiraEn\":1793793600,\"nonce\":\"l-SsDclPrSgeO_MdNULifQ\",\"pub\":\"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo\",\"ts\":1793188800,\"destino\":\"otro-mundo\"}",
|
||||
"mensaje_hex": "6f726967696e2d696e7669746163696f6e65732f63726561722f7631007b22617564223a226f726967696e6d65746176657273652e636f6d222c2264657374696e6f223a226d756e646f2d64652d7072756562612e7631222c22657870697261456e223a313739333739333630302c226e6f6e6365223a226c2d537344636c50725367654f5f4d644e554c696651222c22707562223a223131715941594b7843726656535f3754795751484f6737686376506170694d6c727749616150634855526f222c227473223a313739333138383830307d",
|
||||
"cabeceras": {
|
||||
"Origin-Llave": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo",
|
||||
"Origin-Firma": "94ykfqmBeDJEvKgBdGBGmdUZFQPprWW2F79-heC7ZIn9-hwpu-aQh5vwf7MCSZ0E3ead6U9JeqJUdgY0Oc8HAg"
|
||||
},
|
||||
"reloj_del_servidor": 1793188800,
|
||||
"espera": "rechaza",
|
||||
"motivo": "clave duplicada en el JSON recibido. JCS (RFC 8785 §3.1, I-JSON) no la admite, y JSON.parse se queda en silencio con la última",
|
||||
"verificador_estricto_acepta_la_firma": true,
|
||||
"verificador_laxo_acepta_la_firma": true,
|
||||
"openssl_acepta_la_firma": true
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user