Cita:
Iniciado por AntonioMatias
'--------------------------------------------------------------------------------------
Espero que te sirva y puedas encontrar el error.
La solución fue que compile la clase en c# y agrege el DLL a mi proyecto.
'--------------------------------------------------------------------------------------
Saludos...
Antonio,
Tu código es muy bueno, pero tienes pequeños errores, el primero es que la comparación del salt debe ser contra la secuencia de bytes que llamas OIDpkcs5PBKDF2 y lo estás haciendo contra OIDpkcs5PBES2.
El segundo es que los dos bytes que van después de OIDdesEDE3CBC deben ser 2 y 2, tú estás validando 2 y 1, hay que cambiarlo.
Otro error que tienes, seguramente de concentración fue que en la función que usas para comparar bytes, el incremento de i lo pones adentro del IF, debe ir después del END IF, si no, cada vez comparas contra el primer byte.
Por último debes revisar en la función DecodePrivateKeyInfo, donde lees el 2 y 1 del pkcs8, asignas bt al 2 y twobytes al 1, y luego haces dos veces la comparación contra bt, cuando la segunda comparación debería ir contra el 1, o sea contra twobytes.
Haciendo estas pequeñas modificaciones, probé tu código y desencripta perfectamente cualquier key en PKCS8
Saludos,
Kad