2014-01-05 2 views
0

У меня есть пакетный интерфейс к другому объекту, а не к TCP-соединению, но мне нужно сделать SSL на этом интерфейсе, выполнив SSL через TCP. Удивительно, есть ли библиотека, которая имеет три API на SSL. Они должны быть само собой разумеющимися, и они хорошо впишутся в пакетный интерфейс (не интерфейс потока/сокета).API-интерфейс для программирования SSL

ssl = createSSL(); 
clearText = fromSSLPipe(ssl, encryptedData, len, &outputLen); 
encryptedData = toSSLPipe(ssl, cleartext, len, &outputLen); 

Если такой библиотеки нет, может ли кто-нибудь привести пример (ы) о том, как их реализовать?

Спасибо заранее.

+1

Какую платформу и язык вы используете? В общем, наш SecureBlackbox включает в себя компоненты SSL/TLS (как клиент, так и сервер), которые не привязаны к сокетам (вы можете использовать абсолютно любой транспорт с компонентами), и он доступен для разных платформ и языков. –

+0

Можете ли вы дать ссылку на пример кода? Благодарю. – pktCoder

+0

Забыл упомянуть, что программное обеспечение находится на C и работает на Ubuntu. – pktCoder

ответ

0

SSL/TLS использует фреймы размером до 16k. Так что, если этого достаточно для вас, вы можете просто использовать SSL_write (выведет один SSL-фрейм, если данные < 16k) и SSL_read (будет читать один кадр SSL и расшифровать его) из openssl через TCP-соединение. Если вам нужен зашифрованный UDP, вы можете использовать DTLS, который также реализуется openssl. Хотя библиотека openssl написана на C, существуют интерфейсы для множества языков, таких как perl, python, ruby ​​...

+0

Размер кадра не имеет значения - правильная реализация SSL/TLS должна обрабатывать неполные кадры, поскольку TCP - это протокол потока. Ранние версии Java были связаны с этой проблемой, поскольку они ожидали, что полные кадры будут доступны в сокете. –

+0

Если кадр неполный, ему нужно подождать больше данных, поскольку он может расшифровать только полные кадры. Но вы правы, что SSL лучше использовать в качестве потокового протокола, даже если SSL_read и SSL_write в настоящее время предоставляют базовую структуру. –

+0

Спасибо за предложения. Проблема здесь в том, что здесь нет tcp-сокета. Мне нужны какие-то «примитивные» API, с помощью которых я могу вводить x байтов текстовых данных, он выводит некоторые кадры зашифрованных данных (включая сигнальные фреймы для подтверждения SSL). Я могу отправить фреймы в другой транспорт (не tcp). – pktCoder

Смежные вопросы