You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+41-1Lines changed: 41 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -72,6 +72,7 @@ Implemented TLS features include:
72
72
* (experimental) TACK extension
73
73
* heartbeat extension and protocol
74
74
* Record Size Limit extension
75
+
* Delegated Credential for TLS
75
76
76
77
2 Licenses/Acknowledgements
77
78
============================
@@ -579,7 +580,46 @@ as said above, asyncore is deprecated in Python 3.12, and asyncio should be used
579
580
Implementation is similar to TLSAsyncDispatcherMixIn.py, but instead, use the class
580
581
TLSAsyncioDispatcherMixIn.py.
581
582
582
-
11 History
583
+
11 Using the ```credential``` tool
584
+
=================================
585
+
586
+
The credential tool is a command-line utility used to generate a [Delegated Credential](https://datatracker.ietf.org/doc/rfc9345/) for a TLS 1.3 server.
To generate the DC the following MUST be provided: the certificate, the certificate's private key, the public key of the Delegated Credential and the output file. Providing signature scheme is optional.
595
+
596
+
The content is saved into the output file in ```.pem``` format.
597
+
598
+
The following command provides an illustrative example using RSA keys for both the main server certificate and the delegated credential's public key to create Delegated Credential. Go to the tests directory and run:
After that the server can be run without the certificate's private key, but with the Delegated Credential:
605
+
```
606
+
tls.py server -c serverX509Cert.pem --dc-key serverDelCredRSAPSSKey.pem --dc-file serverRSAPSSDC.pem localhost:4433
607
+
```
608
+
609
+
The client must indicate the support of Delegated Credential by provideng the signature algorithm it supports in the Delegated Credential's extesion in Client Hello.
610
+
611
+
In case creating the file with saved Delegated Credential is not an option, the server can create the Delegated Credential on the fly before the handshake.
According to RFC 5280, [Section 4.2.1.3](https://datatracker.ietf.org/doc/html/rfc5280#section-4.2.1.3) and specifically [RFC 9260](https://datatracker.ietf.org/doc/rfc9345/) (Delegated Credentials), Section 4, the X.509 certificate used by the server to sign a delegated credential MUST contain the ```digitalSignature``` Key Usage extension. The ```credential``` tool and the delegated credential generation feature within the ```server``` tool are designed primarily for **testing and development purposes**. Hence, these tools do not perform strict validation to ensure that the provided main server certificate actually possesses the ```digitalSignature``` Key Usage extension.
619
+
Similarly, while delegated credentials have a valid time option, it is not enforced. The current certificate implementation lacks time validation, a requirement that is also omitted for delegated credentials.
0 commit comments