pyca / pyca/pyopenssl

Allow to trigger a TLS 1.3 KeyUpdate

Open
#1,501 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
944
Forks
440
Avg merge
1d 6h
Merged PRs (30d)
6

Description

If you have a long-lived connection that does a lot of data transfer it might help to refresh the session key.

For example during the download or upload of a 4GB file.

This is for the following low-level API https://docs.openssl.org/master/man3/SSL_key_update/

#include <openssl/ssl.h>

int SSL_key_update(SSL *s, int updatetype);
int SSL_get_key_update_type(const SSL *s);

We already have Context.set_timeout which restrict the time after which connections can reuse an already negotiated session ... but if you have a single long lasting session , I am not sure that pyOpenSSL triggers any key updates.

This is only for TLS 1.3

The API is also available for QUIC.. but I don't know if pyOpenSSL supports it.


I am opening this issue here to see if it make sense to expose this API.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing Context.set_timeout API and the OpenSSL SSL_key_update and SSL_get_key_update_type documentation linked in the issue. Determine how TLS 1.3 key updates would fit pyOpenSSL’s existing connection APIs, including the stated QUIC uncertainty; done means a clearly scoped exposure or a documented decision not to support it.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
networking, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.