Может ли кто-нибудь предоставить пример кода о том, как вернуть информацию в этих обратных вызовах?
Вы можете посмотреть, как s_client делает это здесь:
https://github.com/openssl/openssl/blob/6af1b11848f000c900877f1289a42948d415f21c/apps/s_client.c#L183-L243
А вот как это делает s_server:
https://github.com/openssl/openssl/blob/6af1b11848f000c900877f1289a42948d415f21c/apps/s_server.c#L185-L232
Насколько я понимаю, в TLS1.3 Identity Hint имеет значение NULL, тогда почему этиСпецифичные обратные вызовы TLS1.3 содержат поля идентичности?
Идентификация Подсказка и Идентификация - это две разные вещи. В TLSv1.2 сервер может предоставить клиенту подсказку, чтобы позволить клиенту выбрать правильную идентификационную информацию для этого сервера. В TLSv1.3 PSKs работают совершенно по-другому. Клиент отправляет удостоверение на сервер в самом первом сообщении, поэтому нет никакой возможности получить подсказку. На практике подсказки обычно не так полезны.
В контексте PSK вы можете рассматривать идентичность как нечто вроде имени пользователя (на самом деле это немного упрощение - но этого достаточно для наших целей). здесь)
Где-то читал, что в TLS 1.3 есть другой набор шифров, как называются PSK AES256 и PSK CHACHA20
В TLSv1.2 вам нужноиспользовать специальные шифры PSK. В TLSv1.3 это больше не так. Ciphersuits работают совершенно по-другому, и не существует концепции наличия специальных PSK-шифров. Вы просто используете обычные наборы шифров. Главное, что следует опасаться, это то, что в TLSv1.3 PSK всегда ассоциируется с хэшем (например, SHA256). Какой бы шифр вы ни использовали, он должен быть совместим с этим хешем, например, для SHA256 вы можете использовать TLS_CHACHA20_POLY1305_SHA256 или TLS_AES_128_GCM_SHA256.
В моем случае сервер будет принимать только одно соединение, то есть канал данных P2P. Нужно ли мне заставлять одну сторону действовать как сервер, т.е. использовать find_session_cb вместо use_session_cb?
В TLS клиент определяется как одноранговый узел, который инициирует связь, а сервер является одноранговым узлом, который принимает входящиесоединения. Следовательно, всегда клиент и роль сервера. Итак, да, одна сторона должна использовать find_session_cb
, а другая сторона должна использовать use_session_cb
.