Commit Graph

1420 Commits

Author SHA1 Message Date
Daniel Abramov fab6ea4727 Conditionally compile PEM functions for CMS
Apparently libressl does not quite support all CMS functions (well, at
least the bindings for CMS are currently compile-time guarded), so CI
checks inside the systest fail during the verification on libressl.
This is an attempt to fix it.
2019-06-12 16:48:16 +02:00
Daniel Abramov ed966a09ac Extend CMS unit tests (pem/der conversions) 2019-06-12 10:36:44 +02:00
Daniel Abramov 69ee79d435 Fix formatting in cms `to_der` implementation 2019-06-12 10:24:53 +02:00
Daniel Abramov 124c05d058 Add `CmsContentInfo` <-> PEM bindings 2019-06-12 10:23:48 +02:00
Leo d2e48e8d1f Add Debug impl for EcKey 2019-06-10 21:57:10 +08:00
Russell Greene 1c3f5b5f57 Address comments 2019-06-07 19:32:36 -06:00
Russell Greene b9341856b1 Add AES_wrap_key and AES_unwrap_key functionality 2019-06-05 21:03:34 -06:00
Simon Génier e3ac3f40bf Display for Error was incorrectly showing func instead of reason. 2019-05-30 15:06:14 -04:00
Steven Fackler 3b064fdb02 Release openssl v0.10.23 2019-05-18 12:13:39 -07:00
Steven Fackler b6d968b378 Release openssl-sys v0.9.47 2019-05-18 12:10:57 -07:00
Steven Fackler b39a712076 Fix handling of session callbacks
The session context is used for session callbacks rather than the normal
context, which breaks state lookup when the context has been swapped out
(e.g. for SNI). Since there isn't an accessor for the session context,
we just store an extra reference in the SSL's ex data.

Closes #1115
2019-05-18 10:27:40 -07:00
Andy Caldwell 2e37753790
Const-correctness 2019-05-13 19:11:15 +01:00
Andy Caldwell 41fea135ad
Allow passing by non-owned reference 2019-05-13 18:49:09 +01:00
Andy Caldwell 628c3b338a
Add SSL_CTX_add_client_CA on OpenSSL 2019-05-13 15:08:02 +01:00
Steven Fackler 6686092edf Release openssl v0.10.22 2019-05-08 18:46:43 -07:00
Steven Fackler a9b9f818a1
Merge pull request #1097 from vishwin/master
Support LibreSSL 2.9.1
2019-05-08 18:40:18 -07:00
Steven Fackler 801a236413 Ignore SRTP tests on libressl 2.9.1
SRTP is broken in that release!
2019-05-08 18:19:42 -07:00
Steven Fackler d2b169dae6 Fix doc link bugs 2019-05-03 07:32:05 -07:00
Steven Fackler 3331908a1d Release openssl v0.10.21 2019-04-30 21:59:02 -07:00
Nathaniel McCallum 7ad3208937 Fix output size check for stream ciphers
The previous output size check presumed a block cipher. Therefore, it
enforced an unnecessary extra byte in the case of stream ciphers. This
patch ensures that our size checks don't force the caller to
overallocate for stream ciphers.
2019-04-29 17:45:12 -04:00
Steven Fackler 4121ac34cb Fix deprecation warnings in tests 2019-04-25 10:03:13 -07:00
Charlie Li d79090a00a Reconcile exdata and version functions between libraries/versions. 2019-04-24 23:15:56 -04:00
Charlie Li 98f91769e3 Add missing any() in the {,D}TLS_method usage logic. 2019-04-24 19:29:01 -04:00
Charlie Li f0b8a2e467 Support LibreSSL 2.9.1
LibreSSL 2.9.1 added generic DTLS methods.

