aboutsummaryrefslogtreecommitdiffstats
path: root/lib/crypto/c_src/crypto.c
AgeCommit message (Collapse)Author
2012-12-19fix missing defines for RIPEMD160_CTX_LEN and RIPEMD160_LENMichael Loftis
A couple of #defines were missed in my previous patch.
2012-12-18add ripemd160 support to cryptoMichael Loftis
add ripemd160 message digest support to the crypto app, includes some test cases.
2012-12-04crypto: Let info_lib return header version instead of lib versionSverker Eriksson
2012-12-04crypto: Throw notsup for DES3 CFB encryption for old opensslSverker Eriksson
An attempt to enable the use of openssl 0.9.7
2012-10-22crypto: Link crypto_callback staticallySverker Eriksson
if static linking of openssl is used.
2012-10-22crypto: Add debug print macrosSverker Eriksson
2012-10-16crypto: Enable runtime upgrade of cryptoSverker Eriksson
2012-10-09crypto: Make unloading of crypto saferSverker Eriksson
Facts: crypto nif-lib registers callback functions that openssl uses for memory management and thread synchronization. The callback functions can only be set once, openssl does not allow changing the callback functions. Problem: If openssl is dynamicly linked to crypto, you might get s scenario where the crypto lib is unloaded while leaving openssl loaded with its old pointers to the unloaded crypto code intact. If crypto is then reloaded (by init:restart() for example), the crypto nif-lib might get relocated at a different address. crypto calls openssl which in turn calls the old invalid callback functions...kaboom. Solution: Break apart the callback functions into a separate dynamic lib that crypto loads with dlopen. When crypto is unloaded the callback lib is left in place to be reused if/when crypto is loaded again.
2012-08-29crypto: Fix buffer overflow bug in rsa_signSverker Eriksson
2012-08-23Merge branch 'ia/ssl/tls1.1and1.2' into maintIngela Anderton Andin
* ia/ssl/tls1.1and1.2: (46 commits) ssl: Clean up of code thanks to dialyzer ssl: Test suite adjustments ssl & public_key: Prepare for release ssl: Use crypto:strong_rand_bytes if possible ssl & public_key: Add use of more "sha-rsa oids" ssl: Fix inet header option to behave as in inet ssl: TLS 1.2: fix hash and signature handling ssl: TLS 1.2: fix Certificate Request list of Accepted Signatur/Hash combinations ssl: Add Signature Algorithms hello extension from TLS 1.2 ssl: Fix rizzo tests to run as intended ssl: TLS-1.1 and TLS-1.2 support should not be default until R16 ssl: Signture type bug ssl: Add crypto support check (TLS 1.2 require sha256 support) ssl: Dialyzer fixes ssl: IDEA cipher is deprecated by TLS 1.2 ssl: Run relevant tests for all SSL/TLS versions ssl: Add TLS version switches to openssl tests ssl: Enable TLS 1.2 ssl: Enable mac_hash for TLS 1.2 ssl: Implement TLS 1.2 signature support ...
2012-08-22crypto: Add sha224 for rsa sign/verifySverker Eriksson
2012-08-22crypto: Add sha224Sverker Eriksson
2012-08-22crypto: fix hmac_sha384 and add hmac test cases from RFC-4231Andreas Schultz
2012-08-22crypto: Add sha384Sverker Eriksson
2012-08-22crypto: Cleanup code for sha256 and sha512Sverker Eriksson
2012-08-22crypto: Add SHA256 and SHA512 based MACsAndreas Schultz
2012-08-22crypto: Redo interface for rsa and dss hash signingSverker Eriksson
Replace _hash functions with {digest,_} argument to existing sign/verify functions.
2012-08-22crypto: Add rsa and dss hash signing supportAndreas Schultz
2012-07-04crypto: Allow aes_cfb_128_{en|de}crypt to accept unaligned dataSverker Eriksson
Remove the need for padding up to 16-byte multiple.
2012-04-20crypto: Optimize RSA private key handlingSverker Eriksson
by using extra redundant information as part of the key that will speed things up for OpenSSL. Affects rsa_sign, rsa_private_encrypt and rsa_private_decrypt.
2011-11-30crypto: Add sha{256,384,512} to rsa_verifySverker Eriksson
2011-11-30crypto: Add sha256 and sha512Sverker Eriksson
No test and doc
2011-11-01Additions to crypto and public_key needed for full PKCS-8 supportIngela Anderton Andin
2011-10-18[crypto] Add DES and Triple DES cipher feedback (CFB) mode functionsPaul Guyot
2011-05-18Add true streaming AES (CTR) encryption and streaming HMAC operationsTravis Jensen
The current crypto module implementations require all of the data being encrypted or authenticated to be in memory at one time. When trying to encrypt or authenticate a large file (on order of GBs), this is problematic. The implementation of AES CTR uses the same underlying implementation as aes_ctr_[en|de]crypt, but hands the state back to the client after every operation. The HMAC implementation differs from the previous implementations of sha_mac and md5_mac. The old implementations did not utilize the OpenSSL HMAC implementation. In order to ensure that I didn't implement something incorrectly, I chose to use the OpenSSL HMAC implementation directly, since it handles streaming as well. This has the added side benefit of allowing other hash functions to be used as desired (for instances, I added support for ripemd160 hashing). While I haven't done this, it seems like the existing md5_mac and sha_mac functions could either be depricated or redefined in terms of the new hmac_ functions. Update AES CTR and HMAC streaming with code review input Ensure that memcpy operations in hmac operations are being size checked properly. Rename aes_ctr_XXX_with_state to aes_ctr_stream_XXX. Remove redundant hmac_init_[sha|md5|ripemd160] functions. Fix documentation for hmac_final_n. Fix possible error using negative value as a marker on an unsigned int Now, use a separate marker and add a unit test to test specifically for a case where HashLen is larger than the underlying resultant hash. Revert "Fix possible error using negative value as a marker on an unsigned int" This reverts commit 59cb177aa96444c0fd3ace6d01f7b8a70dd69cc9. Resolve buffer overflow posibility on an unsigned int. Change handling the marker for HashLen to use the fact that a second parameter that has to be the the HashLen was passed. Also, ensure that HashLen parameter is positive.
2011-04-19Renamed the function strong_rand_uniform to strong_rand_mpint.Niclas Eklund
Added some checks in crypto.erl and crypto.c. Changed ssh_bits to use strong_rand_mpint.
2011-04-15Adds NIFs for cryptographically strong random number generation.Niclas Eklund
Also adds documentation and unit tests. Thanks to Geoff Cant.
2011-03-11Update copyright yearsBjörn-Egil Dahlberg
2011-02-28Make crypto.c work with valgrind 3.6 and correct cerl.srcPatrik Nyblom
2010-11-17crypto CTR supportSverker Eriksson
2010-09-03Fix memory leaks in cryptoRickard Green
2010-09-02Fix valgrind buildRickard Green
2010-08-20Fix RC4 stream cipher binding (crypto:rc4_encrypt_with_state/2)Paul Guyot
2010-06-09OTP-8700 crypto:dss_sign and dss_verify with pre-hashed digest.Sverker Eriksson
New variants of crypto:dss_sign and crypto:dss_verify with an extra argument to control how the digest is calculated.
2010-06-03OTP-8555 Send message from NIFSverker Eriksson
New NIF features: Send messages from a NIF, or from thread created by NIF, to any local process (enif_send) Store terms between NIF calls (enif_alloc_env, enif_make_copy) Create binary terms with user defined memory management (enif_make_resource_binary)
2010-04-28OTP-8333 Crypto using NIF'sSverker Eriksson
crypto application changed to use NIFs instead of driver.