<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openssl.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dwmw2</id>
	<title>OpenSSLWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openssl.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dwmw2"/>
	<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php/Special:Contributions/Dwmw2"/>
	<updated>2026-05-28T23:01:36Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.13</generator>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2251</id>
		<title>OpenSSL 1.1.0 Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2251"/>
		<updated>2015-07-30T21:10:06Z</updated>

		<summary type="html">&lt;p&gt;Dwmw2: /* Things that Broke in TianoCore/EDKII */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a parent page for discussion about API changes being done for OpenSSL version 1.1&lt;br /&gt;
&lt;br /&gt;
The overall goal of this project is to make most data structures opaque to applications.  This provides us with a number of benefits:&lt;br /&gt;
* We can add fields without breaking binary compatibility&lt;br /&gt;
* Applications are more robust and can be more assured about correctness&lt;br /&gt;
* It helps us determine which (new) accessors and settors, for example, are needed&lt;br /&gt;
&lt;br /&gt;
Please add sub-pages to discuss particular parts of the library as work progresses.&lt;br /&gt;
&lt;br /&gt;
== Major Changes so far ==&lt;br /&gt;
&lt;br /&gt;
* All structures in libssl public header files have been removed so that they are &amp;quot;opaque&amp;quot; to library users. You should use the provided accessor functions instead&lt;br /&gt;
* The old DES API has been removed&lt;br /&gt;
* bn, a sub library in libcrypto, has been made opaque&lt;br /&gt;
* Access to deprecated functions/macros has been removed by default. To enable access you must do two things. 1) Build OpenSSL with deprecation support (pass &amp;quot;enable-deprecated&amp;quot; as an argument to config) 2) Applications must define &amp;quot;OPENSSL_USE_DEPRECATED&amp;quot; before including OpenSSL header files&lt;br /&gt;
* HMAC_Init and HMAC_cleanup were previously stated in the docs and header files as being deprecated - but were not flagged in previous versions with OPENSSL_NO_DEPRECATED. This has been corrected in 1.1.0. Access to these functions/macros will be off by default in 1.1.0 as per the note above about deprecation.&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Qt ==&lt;br /&gt;
&lt;br /&gt;
Here's what's broken in the dev branch of Qt when building openssl master as of 6 Feb 2015.&lt;br /&gt;
&lt;br /&gt;
* DH - we were directly accessing p and q to set the DH params to primes embedded in Qt. We can probably replace this with SSL_CTX_set_dh_auto(ctx, 1). Another option suggested by Steve Henson is to save the DHparams we're using at the moment then use d2i_DHparams to load them in. This is compatible with openssl versions that don't have the dh_auto option.&lt;br /&gt;
&lt;br /&gt;
* ctx-&amp;gt;cert_store - we were directly accessing the cert_store field of SSL_CTX. We can probably replace this with X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx) [Fixed in dev]&lt;br /&gt;
&lt;br /&gt;
* session-&amp;gt;tlsext_tick_lifetime_hint - we were directly accessing the lifetime hint of the session. [A new API to access this field has been added]&lt;br /&gt;
&lt;br /&gt;
* cipher-&amp;gt;valid - we were directly accessing the valid field of SSL_CIPHER. No replacement found. [This turned out not to be needed and so will be removed].&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Curl ==&lt;br /&gt;
&lt;br /&gt;
* SSL_SESSION-&amp;gt;ssl_version. Replaced with SSL_version(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in wget ==&lt;br /&gt;
&lt;br /&gt;
* SSL-&amp;gt;state. Replaced with SSL_state(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Apache Traffic Manager ==&lt;br /&gt;
&lt;br /&gt;
* Setting SSL-&amp;gt;rbio without setting SSL-&amp;gt;wbio. New function introduction in 1.1.0 to handle this: SSL_set_rbio()&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in OpenConnect ==&lt;br /&gt;
&lt;br /&gt;
In order to simulate &amp;quot;resume&amp;quot; of a DTLS session which never really existed but which was actually negotiated over the VPN control connection, [http://git.infradead.org/users/dwmw2/openconnect.git/blob/fa5cea08:/dtls.c#l147 this code] in the [http://www.infradead.org/openconnect/ OpenConnect VPN client] needs to set the following fields in a new &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt;:&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;ssl_version&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;cipher{,_id}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;master_key{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;session_id{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was fixed with [http://git.infradead.org/users/dwmw2/openconnect.git/commitdiff/5abb133f this OpenConnect commit] which makes it create the ASN.1 representation of the session and import it with &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt;. This is done conditionally in the above patch because it depends on the [http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=af674d4e20a82c2a98767b837072d7093c70b1cf fix in openssl HEAD] for &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; to make it cope with &amp;lt;tt&amp;gt;DTLS1_BAD_VER&amp;lt;/tt&amp;gt; &amp;lt;i&amp;gt;([http://rt.openssl.org/Ticket/Display.html?id=3704 RT#3704])&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other simpler things which broke:&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CIPHER-&amp;gt;id&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CIPHER_get_id()&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CTX-&amp;gt;extra_certs&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CTX_get_extra_chain_certs_only()&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in TianoCore/EDKII ==&lt;br /&gt;
&lt;br /&gt;
EDKII is the reference implementation of UEFI firmware.&lt;br /&gt;
&lt;br /&gt;
* Various implicit inclusions of &amp;lt;tt&amp;gt;&amp;amp;lt;openssl/bn.h&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;openssl/rsa.h&amp;amp;gt;&amp;lt;/tt&amp;gt; needed to be made explicit. ''[http://git.infradead.org/users/dwmw2/edk2.git/commitdiff/8d7d32c1 (commit)]''&lt;br /&gt;
* &amp;lt;tt&amp;gt;X509_NAME-&amp;gt;bytes-&amp;gt;{data,length}&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;i2d_X509_NAME()&amp;lt;/tt&amp;gt; ''[http://git.infradead.org/users/dwmw2/edk2.git/commitdiff/e192c51b (commit)]''&lt;br /&gt;
* &amp;lt;tt&amp;gt;X509_ATTRIBUTE-&amp;gt;{object,value}&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;X509_ATTRIBUTE_get0_object()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;X509_ATTRIBUTE_get0_type()&amp;lt;/tt&amp;gt; ''[http://git.infradead.org/users/dwmw2/edk2.git/commitdiff/1bd8ee96 (commit)]''&lt;br /&gt;
* &amp;lt;tt&amp;gt;ASN1_OBJECT-&amp;gt;{length,data}&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;OBJ_get0_data()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;OBJ_length()&amp;lt;/tt&amp;gt;. With backward-compatibility &amp;lt;tt&amp;gt;#define&amp;lt;/tt&amp;gt; of same. ''[http://git.infradead.org/users/dwmw2/edk2.git/commitdiff/6a7a36edc (commit)]''&lt;/div&gt;</summary>
		<author><name>Dwmw2</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2250</id>
		<title>OpenSSL 1.1.0 Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2250"/>
		<updated>2015-07-30T20:54:16Z</updated>

		<summary type="html">&lt;p&gt;Dwmw2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a parent page for discussion about API changes being done for OpenSSL version 1.1&lt;br /&gt;
&lt;br /&gt;
The overall goal of this project is to make most data structures opaque to applications.  This provides us with a number of benefits:&lt;br /&gt;
* We can add fields without breaking binary compatibility&lt;br /&gt;
* Applications are more robust and can be more assured about correctness&lt;br /&gt;
* It helps us determine which (new) accessors and settors, for example, are needed&lt;br /&gt;
&lt;br /&gt;
Please add sub-pages to discuss particular parts of the library as work progresses.&lt;br /&gt;
&lt;br /&gt;
== Major Changes so far ==&lt;br /&gt;
&lt;br /&gt;
* All structures in libssl public header files have been removed so that they are &amp;quot;opaque&amp;quot; to library users. You should use the provided accessor functions instead&lt;br /&gt;
* The old DES API has been removed&lt;br /&gt;
* bn, a sub library in libcrypto, has been made opaque&lt;br /&gt;
* Access to deprecated functions/macros has been removed by default. To enable access you must do two things. 1) Build OpenSSL with deprecation support (pass &amp;quot;enable-deprecated&amp;quot; as an argument to config) 2) Applications must define &amp;quot;OPENSSL_USE_DEPRECATED&amp;quot; before including OpenSSL header files&lt;br /&gt;
* HMAC_Init and HMAC_cleanup were previously stated in the docs and header files as being deprecated - but were not flagged in previous versions with OPENSSL_NO_DEPRECATED. This has been corrected in 1.1.0. Access to these functions/macros will be off by default in 1.1.0 as per the note above about deprecation.&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Qt ==&lt;br /&gt;
&lt;br /&gt;
Here's what's broken in the dev branch of Qt when building openssl master as of 6 Feb 2015.&lt;br /&gt;
&lt;br /&gt;
* DH - we were directly accessing p and q to set the DH params to primes embedded in Qt. We can probably replace this with SSL_CTX_set_dh_auto(ctx, 1). Another option suggested by Steve Henson is to save the DHparams we're using at the moment then use d2i_DHparams to load them in. This is compatible with openssl versions that don't have the dh_auto option.&lt;br /&gt;
&lt;br /&gt;
* ctx-&amp;gt;cert_store - we were directly accessing the cert_store field of SSL_CTX. We can probably replace this with X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx) [Fixed in dev]&lt;br /&gt;
&lt;br /&gt;
* session-&amp;gt;tlsext_tick_lifetime_hint - we were directly accessing the lifetime hint of the session. [A new API to access this field has been added]&lt;br /&gt;
&lt;br /&gt;
* cipher-&amp;gt;valid - we were directly accessing the valid field of SSL_CIPHER. No replacement found. [This turned out not to be needed and so will be removed].&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Curl ==&lt;br /&gt;
&lt;br /&gt;
* SSL_SESSION-&amp;gt;ssl_version. Replaced with SSL_version(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in wget ==&lt;br /&gt;
&lt;br /&gt;
* SSL-&amp;gt;state. Replaced with SSL_state(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Apache Traffic Manager ==&lt;br /&gt;
&lt;br /&gt;
* Setting SSL-&amp;gt;rbio without setting SSL-&amp;gt;wbio. New function introduction in 1.1.0 to handle this: SSL_set_rbio()&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in OpenConnect ==&lt;br /&gt;
&lt;br /&gt;
In order to simulate &amp;quot;resume&amp;quot; of a DTLS session which never really existed but which was actually negotiated over the VPN control connection, [http://git.infradead.org/users/dwmw2/openconnect.git/blob/fa5cea08:/dtls.c#l147 this code] in the [http://www.infradead.org/openconnect/ OpenConnect VPN client] needs to set the following fields in a new &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt;:&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;ssl_version&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;cipher{,_id}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;master_key{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;session_id{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was fixed with [http://git.infradead.org/users/dwmw2/openconnect.git/commitdiff/5abb133f this OpenConnect commit] which makes it create the ASN.1 representation of the session and import it with &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt;. This is done conditionally in the above patch because it depends on the [http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=af674d4e20a82c2a98767b837072d7093c70b1cf fix in openssl HEAD] for &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; to make it cope with &amp;lt;tt&amp;gt;DTLS1_BAD_VER&amp;lt;/tt&amp;gt; &amp;lt;i&amp;gt;([http://rt.openssl.org/Ticket/Display.html?id=3704 RT#3704])&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other simpler things which broke:&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CIPHER-&amp;gt;id&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CIPHER_get_id()&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CTX-&amp;gt;extra_certs&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CTX_get_extra_chain_certs_only()&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in TianoCore/EDKII ==&lt;br /&gt;
&lt;br /&gt;
EDKII is the reference implementation of UEFI firmware.&lt;br /&gt;
&lt;br /&gt;
* Various implicit inclusions of &amp;lt;tt&amp;gt;&amp;amp;lt;openssl/bn.h&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;openssl/rsa.h&amp;amp;gt;&amp;lt;/tt&amp;gt; needed to be made explicit.&lt;br /&gt;
* &amp;lt;tt&amp;gt;X509_NAME-&amp;gt;bytes-&amp;gt;{data,length}&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;i2d_X509_NAME()&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;X509_ATTRIBUTE-&amp;gt;object&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;X509_ATTRIBUTE_get0_object()&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;ASN1_OBJECT-&amp;gt;{length,data}&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;OBJ_get0_data()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;OBJ_length()&amp;lt;/tt&amp;gt;. With backward-compatibility &amp;lt;tt&amp;gt;#define&amp;lt;/tt&amp;gt; of same.&lt;/div&gt;</summary>
		<author><name>Dwmw2</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2183</id>
		<title>OpenSSL 1.1.0 Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2183"/>
		<updated>2015-03-03T09:05:32Z</updated>

		<summary type="html">&lt;p&gt;Dwmw2: /* Things that Broke in OpenConnect */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a parent page for discussion about API changes being done for OpenSSL version 1.1&lt;br /&gt;
&lt;br /&gt;
The overall goal of this project is to make most data structures opaque to applications.  This provides us with a number of benefits:&lt;br /&gt;
* We can add fields without breaking binary compatibility&lt;br /&gt;
* Applications are more robust and can be more assured about correctness&lt;br /&gt;
* It helps us determine which (new) accessors and settors, for example, are needed&lt;br /&gt;
&lt;br /&gt;
Please add sub-pages to discuss particular parts of the library as work progresses.&lt;br /&gt;
&lt;br /&gt;
== Major Changes so far ==&lt;br /&gt;
&lt;br /&gt;
* All structures in libssl public header files have been removed so that they are &amp;quot;opaque&amp;quot; to library users. You should use the provided accessor functions instead&lt;br /&gt;
* The old DES API has been removed&lt;br /&gt;
* bn, a sub library in libcrypto, has been made opaque&lt;br /&gt;
* Access to deprecated functions/macros has been removed by default. To enable access you must do two things. 1) Build OpenSSL with deprecation support (pass &amp;quot;enable-deprecated&amp;quot; as an argument to config) 2) Applications must define &amp;quot;OPENSSL_USE_DEPRECATED&amp;quot; before including OpenSSL header files&lt;br /&gt;
* HMAC_Init and HMAC_cleanup were previously stated in the docs and header files as being deprecated - but were not flagged in previous versions with OPENSSL_NO_DEPRECATED. This has been corrected in 1.1.0. Access to these functions/macros will be off by default in 1.1.0 as per the note above about deprecation.&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Qt ==&lt;br /&gt;
&lt;br /&gt;
Here's what's broken in the dev branch of Qt when building openssl master as of 6 Feb 2015.&lt;br /&gt;
&lt;br /&gt;
* DH - we were directly accessing p and q to set the DH params to primes embedded in Qt. We can probably replace this with SSL_CTX_set_dh_auto(ctx, 1). Another option suggested by Steve Henson is to save the DHparams we're using at the moment then use d2i_DHparams to load them in. This is compatible with openssl versions that don't have the dh_auto option.&lt;br /&gt;
&lt;br /&gt;
* ctx-&amp;gt;cert_store - we were directly accessing the cert_store field of SSL_CTX. We can probably replace this with X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx) [Fixed in dev]&lt;br /&gt;
&lt;br /&gt;
* session-&amp;gt;tlsext_tick_lifetime_hint - we were directly accessing the lifetime hint of the session. [A new API to access this field has been added]&lt;br /&gt;
&lt;br /&gt;
* cipher-&amp;gt;valid - we were directly accessing the valid field of SSL_CIPHER. No replacement found. [This turned out not to be needed and so will be removed].&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Curl ==&lt;br /&gt;
&lt;br /&gt;
* SSL_SESSION-&amp;gt;ssl_version. Replaced with SSL_version(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in wget ==&lt;br /&gt;
&lt;br /&gt;
* SSL-&amp;gt;state. Replaced with SSL_state(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Apache Traffic Manager ==&lt;br /&gt;
&lt;br /&gt;
* Setting SSL-&amp;gt;rbio without setting SSL-&amp;gt;wbio. New function introduction in 1.1.0 to handle this: SSL_set_rbio()&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in OpenConnect ==&lt;br /&gt;
&lt;br /&gt;
In order to simulate &amp;quot;resume&amp;quot; of a DTLS session which never really existed but which was actually negotiated over the VPN control connection, [http://git.infradead.org/users/dwmw2/openconnect.git/blob/fa5cea08:/dtls.c#l147 this code] in the [http://www.infradead.org/openconnect/ OpenConnect VPN client] needs to set the following fields in a new &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt;:&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;ssl_version&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;cipher{,_id}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;master_key{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;session_id{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was fixed with [http://git.infradead.org/users/dwmw2/openconnect.git/commitdiff/5abb133f this OpenConnect commit] which makes it create the ASN.1 representation of the session and import it with &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt;. This is done conditionally in the above patch because it depends on the [http://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff;h=af674d4e20a82c2a98767b837072d7093c70b1cf fix in openssl HEAD] for &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; to make it cope with &amp;lt;tt&amp;gt;DTLS1_BAD_VER&amp;lt;/tt&amp;gt; &amp;lt;i&amp;gt;([http://rt.openssl.org/Ticket/Display.html?id=3704 RT#3704])&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Other simpler things which broke:&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CIPHER-&amp;gt;id&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CIPHER_get_id()&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CTX-&amp;gt;extra_certs&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CTX_get_extra_chain_certs_only()&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwmw2</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2182</id>
		<title>OpenSSL 1.1.0 Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2182"/>
		<updated>2015-02-17T21:10:00Z</updated>

		<summary type="html">&lt;p&gt;Dwmw2: /* Things that Broke in OpenConnect */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a parent page for discussion about API changes being done for OpenSSL version 1.1&lt;br /&gt;
&lt;br /&gt;
The overall goal of this project is to make most data structures opaque to applications.  This provides us with a number of benefits:&lt;br /&gt;
* We can add fields without breaking binary compatibility&lt;br /&gt;
* Applications are more robust and can be more assured about correctness&lt;br /&gt;
* It helps us determine which (new) accessors and settors, for example, are needed&lt;br /&gt;
&lt;br /&gt;
Please add sub-pages to discuss particular parts of the library as work progresses.&lt;br /&gt;
&lt;br /&gt;
== Major Changes so far ==&lt;br /&gt;
&lt;br /&gt;
* All structures in libssl public header files have been removed so that they are &amp;quot;opaque&amp;quot; to library users. You should use the provided accessor functions instead&lt;br /&gt;
* The old DES API has been removed&lt;br /&gt;
* bn, a sub library in libcrypto, has been made opaque&lt;br /&gt;
* Access to deprecated functions/macros has been removed by default. To enable access you must do two things. 1) Build OpenSSL with deprecation support (pass &amp;quot;enable-deprecated&amp;quot; as an argument to config) 2) Applications must define &amp;quot;OPENSSL_USE_DEPRECATED&amp;quot; before including OpenSSL header files&lt;br /&gt;
* HMAC_Init and HMAC_cleanup were previously stated in the docs and header files as being deprecated - but were not flagged in previous versions with OPENSSL_NO_DEPRECATED. This has been corrected in 1.1.0. Access to these functions/macros will be off by default in 1.1.0 as per the note above about deprecation.&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Qt ==&lt;br /&gt;
&lt;br /&gt;
Here's what's broken in the dev branch of Qt when building openssl master as of 6 Feb 2015.&lt;br /&gt;
&lt;br /&gt;
* DH - we were directly accessing p and q to set the DH params to primes embedded in Qt. We can probably replace this with SSL_CTX_set_dh_auto(ctx, 1). Another option suggested by Steve Henson is to save the DHparams we're using at the moment then use d2i_DHparams to load them in. This is compatible with openssl versions that don't have the dh_auto option.&lt;br /&gt;
&lt;br /&gt;
* ctx-&amp;gt;cert_store - we were directly accessing the cert_store field of SSL_CTX. We can probably replace this with X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx) [Fixed in dev]&lt;br /&gt;
&lt;br /&gt;
* session-&amp;gt;tlsext_tick_lifetime_hint - we were directly accessing the lifetime hint of the session. [A new API to access this field has been added]&lt;br /&gt;
&lt;br /&gt;
* cipher-&amp;gt;valid - we were directly accessing the valid field of SSL_CIPHER. No replacement found. [This turned out not to be needed and so will be removed].&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Curl ==&lt;br /&gt;
&lt;br /&gt;
* SSL_SESSION-&amp;gt;ssl_version. Replaced with SSL_version(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in wget ==&lt;br /&gt;
&lt;br /&gt;
* SSL-&amp;gt;state. Replaced with SSL_state(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Apache Traffic Manager ==&lt;br /&gt;
&lt;br /&gt;
* Setting SSL-&amp;gt;rbio without setting SSL-&amp;gt;wbio. New function introduction in 1.1.0 to handle this: SSL_set_rbio()&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in OpenConnect ==&lt;br /&gt;
&lt;br /&gt;
In order to simulate &amp;quot;resume&amp;quot; of a DTLS session which never really existed but which was actually negotiated over the VPN control connection, [http://git.infradead.org/users/dwmw2/openconnect.git/blob/fa5cea08:/dtls.c#l147 this code] in the [http://www.infradead.org/openconnect/ OpenConnect VPN client] needs to set the following fields in a new &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt;:&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;ssl_version&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;cipher{,_id}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;master_key{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;session_id{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was fixed with [http://git.infradead.org/users/dwmw2/openconnect.git/commitdiff/5abb133f this commit] which makes it create the ASN.1 representation of the session and import it with &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt;. It does depend on &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; being fixed by applying the patch at https://mta.openssl.org/pipermail/openssl-dev/2015-February/000707.html to make it cope with &amp;lt;tt&amp;gt;DTLS1_BAD_VER&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An alternative would be to introduce a new function to create a &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt; with the required parameters, vaguely equivalent to [http://www.gnutls.org/manual/html_node/Core-TLS-API.html#index-gnutls_005fsession_005fset_005fpremaster gnutls_session_set_premaster()]&lt;br /&gt;
&lt;br /&gt;
Other simpler things which broke:&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CIPHER-&amp;gt;id&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CIPHER_get_id()&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;SSL_CTX-&amp;gt;extra_certs&amp;lt;/tt&amp;gt;. Replaced with &amp;lt;tt&amp;gt;SSL_CTX_get_extra_chain_certs_only()&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dwmw2</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2181</id>
		<title>OpenSSL 1.1.0 Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2181"/>
		<updated>2015-02-17T16:45:04Z</updated>

		<summary type="html">&lt;p&gt;Dwmw2: /* Things that Broke in OpenConnect */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a parent page for discussion about API changes being done for OpenSSL version 1.1&lt;br /&gt;
&lt;br /&gt;
The overall goal of this project is to make most data structures opaque to applications.  This provides us with a number of benefits:&lt;br /&gt;
* We can add fields without breaking binary compatibility&lt;br /&gt;
* Applications are more robust and can be more assured about correctness&lt;br /&gt;
* It helps us determine which (new) accessors and settors, for example, are needed&lt;br /&gt;
&lt;br /&gt;
Please add sub-pages to discuss particular parts of the library as work progresses.&lt;br /&gt;
&lt;br /&gt;
== Major Changes so far ==&lt;br /&gt;
&lt;br /&gt;
* All structures in libssl public header files have been removed so that they are &amp;quot;opaque&amp;quot; to library users. You should use the provided accessor functions instead&lt;br /&gt;
* The old DES API has been removed&lt;br /&gt;
* bn, a sub library in libcrypto, has been made opaque&lt;br /&gt;
* Access to deprecated functions/macros has been removed by default. To enable access you must do two things. 1) Build OpenSSL with deprecation support (pass &amp;quot;enable-deprecated&amp;quot; as an argument to config) 2) Applications must define &amp;quot;OPENSSL_USE_DEPRECATED&amp;quot; before including OpenSSL header files&lt;br /&gt;
* HMAC_Init and HMAC_cleanup were previously stated in the docs and header files as being deprecated - but were not flagged in previous versions with OPENSSL_NO_DEPRECATED. This has been corrected in 1.1.0. Access to these functions/macros will be off by default in 1.1.0 as per the note above about deprecation.&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Qt ==&lt;br /&gt;
&lt;br /&gt;
Here's what's broken in the dev branch of Qt when building openssl master as of 6 Feb 2015.&lt;br /&gt;
&lt;br /&gt;
* DH - we were directly accessing p and q to set the DH params to primes embedded in Qt. We can probably replace this with SSL_CTX_set_dh_auto(ctx, 1). Another option suggested by Steve Henson is to save the DHparams we're using at the moment then use d2i_DHparams to load them in. This is compatible with openssl versions that don't have the dh_auto option.&lt;br /&gt;
&lt;br /&gt;
* ctx-&amp;gt;cert_store - we were directly accessing the cert_store field of SSL_CTX. We can probably replace this with X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx) [Fixed in dev]&lt;br /&gt;
&lt;br /&gt;
* session-&amp;gt;tlsext_tick_lifetime_hint - we were directly accessing the lifetime hint of the session. [A new API to access this field has been added]&lt;br /&gt;
&lt;br /&gt;
* cipher-&amp;gt;valid - we were directly accessing the valid field of SSL_CIPHER. No replacement found. [This turned out not to be needed and so will be removed].&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Curl ==&lt;br /&gt;
&lt;br /&gt;
* SSL_SESSION-&amp;gt;ssl_version. Replaced with SSL_version(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in wget ==&lt;br /&gt;
&lt;br /&gt;
* SSL-&amp;gt;state. Replaced with SSL_state(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Apache Traffic Manager ==&lt;br /&gt;
&lt;br /&gt;
* Setting SSL-&amp;gt;rbio without setting SSL-&amp;gt;wbio. New function introduction in 1.1.0 to handle this: SSL_set_rbio()&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in OpenConnect ==&lt;br /&gt;
&lt;br /&gt;
In order to simulate &amp;quot;resume&amp;quot; of a DTLS session which never really existed but which was actually negotiated over the VPN control connection, [http://git.infradead.org/users/dwmw2/openconnect.git/blob/fa5cea08:/dtls.c#l147 this code] in the [http://www.infradead.org/openconnect/ OpenConnect VPN client] needs to set the following fields in a new &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt;:&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;ssl_version&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;cipher{,_id}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;master_key{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;session_id{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This was fixed with [http://git.infradead.org/users/dwmw2/openconnect.git/commitdiff/5abb133f this commit] which makes it create the ASN.1 representation of the session and import it with &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt;. It does depend on &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; being fixed by applying the patch at https://mta.openssl.org/pipermail/openssl-dev/2015-February/000707.html to make it cope with &amp;lt;tt&amp;gt;DTLS1_BAD_VER&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An alternative would be to introduce a new function to create a &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt; with the required parameters, vaguely equivalent to [http://www.gnutls.org/manual/html_node/Core-TLS-API.html#index-gnutls_005fsession_005fset_005fpremaster gnutls_session_set_premaster()]&lt;/div&gt;</summary>
		<author><name>Dwmw2</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2180</id>
		<title>OpenSSL 1.1.0 Changes</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSL_1.1.0_Changes&amp;diff=2180"/>
		<updated>2015-02-16T17:18:14Z</updated>

		<summary type="html">&lt;p&gt;Dwmw2: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a parent page for discussion about API changes being done for OpenSSL version 1.1&lt;br /&gt;
&lt;br /&gt;
The overall goal of this project is to make most data structures opaque to applications.  This provides us with a number of benefits:&lt;br /&gt;
* We can add fields without breaking binary compatibility&lt;br /&gt;
* Applications are more robust and can be more assured about correctness&lt;br /&gt;
* It helps us determine which (new) accessors and settors, for example, are needed&lt;br /&gt;
&lt;br /&gt;
Please add sub-pages to discuss particular parts of the library as work progresses.&lt;br /&gt;
&lt;br /&gt;
== Major Changes so far ==&lt;br /&gt;
&lt;br /&gt;
* All structures in libssl public header files have been removed so that they are &amp;quot;opaque&amp;quot; to library users. You should use the provided accessor functions instead&lt;br /&gt;
* The old DES API has been removed&lt;br /&gt;
* bn, a sub library in libcrypto, has been made opaque&lt;br /&gt;
* Access to deprecated functions/macros has been removed by default. To enable access you must do two things. 1) Build OpenSSL with deprecation support (pass &amp;quot;enable-deprecated&amp;quot; as an argument to config) 2) Applications must define &amp;quot;OPENSSL_USE_DEPRECATED&amp;quot; before including OpenSSL header files&lt;br /&gt;
* HMAC_Init and HMAC_cleanup were previously stated in the docs and header files as being deprecated - but were not flagged in previous versions with OPENSSL_NO_DEPRECATED. This has been corrected in 1.1.0. Access to these functions/macros will be off by default in 1.1.0 as per the note above about deprecation.&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Qt ==&lt;br /&gt;
&lt;br /&gt;
Here's what's broken in the dev branch of Qt when building openssl master as of 6 Feb 2015.&lt;br /&gt;
&lt;br /&gt;
* DH - we were directly accessing p and q to set the DH params to primes embedded in Qt. We can probably replace this with SSL_CTX_set_dh_auto(ctx, 1). Another option suggested by Steve Henson is to save the DHparams we're using at the moment then use d2i_DHparams to load them in. This is compatible with openssl versions that don't have the dh_auto option.&lt;br /&gt;
&lt;br /&gt;
* ctx-&amp;gt;cert_store - we were directly accessing the cert_store field of SSL_CTX. We can probably replace this with X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *ctx) [Fixed in dev]&lt;br /&gt;
&lt;br /&gt;
* session-&amp;gt;tlsext_tick_lifetime_hint - we were directly accessing the lifetime hint of the session. [A new API to access this field has been added]&lt;br /&gt;
&lt;br /&gt;
* cipher-&amp;gt;valid - we were directly accessing the valid field of SSL_CIPHER. No replacement found. [This turned out not to be needed and so will be removed].&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Curl ==&lt;br /&gt;
&lt;br /&gt;
* SSL_SESSION-&amp;gt;ssl_version. Replaced with SSL_version(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in wget ==&lt;br /&gt;
&lt;br /&gt;
* SSL-&amp;gt;state. Replaced with SSL_state(SSL *)&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in Apache Traffic Manager ==&lt;br /&gt;
&lt;br /&gt;
* Setting SSL-&amp;gt;rbio without setting SSL-&amp;gt;wbio. New function introduction in 1.1.0 to handle this: SSL_set_rbio()&lt;br /&gt;
&lt;br /&gt;
== Things that Broke in OpenConnect ==&lt;br /&gt;
&lt;br /&gt;
In order to simulate &amp;quot;resume&amp;quot; of a DTLS session which never really existed but which was actually negotiated over the VPN control connection, [http://git.infradead.org/users/dwmw2/openconnect.git/blob/fa5cea08:/dtls.c#l147 this code] in the [http://www.infradead.org/openconnect/ OpenConnect VPN client] needs to set the following fields in a new &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt;:&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;ssl_version&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;cipher{,_id}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;master_key{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;-&amp;gt;session_id{,_length}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It looks like using &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; might be a possible replacement, if the ASN.1 rendering of the SSL_SESSION is considered to be usable as a stable ABI feature. But it would need fixing to cope with the fact that the SSL version is Cisco's pre-standard &amp;lt;tt&amp;gt;DTLS1_BAD_VER&amp;lt;/tt&amp;gt; abomination, which currently makes &amp;lt;tt&amp;gt;d2i_SSL_SESSION()&amp;lt;/tt&amp;gt; fail with &amp;lt;tt&amp;gt;SSL_R_UNKNOWN_SSL_VERSION&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
An alternative would be to introduce a new function to create a &amp;lt;tt&amp;gt;SSL_SESSION&amp;lt;/tt&amp;gt; with the required parameters, vaguely equivalent to [http://www.gnutls.org/manual/html_node/Core-TLS-API.html#index-gnutls_005fsession_005fset_005fpremaster gnutls_session_set_premaster()]&lt;/div&gt;</summary>
		<author><name>Dwmw2</name></author>
	</entry>
</feed>