¿Firmó PlanVortex este cuerpo con el secreto de tu app?
Devuelve true o false y no lanza por una firma mal formada, ausente o de otra longitud:
todo eso es un false. Lanza sólo si le pasas algo que no son bytes (§ WebhookBodyError)
o te dejas el secreto, que son fallos de tu código y no del que llama a tu endpoint.
La comparación es de tiempo constante (crypto.timingSafeEqual). Las longitudes se comprueban
antes: el HMAC de un algoritmo siempre mide lo mismo, así que la longitud no es secreto, y sin
esa comprobación timingSafeEquallanzaría ante una firma recortada — que es exactamente lo
que mandaría alguien probando el endpoint.
¿Firmó PlanVortex este cuerpo con el secreto de tu app?
Devuelve
trueofalsey no lanza por una firma mal formada, ausente o de otra longitud: todo eso es unfalse. Lanza sólo si le pasas algo que no son bytes (§ WebhookBodyError) o te dejas el secreto, que son fallos de tu código y no del que llama a tu endpoint.La comparación es de tiempo constante (
crypto.timingSafeEqual). Las longitudes se comprueban antes: el HMAC de un algoritmo siempre mide lo mismo, así que la longitud no es secreto, y sin esa comprobacióntimingSafeEquallanzaría ante una firma recortada — que es exactamente lo que mandaría alguien probando el endpoint.