Напишу и я чуток про SSL.
Впилить ECC "с наскока" не получилось, т.к. Opera не использует функции OpenSSL для работы с TLS, а делает "закат солнца вручную".
В итоге пришлось разбираться, как это всё работает.Моё впечатление как неспециалиста в C/C++ - код довольно запутанный, впрочем чего и следовало ожидать. Периодически попадаются magic numbers что как-бы не сильно хорошо.
libssl отвечает за, собственно, обработку SSL - хранение ключей, handshake, ...
libopeay - это патченый OpenSSL. Тут довольно интересно. Во-первых, OpenSSL написан на C, а тут он компилируется как C++, что приводит к необходимости добавления приведения типов местами + есть ещё патчи по преобразованию глобальных переменных в функции. Ещё - часть функций/структур заiddefлены, соответственно компилируется только нужная часть библиотеки. Это и уменьшает итоговый размер, ну и уменьшает количество патчей :)
ECC, кстати, видно что начинали впиливать - т.к. часть кода уже патчена. Но - всё выключено.
Чтение/запись данных организовано через модуль datastream, и работает примерно так - мы готовим структуры данных, можно вложенные. И дальше просто читаем/пишем их из/в поток. Если что-то не так - выдаем ошибку. Есть неплохое логирование в самом модуле, помогает в отладке.
Текущее состояние: ECC, ECDH, ECDSA в OpenSSL допатчены и включены в компиляцию. Дальше работаю понемногу над libssl - уже, по крайней мере, добился того что серверные параметры ECDH корректно читаются. Заодно вообще разбираюсь что такое ECDH и как оно работает :)