Esta es una demostración muy pequeña que muestra las cosas mínimas requeridas para un cifrado en un módulo de proveedor OpenSSL 3.0.
Este proveedor implementa una versión extendida del conocido Cipher Vigenère, que cubre toda la gama de valores de bytes, no solo caracteres alfabéticos. Para una descripción de este cifrado, así como su historia, ver https://en.wikipedia.org/wiki/vigenère_cipher
No hace falta decir que a la actualidad, este cifrado no debe usarse en una situación real, pero la implementación puede usarse como una plantilla para que otros proveedores de cifrado comiencen. Si quieres usar esto de verdad, vuelve al siglo XVI.
La documentación detallada del usuario se puede encontrar en Vigenere.md.
Para completar el repositorio de origen, todos los submódulos Git también deben estar actualizados. La primera vez, también deben inicializarse, de la siguiente manera:
git submodule update --init
La próxima vez, --init
se puede omitir.
La construcción de este proveedor requiere Cmake y una cadena de herramientas de construcción que admite.
Configuración simple, para una instalación del sistema de OpenSSL 3:
cmake -S . -B _build
Si tiene OpenSSL 3 instalado en otro lugar, haga lo siguiente, con {path}
reemplazado por el directorio de una instalación de OpenSSL 3:
cmake -DCMAKE_PREFIX_PATH={path} -S . -B _build
Para construir, haz esto:
cmake --build _build
El resultado es _build/vigenere.so
o _build/Debug/vigenere.dll
.
OpenSSL proporciona varias formas de especificar dónde se puede encontrar un módulo:
Opciones de línea de comando para subcomands openssl
relevantes. Específicamente, las opciones -provider-path
y -provider
deben combinarse para agregar otra ruta para buscar módulos de proveedor y el nombre de un proveedor que se cargará.
$ echo " The quick brown fox jumps over the lazy dog "
| openssl enc -provider-path _build -provider vigenere
-e -vigenere -K 0123456789ABCDEF0123456789ABCDEF
| od -tx1
0000000 55 8b aa 87 fa 20 36 52 6c 43 a7 d9 f8 22 3b 0f
0000020 67 92 bd 87 f3 20 3a 5f 74 43 b4 dd ee 1d ed 63
0000040 69 88 65 d3 ea 25 46 0f 65 92 ac 71
0000054
Ref: OpenSSL (1)
La variable de entorno OPENSSL_MODULES
, que funciona para cualquier programa que vincule el libcrypto de OpenSSL.
$ export OPENSSL_MODULES=_build
$ echo " The quick brown fox jumps over the lazy dog "
| openssl enc -provider vigenere -e -vigenere -K 0123456789ABCDEF0123456789ABCDEF
| od -tx1
0000000 55 8b aa 87 fa 20 36 52 6c 43 a7 d9 f8 22 3b 0f
0000020 67 92 bd 87 f3 20 3a 5f 74 43 b4 dd ee 1d ed 63
0000040 69 88 65 d3 ea 25 46 0f 65 92 ac 71
0000054
Ref: OpenSSL-ENV (7)
Programáticamente, si desea hacer en su programa qué hace -provider-path
en los subcomands openssl
.
Ref: OSSL_Provider (3)