es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando claves ECDSA con OpenSSL 3 (problema de migración)

Necesito crear claves ECDSA y hasta ahora he utilizado código antiguo de OpenSSL, que ya no se compila con OpenSSL 3, ahora hay muchos errores de obsolescencia. He invertido varios días en buscar y probar, pero no puedo resolverlo. Estoy probando con el ejemplo simple https://fm4dd.com/openssl/eckeycreate.shtm, pero incluso las primeras líneas ya generan estos errores:

WorkerThread.cpp(34,2): error C4996: ‘ERRloadBIO_strings’: Desde OpenSSL 3.0

WorkerThread.cpp(47,19): error C4996: ‘ECKEYnewbycurve_name’: Desde OpenSSL 3.0

WorkerThread.cpp(54,2): error C4996: ‘ECKEYfree’: Desde OpenSSL 3.0

Así que la primera idea sería eliminar estos errores del compilador de alguna manera. Encontré los siguientes conmutadores:

define OPENSSLAPICOMPAT 30000

define OPENSSLNODEPRECATED

Pero crean aún más errores, ya que ahora de repente el EC_KEY es desconocido para el compilador. No hay solución.

Así que queda la opción de intentar migrar el código de alguna manera a OpenSSL 3, ya que parece que no hay ejemplos en todo Internet para simplemente crear una clave ECDSA con OpenSSL 3 y extraer la parte privada y pública. Pero simplemente cambiar funciones individuales por una función compatible con OpenSSL 3 no lo resuelve, ya que el concepto completo cambia (se pasa de la API de bajo nivel a la de alto nivel, con un modelo de programación completamente diferente).

He intentado manipular muchos ejemplos, pero parece que mi tarea de programación que parece tan simple es realmente algo muy complicado. Cualquier ayuda será apreciada, pero quiero mantenerme en C/C++ porque mi aplicación es crítica en cuanto al rendimiento.

Entorno: MS Win10, MS Visual Studio 2019, última versión de OpenSSL 3

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en c++, openssl, migración y ecdsa, comprendo la frustración de encontrar errores de obsolescencia al intentar crear claves ECDSA utilizando código antiguo de OpenSSL. El primer enfoque para resolver este problema es eliminar los errores del compilador utilizando opciones como #define OPENSSL_API_COMPAT 30000 y #define OPENSSL_NO_DEPRECATED. Sin embargo, este enfoque puede no funcionar e incluso crear más errores.

    La forma más difícil de resolver este problema es migrar el código a OpenSSL3, que tiene un modelo de programación completamente diferente al API de bajo nivel utilizado en el código antiguo de OpenSSL. Esto puede implicar cambiar funciones individuales por funciones correspondientes en OpenSSL3 o modificar todo el código para que se ajuste al API de alto nivel de OpenSSL3. Desafortunadamente, no hay muchos ejemplos de migración a OpenSSL3 para crear una clave ECDSA con OpenSSL3 y extraer las partes privadas y públicas.

    Como experto en TI, aprecio la necesidad de mantenerse en C/C++ debido a la naturaleza crítica para el rendimiento de la aplicación. Por lo tanto, recomiendo buscar ayuda de otros expertos que puedan haber enfrentado problemas similares, explorar la documentación de OpenSSL3 para obtener más orientación o incluso considerar contratar a un especialista en c++, OpenSSL y migración para ayudar a resolver este problema en particular.

    El entorno utilizado para esta tarea es MS Win10 con MS Visual Studio 2019 y la última versión de OpenSSL 3.

Comments are closed.