On 06/09/16 15:22, Lorenzo Miniero wrote: > 2016-09-06 16:05 GMT+02:00 Matt Caswell <matt at openssl.org > <mailto:matt at openssl.org>>: > > > > On 06/09/16 14:55, Lorenzo Miniero wrote: > > Apologies for reviving this old thread, but a user of my project made me > > notice that my code doesn't compile on Openssl 1.1.0 anymore. Apparently > > the cause is some structures have been made opaque in the new version. > > In my case, the structure that breaks the code is BIO, as I used some of > > its previously public properties in my filter. Is there any transition > > documentation page that can help figuring out how I can adapt it > > accordingly? Or is the way my filter was written at the time hopelessly > > broken now, and a different approach to do the same needed? > > Probably there is a "getter" function to get at what you need. What > properties are they? > > The BIO_METHOD structure is also now opaque and needs to be setup via > the BIO_meth_*() functions. See: > > https://www.openssl.org/docs/manmaster/crypto/BIO_meth_new.html > <https://www.openssl.org/docs/manmaster/crypto/BIO_meth_new.html> > > > > Thanks for the quick answer! > > Adapting the BIO_METHOD stuff looks easy enough indeed, thanks for the > pointers. The problem is that, in my BIO_METHOD callbacks, I access some > of the BIO properties for the logic to implement. For instance, in the > *create callback I set, among others, my own helper struct pointer in > the ->ptr property of the involved BIO, so that I can always access it > when using the BIO itself; or, in the *write callback, I access the > ->next_bio property. Use BIO_get_data()/BIO_set_data() for ptr, and BIO_next()/BIO_set_next() for next_bio. Matt