◇ Try Synsema
Entrar Crear cuenta

La clave del procesador de pagos, a salvo

+30 xp

Estás en modo lectura. Crea una cuenta o entra para enviar tu solución y ganar estrellas. Puedes ejecutar código igual.

Tu programa
Así te va a probar Tomás (pruebas de la misión)
test "sellar produce un secreto opaco"
    let c be sellar("sk-live-abc123")
    assert_eq(text(c), "secret(sealed)")

test "el log nunca contiene la clave"
    let c be sellar("sk-live-abc123")
    let linea be registro_seguro(c, 555)
    assert_eq(json_decode(linea), {"evento": "pago", "monto": 555})
    assert(not contains(linea, "sk-live-abc123"), "¡la clave apareció en texto plano!")
    assert(not contains(linea, "secret("), "el log no lleva ni el nombre de la clave")

test "codificar la clave es un error"
    let c be sellar("sk-live-abc123")
    let se_nego be false
    try
        json_encode({"evento": "pago", "api_key": c})
    recover err
        set se_nego to true
    assert(se_nego, "json_encode tendría que negarse a escribir el secreto")

test "la firma consume la clave sin exponerla"
    let c be sellar("sk-live-abc123")
    let f be firmar_pedido("pago:555:ARS", c)
    assert_eq(length(f), 64)
    assert(verify_hmac("pago:555:ARS", f, c))
    assert(not verify_hmac("pago:999:ARS", f, c))