Casos de borde para BIP32

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 ILvalores incorrectos directamente a una función privada, pero prefiero tener una prueba de caja negra.

Respuestas (1)

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.

Creo que probablemente tengas razón, y esto es exactamente lo que terminé haciendo, consulta fakeHmacSha512Responses github.com/NovaCrypto/BIP32/blob/master/src/test/java/io/github/…
¿Por qué está ahí la frase si nunca sucederá? Además, ¿qué sucede si no hay un "siguiente valor para i"? La última clave podría no ser válida. Si el BIP está tratando de manejar todos los casos (incluso los 'imposibles'), también debería manejar este.
@JanusTroelsen Nadie dijo "nunca sucederá" (aunque es probable que no suceda). Dije que probablemente nadie ha gastado varios PH para calcular una preimagen de este tipo para usar en una prueba unitaria.