While here, bump CircleCI.
2019-04-24 16:08:42 -04:00
Steven Fackler 2024379f17 Clean up seal/open a bit 2019-04-23 20:21:43 -07:00
Vojtěch Pejša f40a328d43 Remove unnecessary version req and clean up param names. 2019-04-18 10:47:50 +02:00
Vojtěch Pejša 1b5293a977 Address comments. 2019-04-17 20:11:14 +02:00
Vojtěch Pejša bbff79636f Remove nested groups in use. 2019-04-15 13:59:29 +02:00
Vojtěch Pejša 63c7bda0c2 Add minimum ossl version. 2019-04-15 13:41:54 +02:00
Vojtěch Pejša 08879ed512 Add EVP_Seal and EVP_Open 2019-04-15 00:54:49 +02:00
Steven Fackler 0b1c2a1048 Cleanup ssl tests 2019-03-20 19:34:50 -07:00
Steven Fackler 576de0eaa2 Release openssl v0.10.20 2019-03-20 10:45:10 -04:00
Nathaniel McCallum 702bc48b1c Expose EC_GROUP_get_curve_name()
This gives us the ability to get the Nid from an EcGroupRef.
2019-03-19 11:10:35 -04:00
Nathaniel McCallum d9cb5433b1 Expose EVP_MD_type()
This gives us the ability to get the Nid from a MessageDigest.
2019-03-19 11:10:35 -04:00
Steven Fackler c3e2604702 Implement Eq for MessageDigest
Closes #1081
2019-03-17 14:33:56 -04:00
Steven Fackler 2a028e59e4 Move CHANGELOG.md into openssl 2019-03-14 12:04:01 -07:00
Alexey Galakhov a0e5b31799 X.509: add verify methods 2019-03-11 22:35:43 +01:00
tgbit 546eb4d391 CMS: add encrypt, from_der 2019-03-02 00:33:52 +01:00
Steven Fackler 4436245ab8 Release openssl v0.10.19 2019-03-01 12:40:21 -08:00
Steven Fackler 0dd632456f Release openssl-sys v0.9.42 2019-03-01 12:38:18 -08:00
Steven Fackler 404670691c Use into for infallible conversions 2019-03-01 12:36:01 -08:00
Steven Fackler 404b7f1790 Add session cache size accessors 2019-03-01 10:07:51 -08:00
Steven Fackler a16482f972 Add session info accessors 2019-02-28 22:08:48 -08:00
Steven Fackler 913267e68a Add SslCtx::{add,remove}_session 2019-02-28 19:48:10 -08:00
Edouard Oger 55fee497bb Implement Clone for Dsa 2019-02-28 14:10:49 -05:00
Steven Fackler e088d1d856 Release openssl v0.10.18 2019-02-22 12:34:11 -07:00
Steven Fackler 58ccea26ad Fix cipher_name return value 2019-02-22 12:33:41 -07:00
Steven Fackler 28c0af386f Release openssl v0.10.17 2019-02-22 10:51:35 -07:00
Steven Fackler 4c6af10cbd Release openssl-sys v0.9.41 2019-02-22 10:50:16 -07:00
Steven Fackler 70afbb8393 Add standard ciphername support 2019-02-22 10:33:12 -07:00
Steven Fackler 7eee39f1ec Rustfmt 2019-02-22 10:14:15 -07:00
Ryuichi Okumura 899fc30e9b
Change from EVP_des_ede3_cfb to EVP_des_ede3_cfb64 2019-02-18 19:35:00 +09:00
Ryuichi Okumura 941a69a4d2
Add des_ede3_cfb symm cipher 2019-02-17 22:21:01 +09:00
Steven Fackler 3a170b655b Make Rsa::generate delegate to Rsa::generate_with_e 2019-01-30 09:16:12 -08:00
Steven Fackler e48901e20b
Merge pull request #1054 from Zolmeister/generate-with-e
add Rsa::generate_with_e(bits: u32, e: BigNum)
2019-01-29 18:50:33 -08:00
Zolmeister dd140f5167 add Rsa::generate_with_e(bits: u32, e: BigNum) 2019-01-29 12:00:47 -06:00
Steven Fackler 34755f8a6b ASN1_TIME_from_string_x509 was added in 1.1.1 2019-01-27 13:14:11 -08:00
Steven Fackler 691ce7ca2a Add Asn1Time::from_str and Asn1Time::from_str_x509
Closes #1051
2019-01-27 13:05:03 -08:00
Zolmeister e56e09b6a4 Add RsaRef::check_key 2019-01-18 21:03:04 -06:00
Jonas Schievink 6378eff9db Forward to BigNumRef::to_asn1_integer 2019-01-18 17:58:48 +01:00
Jonas Schievink 4ff5f4486f Add `Asn1Integer::from_bn` 2019-01-18 12:21:39 +01:00
Jonas Schievink b565a0c7eb Implement AsRef<str/[u8]> for OpensslString{Ref} 2019-01-17 14:19:36 +01:00
Steven Fackler 69aa335871 Drop data_encoding dev dependency 2019-01-04 20:50:00 -08:00
PSeitz 1c48c9c456
Update bn.rs 2019-01-04 11:54:36 +01:00
Steven Fackler 57e02abb50 Release openssl v0.10.16 2018-12-16 09:04:07 -08:00
Stacey Ell 800c232c09 Fix cargo dependency documentation
`feature` -> `features`
2018-11-24 13:29:10 -07:00
Steven Fackler 5c7fa43d87 Add bindings to RAND_keep_random_devices_open
Closes #1019
2018-11-22 09:32:50 -07:00
Sameer 38a4dccceb Add new SHAKE128/256 EVP message digest functions in OpenSSL 1.1.1, fixes #1017. 2018-11-21 15:46:03 -05:00
Sameer e0e0a96cb3 Add new SHA3 EVP message digest functions in OpenSSL 1.1.1 2018-11-21 15:31:50 -05:00
Steven Fackler b88778bc76 Release openssl v0.10.15 2018-10-22 09:03:28 -07:00
Steven Fackler 93c67e2f77 Implement DoubleEndedIterator for stack iters 2018-10-22 08:49:24 -07:00
Steven Fackler e2783971ea Release openssl v0.10.14 2018-10-18 20:16:55 -07:00
Steven Fackler 3aecfe5655 Release openssl-sys v0.9.39 2018-10-18 20:11:35 -07:00
Steven Fackler 4256cfbf19 Fix some accidentally-public functions 2018-10-18 11:37:36 -07:00
Steven Fackler 3013d2e93f Release openssl v0.10.13 2018-10-14 16:10:22 -07:00
Steven Fackler d3bb880866 Release openssl-sys 0.9.37 2018-10-14 16:09:17 -07:00
Steven Fackler d52be16cc4
Merge pull request #1005 from samscott89/add-pkcs7-support
Add PKCS7 support
2018-10-10 22:18:46 -07:00
Steven Fackler 04ada473d1 Cleanup 2018-10-10 21:25:29 -07:00
Steven Fackler d2cc0eae2d Move README info into crate root docs
This is more discoverable in the modern Rust world!
2018-10-07 19:59:33 -07:00
Sam Scott 8ae761063c Address comments. 2018-10-02 22:53:03 -04:00
Sam Scott 2dd3736444 Refactor to match style and add documentation. 2018-10-02 17:25:18 -04:00
Jonatan Männchen cd1d1955d9 PKCS7 Support
(Rebased onto latest version)
2018-10-02 17:25:18 -04:00
Mike Belopuhov 18dfc9b6b2 Add support for encoding and decoding ECDSA signatures 2018-09-28 14:43:33 +02:00
Steven Fackler 5894cdfdc5
Fix get session callback
This could previously open up the possibility of a double-free!

