Esta é uma demonstração muito pequena que mostra as coisas mínimas necessárias para uma cifra em um módulo OpenSSL 3.0 provedor.
Este provedor implementa uma versão estendida da conhecida Cifra Vigenère, cobrindo toda a gama de valores de bytes, não apenas caracteres alfabéticos. Para uma descrição desta cifra, bem como de sua história, consulte https://en.wikipedia.org/wiki/vigenère_cipher
Escusado será dizer que, hoje em dia, essa cifra não deve ser usada em uma situação real, mas a implementação pode ser usada como modelo para outros provedores de cifra começar. Se você quiser usar isso de verdade, volte para o século XVI
A documentação detalhada do usuário pode ser encontrada em Vigenere.md.
Para concluir o repositório de origem, todos os submódulos Git também devem estar atualizados. Na primeira vez, eles também precisam ser inicializados, como segue:
git submodule update --init
Na próxima vez, --init
pode ser ignorado.
Construir este provedor requer cmake e uma cadeia de ferramentas de construção que ele suporta.
Configuração simples, para uma instalação do sistema do OpenSSL 3:
cmake -S . -B _build
Se você tiver o OpenSSL 3 instalado em outro lugar, faça o seguinte, com {path}
substituído pelo diretório de uma instalação OpenSSL 3:
cmake -DCMAKE_PREFIX_PATH={path} -S . -B _build
Para construir, faça isso:
cmake --build _build
O resultado é _build/vigenere.so
ou _build/Debug/vigenere.dll
.
O OpenSSL fornece várias maneiras de especificar onde um módulo pode ser encontrado:
Opções da linha de comando para subcomandos openssl
relevantes. Especificamente, as opções -provider-path
e -provider
devem ser combinadas para adicionar outro caminho para procurar módulos de provedores e o nome de um provedor a ser carregado.
$ 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)
A variável de ambiente OPENSSL_MODULES
, que funciona para qualquer programa que vincule a libcrypto da 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)
Programmaticamente, se você deseja fazer em seu programa o que -provider-path
faz nos subcompãs openssl
.
Ref: OSSL_Provider (3)