Anteriormente, o repositório git continha doc/crypt.pdf
para documentação detalhada. Isso foi alterado e o arquivo agora está disponível apenas no tarball da versão apropriada ou na página https://github.com/libtom/libtomcrypt/releases .
mestre:
desenvolver:
mestre:
desenvolver:
Mudanças de API/ABI: verifique aqui
Por favor, ramifique-se do desenvolvimento se quiser enviar um patch.
A integração de patches será mais rápida se testes e documentação forem incluídos.
Atualize os makefiles em um commit separado. Para atualizá-los, basta executar o script updatemakes.sh
.
Se você tiver algo maior para enviar, não hesite em nos contatar com antecedência. Em seguida, podemos dar a você acesso de gravação a este repositório, para que você possa abrir seu PR com base neste repositório e possamos seguir mais facilmente a abordagem rebase-before-merge que estamos usando (ou até mesmo fazer o rebase nós mesmos).
Estamos usando revisões de solicitações pull para garantir que o código esteja alinhado com a base de código existente.
Dê uma olhada aqui para ter uma ideia da abordagem.
Esteja ciente de que todos os ramos, exceto master e development , podem e serão forçados, rebaseados e/ou removidos!
Se você quiser contar com um branch tão instável , crie seu próprio fork deste repositório para garantir que nada quebre para você.
Por padrão, a biblioteca constrói todo o seu conjunto de recursos (além de katja
) de uma maneira ideal (dependendo mais ou menos de suas necessidades).
Existem inúmeras opções de configuração disponíveis se você quiser reduzir a funcionalidade da biblioteca.
Por favor, dê uma olhada em src/headers/tomcrypt_custom.h
para todas as opções de configuração disponíveis.
A lista a seguir é uma pequena parte das opções de configuração disponíveis, mas as mais frequentemente necessárias.
Bandeira | Comportamento |
---|---|
LTC_NO_TEST | Remova todos os autotestes de algoritmo da biblioteca |
LTC_NO_FILE | Remova todas as funções da API que exigem um tipo de dados FILE predefinido (útil principalmente para destinos incorporados) |
GMP_DESC | habilitar gmp como provedor MPI *1 |
LTM_DESC | habilite libtommath como provedor MPI *1 |
TFM_DESC | habilitar tomsfastmath como provedor MPI *1 *2 |
USE_GMP | use gmp como provedor MPI ao construir os binários *3 |
USE_LTM | use libtommath como provedor MPI ao construir os binários *3 |
USE_TFM | use tomsfastmath como provedor MPI ao construir os binários *3 |
*1 É possível construir a biblioteca em paralelo com todos os provedores de MPI e escolher na inicialização qual biblioteca matemática deve ser usada.
*2 Esteja ciente de que tomsfastmath
tem a limitação de um tamanho máximo fixo de MPIs.
*3 Apenas um é suportado no momento e isso só é necessário ao construir os binários, não ao construir a biblioteca em si.
Existem vários makefile
s fornecidos. Por favor, escolha aquele que melhor se adapta a você.
arquivo make | caso de uso |
---|---|
makefile | constrói uma biblioteca estática (requer GNU Make) |
makefile.shared | constrói uma biblioteca compartilhada (e estática) (requer GNU Make) |
makefile.unix | para plataformas UNIX incomuns ou se você não possui o GNU Make |
makefile.mingw | para uso com o compilador mingw no MS Windows |
makefile.msvc | para uso com o compilador MSVC no MS Windows |
libtomcrypt_VS2008.sln | Um projeto VisualStudio 2008 para MS Windows |
Os makefile
s fornecem vários alvos para construção (projeto VS excluído). A lista a seguir não pretende ser completa resp. para estar disponível em todas as variantes makefile
.
alvo | aplicativo |
---|---|
alvo vazio /nenhum fornecido | library cf |
library | constrói apenas a biblioteca |
hashsum | constrói o binário hashsum , semelhante ao shasum , mas com suporte para todos os algoritmos hash incluídos na biblioteca *4 |
crypt | constrói o binário crypt , implementando algo semelhante ao crypt *4 |
sizes | constrói os sizes binários, imprimindo todos os tamanhos de dados internos na invocação *4 |
constants | constrói as constants binárias, imprimindo todas as constantes internas na invocação *4 |
openssl-enc | constrói o binário openssl-enc , que é mais ou menos compatível com openssl enc *4 *5 |
test | constrói o binário test , que executa todos os autotestes do algoritmo + alguns testes estendidos *4 |
timing | constrói o binário timing , que pode ser usado para medir temporizações para algoritmos e modos *4 |
bins | constrói hashsum *4 |
all_test | compila test , hashsum , crypt , small , tv_gen , sizes e constants *4 |
docs | cria a documentação do desenvolvedor doc/crypt.pdf |
install | instala a library e os arquivos de cabeçalho *7 *8 |
install_bins | instala os binários criados pelo destino bins *7 *8 |
install_docs | instala a documentação criada pelo destino docs *7 *8 |
install_test | instala o aplicativo de teste criado pelo alvo test *7 *8 |
install_all | instala tudo (ou seja, library , bins , docs e test ) *8 |
uninstall | desinstala a library e os arquivos de cabeçalho |
*4 também constrói library
*5 compilação quebrada em algumas configurações, portanto não construída por padrão
*7 também constrói o(s) artefato(s) necessário(s) antes de instalá-lo
*8 também dê uma olhada na seção 'Instalação' deste arquivo
Você deseja construir a biblioteca como uma biblioteca estática
make
Você deseja construir a biblioteca como uma biblioteca compartilhada
make -f makefile.shared
Você tem libtommath
instalado em seu sistema e deseja construir uma biblioteca estática e o binário test
para executar os autotestes.
make CFLAGS="-DUSE_LTM -DLTM_DESC" EXTRALIBS="-ltommath" test
Você tem tomsfastmath
instalado em seu sistema e deseja construir uma biblioteca compartilhada e todos os binários
make -f makefile.shared CFLAGS="-DUSE_TFM -DTFM_DESC" EXTRALIBS="-ltfm" all demos
Você tem gmp
, libtommath
e tomsfastmath
instalados em seu sistema e deseja construir uma biblioteca estática e o binário timing
para medir os tempos em relação gmp
.
make CFLAGS="-DUSE_GMP -DGMP_DESC -DLTM_DESC -DTFM_DESC" EXTRALIBS="-lgmp" timing
Se você tiver libtommath
em um local não padrão:
make CFLAGS="-DUSE_LTM -DLTM_DESC -I/opt/devel/ltm" EXTRALIBS="/opt/devel/ltm/libtommath.a" all
Você deseja ativar o suporte AES-NI:
make CFLAGS=-DLTC_AES_NI
Existem vários alvos de instalação descritos na tabela acima.
Esses alvos suportam as formas padrão (cf [GNU], [FreeBSD]) para modificar o caminho de instalação através do seguinte conjunto de variáveis:
DESTDIR
PREFIX
LIBPATH
INCPATH
DATAPATH
BINPATH
Todo o conjunto de variáveis é suportado apenas em makefile
, makefile.shared
e makefile.unix
.
Caso seja necessário utilizar um dos outros makefiles, verifique no arquivo quais variáveis são suportadas.
Você deseja instalar a biblioteca estática nos caminhos padrão
make install
Você deseja instalar a biblioteca compartilhada em um caminho especial e usá-la a partir deste caminho
make -f makefile.shared PREFIX=/opt/special/path
Dê uma olhada na documentação do desenvolvedor, [GNU] ou [FreeBSD] para obter uma explicação detalhada de todas as variáveis.
O projeto fornece suporte para o sistema de compilação CMake.
git clone https://github.com/libtom/libtomcrypt.git
mkdir -p libtomcrypt/build
cd libtomcrypt/build
cmake ..
make -j$(nproc)
Mais detalhes sobre a construção com CMake podem ser encontrados na documentação do desenvolvedor.