Closes #996
2018-09-17 09:30:16 -07:00
Steven Fackler 22231d7547 Support the client hello callback 2018-09-15 13:29:18 -07:00
Steven Fackler a548913e44 Release openssl 0.10.12 2018-09-13 19:23:09 -07:00
李伟 348cb7391b
Fix typo
Fix typo in docs for openssl::rsa::Rsa::from_private_components
2018-09-13 12:39:57 -10:00
Steven Fackler 8c6bc774db Support libressl 2.8.0
Closes #988
2018-09-12 20:44:22 -07:00
Steven Fackler ea18d84de3 clean up example 2018-09-02 14:51:08 -07:00
Steven Fackler 947dfbd143 Small cleanup
Closes #981
2018-09-02 14:26:27 -07:00
Steven Fackler bc4e47a321 Fix lookup errors with SNI callback.
The job of an SNI callback is typically to swap out the context
associated with an SSL depending on the domain the client is trying to
talk to. Typically, only the callbacks associated with the current
context are used, but this is not the case for the SNI callback.

If SNI is run for a second time on a connection (i.e. in a
renegotiation) and the context was replaced with one that didn't itself
register an SNI callback, the old callback would run but wouldn't be
able to find its state in the context's ex data. To work around this, we
pass the pointer to the callback data directly to the callback to make
sure it's always available. It still lives in ex data to handle the
lifetime management.

