Estoy tratando de codificar BIP0032 , con cobertura de prueba completa y me encontré con un problema con estos casos extremos muy raros:
Clave principal privada → clave secundaria privada
En caso de que parse256(IL) ≥ n o ki = 0, la clave resultante no es válida y se debe continuar con el siguiente valor para i. (Nota: esto tiene una probabilidad inferior a 1 en 2^127).
Clave principal pública → clave secundaria pública
En caso de que parse256(IL) ≥ n o Ki sea el punto en el infinito, la clave resultante no es válida y se debe continuar con el siguiente valor para i.
No he escrito ningún código en torno a estas condiciones, ya que sin casos de prueba para demostrar que lo he hecho correctamente, no tiene sentido.
Probé con éxito mi código con 30 millones de direcciones generadas a partir de otra biblioteca, pero creo que para tener más de 50/50 de posibilidades de encontrar uno de estos casos extremos, tendría que verificar en el orden de 10^19
(fuente: Ataque de cumpleaños ) .
Entonces mi pregunta es, ¿alguien tiene algún vector de prueba para estos casos?
La alternativa es tener una prueba de caja blanca que pase los IL
valores incorrectos directamente a una función privada, pero prefiero tener una prueba de caja negra.
Dudo que alguien tenga tal valor, ya que requeriría una enorme cantidad de cálculo. Un enfoque sería parchear su función HMAC-SHA512 para devolver un valor con 32 bytes cero iniciales para el propósito de la prueba.
weston
fakeHmacSha512Responses
github.com/NovaCrypto/BIP32/blob/master/src/test/java/io/github/…Janus Troelsen
mike d