Closes #979
2018-08-31 20:23:55 -07:00
Steven Fackler 2df87cfd59 Fix doc reference 2018-08-19 20:19:10 -07:00
Steven Fackler ef7721092d SRTP cleanup 2018-08-19 18:50:11 -07:00
Aron Wieck 59c578cf04 Add methods for DTLS/SRTP key handshake 2018-08-14 16:04:33 +02:00
Steven Fackler 1396143c66 Add get_shutdown and set_shutdown 2018-08-08 13:19:55 -07:00
Steven Fackler ef69870ea2 Release openssl 0.10.11 2018-08-04 10:12:12 -07:00
Alex Crichton 71ee9439ca Support builds of OpenSSL from vendored source (take 2)
This is a revival of #684 to see if I can help push it across the finish line!

Closes #580
2018-07-30 15:15:24 -07:00
Steven Fackler 415f399b2c Fix tests when built with no-ec2m
The other curve identifier isn't valid, at least in some contexts so
just ignore the test in those cases.

Closes #964
2018-07-29 09:48:03 -07:00
Steven Fackler ee5215bd31 SslSessionRef methods return static strings
Closes #961
2018-07-19 20:22:57 -07:00
Josh Abraham a964d05d4a Fix spelling in symm docs 2018-07-14 11:54:26 -10:00
Steven Fackler 1392b006e2
Merge pull request #937 from marcoh00/iterable-x509names
X509NameRef: Provide an iterator over all entries
2018-07-07 20:20:45 -07:00
Steven Fackler 6422ffb1b2 Clean up IGE example
Closes #955
2018-07-04 23:15:33 -07:00
Steven Fackler 07c49e517e
Only grab the name entry count when needed 2018-06-26 22:31:10 -07:00
Steven Fackler 4c1891cc10
Merge pull request #950 from WanzenBug/master
Add access to private/public components of DSA key pairs.
2018-06-23 23:53:09 -04:00
Moritz Wanzenböck 339d09fbf3 Simplify DSA from private components 2018-06-23 18:16:32 +02:00
Stefan Tatschner 321c076ab3
Fix build with openssl 1.1.1 and no-psk
I used this as build flags for openssl 1.1.1:

```
/usr/bin/perl ./Configure linux-x86_64 no-shared no-zlib no-psk no-srp no-weak-ssl-ciphers no-idea
```

rust-openssl crashed with this error:

```
   Compiling openssl v0.10.10                                                                                                                                                                                      
error[E0433]: failed to resolve. Use of undeclared type or module `CStr`                                                                                                                                           
   --> /home/stefan/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-0.10.10/src/ssl/callbacks.rs:386:16                                                                                                    
    |                                                                                                                                                                                                              
386 |     let line = CStr::from_ptr(line).to_bytes();                                                                                                                                                              
    |                ^^^^ Use of undeclared type or module `CStr`                                                                                                                                                  
                                                                                                                                                                                                                   
error[E0412]: cannot find type `c_char` in this scope                                                                                                                                                              
   --> /home/stefan/.cargo/registry/src/github.com-1ecc6299db9ec823/openssl-0.10.10/src/ssl/callbacks.rs:377:75                                                                                                    
    |                                                                                                                                                                                                              
377 | pub unsafe extern "C" fn raw_keylog<F>(ssl: *const ffi::SSL, line: *const c_char)                                                                                                                            
    |                                                                           ^^^^^^ did you mean `c_uchar`?                                                                                                     
help: possible candidates are found in other modules, you can import them into scope                                                                                                                               
    |                                                                                                                                                                                                              
1   | use libc::c_char;                                                                                                                                                                                            
    |                                                                                                                                                                                                              
1   | use std::os::raw::c_char;                                                                                                                                                                                    
    |                                                                                                                                                                                                              
                                                                                                                                                                                                                   
error: aborting due to 2 previous errors                                                                                                                                                                           
                                                                                                                                                                                                                   
Some errors occurred: E0412, E0433.                                                                                                                                                                                
For more information about an error, try `rustc --explain E0412`.                                                                                                                                                  
error: Could not compile `openssl`.                                                                                                                                                                                
warning: build failed, waiting for other jobs to finish... 
```

this patch fixes the problem
2018-06-21 22:19:29 +02:00
Moritz Wanzenböck c624427e31 Fix fallback implementation of DSA utility methods 2018-06-18 20:32:34 +02:00
Moritz Wanzenböck 0390aba73b Add tests for DSA key pairs 2018-06-18 18:12:34 +02:00
Moritz Wanzenböck 4994e75d2c Add Dsa::from_(private|public)_components
Add 2 methods to create a DSA key pair from its raw components.
2018-06-18 18:10:02 +02:00
Moritz Wanzenböck 52c942f4b3 Add methods to access private and public part of DSA keys 2018-06-18 11:39:15 +02:00
Steven Fackler 6440ee04ef
Merge pull request #943 from lolzballs/master
Add wrapper for SSL_CTX_set_psk_server_callback
2018-06-17 15:47:00 -07:00
Benjamin Cheng bf86580bec
Disable TLSv1.3 for psk_ciphers test 2018-06-17 17:00:22 -04:00
Steven Fackler 115cb730b0 Switch to accessors in libressl where possible
Some accessors are mysteriously still macros so we can't make everything
opaque yet, unfortunately.

cc #909
2018-06-09 21:49:36 -07:00
Steven Fackler 6834b97ff4 Release openssl v0.10.10 2018-06-06 13:37:25 -07:00
Steven Fackler d82a49bee2 Release openssl-sys 0.9.33 2018-06-06 13:36:24 -07:00
Steven Fackler cdc90c7e9d Add SslRef::set_alpn_protos 2018-06-04 20:19:27 -07:00
Marco Huenseler 14b5439347 Rename X509NameRef::all_entries and refactor end-of-iterator checks 2018-06-03 15:38:46 +02:00
Marco Huenseler f5e6d57c47 Provide an Asn1Object getter method for X509NameEntryRef 2018-06-03 15:38:46 +02:00
Marco Huenseler 2afdc16fc9 Make X509NameRef provide an iterator over all X509NameEntries 2018-06-03 15:38:46 +02:00
Steven Fackler 0745d66927 Update to 1.1.1-pre7
The initial session ticket is now sent as part of SSL_accept, so some
tests need to write a single byte through the stream to make sure that
both ends have fully completed to avoid test flakes.

TLSv1.3 cipher suite control has been extracted from the normal cipher
list into a separate method: SslContextBuilder::set_ciphersuites.
2018-06-02 13:58:56 -07:00
Benjamin Cheng 88c61d252f
Ensure psk test callbacks are called 2018-06-02 15:50:24 -04:00
Benjamin Cheng 285884c925
push PSK callback errors onto ErrorStack 2018-06-02 15:49:59 -04:00
Benjamin Cheng bcc4ca0285
Change psk test cipher to PSK-AES128-CBC-SHA
Hopefully it works on CI servers now
2018-06-02 13:59:04 -04:00
Benjamin Cheng b1c77a7ea5
Use is_null() 2018-06-02 13:49:42 -04:00
Benjamin Cheng 5d8a44612d
add test for psk; deprecated set_psk_callback 2018-06-02 13:47:52 -04:00
Benjamin Cheng b1eb1224f5
Merge remote-tracking branch 'origin/master' 2018-06-02 10:56:31 -04:00
Steven Fackler 83767b861e Release openssl v0.10.9 2018-06-01 20:59:26 -07:00
Steven Fackler 52f581ffc9 Release openssl-sys v0.9.32 2018-06-01 20:57:09 -07:00
Steven Fackler a3a2605115 fix build on older rustc 2018-06-01 20:47:46 -07:00
Steven Fackler 10b2a34529 Adjust Nid signature algorithm APIs 2018-06-01 20:36:19 -07:00
Steven Fackler c2145384a9 Fix types 2018-06-01 20:07:13 -07:00
Steven Fackler 15cb335e66 Fix use-after-free in cms
Closes #941
2018-06-01 19:38:52 -07:00
Steven Fackler 3456add537 Add SslRef::verified_chain 2018-05-29 21:53:22 -07:00
Marco Huenseler 2977f6ed30 rewrite Nid::{long_name,short_name} to return Results instead of Options 2018-05-28 12:15:05 +02:00
Marco Huenseler b8de619fbe Get Nid string representations 2018-05-28 12:13:40 +02:00
Steven Fackler a774c0c5f2 Rename X509Ref::fingerprint to X509Ref::digest and avoid allocating 2018-05-24 21:07:36 -07:00
Steven Fackler 772e1c003f Add some digest support 2018-05-24 21:06:11 -07:00
Steven Fackler 3cd33cdd8b Don't panic on bogus servernames
Also add a second version of the method to avoid filtering out non-utf8
names.

Closes #930
2018-05-24 20:22:15 -07:00
Steven Fackler c0876cc8c6 Add bindings to SSL_get_finished and SSL_get_peer_finished
These are used for the tls-unique SCRAM channel binding mode.
2018-05-24 20:00:28 -07:00
Steven Fackler c7db3d18ad
Merge pull request #920 from Ralith/max-early-data-accessors
TLS1.3 early data support
2018-05-22 20:42:46 -07:00
Benjamin Saunders 2e478fdcf4 Expose early I/O 2018-05-22 20:25:28 -07:00
Steven Fackler b187eb0ee3 Release openssl v0.10.8 2018-05-20 21:03:16 -07:00
Steven Fackler 25df3c8b51 Release openssl-sys 0.9.31 2018-05-20 21:02:12 -07:00
Steven Fackler 7a7f98a32c
Revert "Move proto version accessors to SslContextRef" 2018-05-20 20:55:20 -07:00
Steven Fackler b976b5fd52 Move proto version accessors to SslContextRef
Add a Derf impl for SslContextBuilder so existing use still works.
2018-05-20 20:47:00 -07:00
Steven Fackler f0347fbce8 Improve error Display impls 2018-05-20 19:37:19 -07:00
Steven Fackler 3ab1cc7a8f Make Stack Sync + Send 2018-05-20 15:24:38 -07:00
Steven Fackler 4c1fdf1d81 Support ALPN on libressl
Closes #690
2018-05-20 12:52:49 -07:00
Steven Fackler a6fcef01c0 Overhaul openssl cfgs
Also expose hostname verification on libressl
2018-05-20 12:33:02 -07:00
Steven Fackler d991566f2b Support min/max version in LibreSSL
Their implementations of the accessors don't behave expected with no
bounds, so we ignore those bits of the tests.
2018-05-19 19:57:12 -07:00