Skip to content

Commit 3be4a6f

Browse files
committed
wolfKeyMgr v0.10:
* Added secure vault for key storage using RSA and AES GCM * Added support for multiple active key types * Added key find support * Added middlebox decrypt PCAP replay support * Added key max use count to limit uses of an ephemeral key * Added computed "name" based on public key for ETSI key * Added API unit test framework * Added `--enable-vault=clear` option to optionally disable vault encryption. * Fix to not start listeners until key/cert/vault setup * Fixed issue with worker threads generating new keys and not using existing ones. * Fix for https example server listen error handling. * Fixed gets with newline. * Fix for middlebox/decrypt default loopback interface selection. Default to first interface (1). * Fix for request / response collision. Centralize the max buffer sizes. * Moved key gen into ETSI module * Rename `wolfEtsiKeyGet` to `wolfEtsiKeyGetPtr`. * Refactor to support multiple active key types. * Improved printing of public key name in logs * Improved error for key generation failure. * Improve libevent and browser issue documentation. * Improve middle-box decryption error handling for permissions issue. * Cleanups to remove `WOLFKM_ETSI_SERVICE` and `disableMutalAuth` * Move the ETSI documentation into `docs/README.md`. Remove copies of specs and use links. * Cleanup ETSI service configuration and defaults.
1 parent 7eb44e5 commit 3be4a6f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2754
-1029
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ examples/https/client
4545
examples/https/server
4646
libtool
4747
wolfkeymgr/options.h
48+
tests/unit.test
4849

4950
# Generated Cert Files
5051
certs/ca-*.pem
@@ -60,4 +61,9 @@ certs/server-*.pem
6061
certs/client-*.der
6162
certs/client-*.pem
6263
certs/serial.old
64+
certs/1*.pem
6365
tracefile.txt
66+
67+
# test files
68+
vault.bin
69+
wolfkeymgr.vault

Makefile.am

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ include src/include.am
3030
include examples/include.am
3131
include scripts/include.am
3232
include certs/include.am
33+
include tests/include.am
34+
include docs/include.am
3335

3436
check_SCRIPTS+= $(dist_noinst_SCRIPTS)
3537

README.md

Lines changed: 84 additions & 112 deletions
Large diffs are not rendered by default.

certs/gen-certs.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ openssl ca -config ./certs/ca-ecc.cnf -extensions usr_cert -days 3650 -notext -m
5353
-passin pass:'wolfssl' -in ./certs/client-cert.csr -out ./certs/client-cert.pem -batch
5454
rm ./certs/client-cert.csr
5555

56+
# Server Key
5657
if [ ! -f ./certs/server-key.pem ]; then
5758
echo "Creating Server Key (SECP256R1)"
5859
openssl ecparam -name prime256v1 -genkey -noout | openssl pkcs8 -topk8 -v2 aes-128-cbc -outform pem -out ./certs/server-key.pem
@@ -67,6 +68,21 @@ openssl ca -config ./certs/ca-ecc.cnf -extensions server_cert -days 3650 -notext
6768
-passin pass:'wolfssl' -in ./certs/server-cert.csr -out ./certs/server-cert.pem -batch
6869
rm ./certs/server-cert.csr
6970

71+
# Server RSA Key
72+
if [ ! -f ./certs/server-rsa-key.pem ]; then
73+
echo "Creating Server Key (RSA2048)"
74+
openssl genrsa -out ./certs/server-rsa-key.pem -passout pass:'wolfssl' -aes128 2048
75+
fi
76+
77+
# Server RSA Cert
78+
echo "Creating signed RSA Server certificate"
79+
openssl req -config ./certs/ca-ecc.cnf -sha256 -new -key ./certs/server-rsa-key.pem -passin pass:'wolfssl' \
80+
-out ./certs/server-rsa-cert.csr \
81+
-subj "/C=US/ST=Washington/L=Seattle/O=Eliptic/OU=RSA/CN=www.wolfssl.com/[email protected]/"
82+
openssl ca -config ./certs/ca-ecc.cnf -extensions server_cert -days 3650 -notext -md sha256 \
83+
-passin pass:'wolfssl' -in ./certs/server-rsa-cert.csr -out ./certs/server-rsa-cert.pem -batch
84+
rm ./certs/server-rsa-cert.csr
85+
7086

7187
# Script to generate a self-signed TLS server certificate for Apache
7288
# No key password

certs/include.am

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,7 @@ EXTRA_DIST += certs/server-key.pem
1212
EXTRA_DIST += certs/server-cert.pem
1313
EXTRA_DIST += certs/test-cert.pem
1414
EXTRA_DIST += certs/test-key.pem
15+
16+
# RSA
17+
EXTRA_DIST += certs/server-rsa-key.pem
18+
EXTRA_DIST += certs/server-rsa-cert.pem

certs/server-rsa-cert.pem

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIENjCCA9ygAwIBAgICEAAwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlVTMRMw
3+
EQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAd3
4+
b2xmU1NMMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEYMBYGA1UEAwwPd3d3LndvbGZz
5+
c2wuY29tMR8wHQYJKoZIhvcNAQkBFhBpbmZvQHdvbGZzc2wuY29tMB4XDTIxMDcy
6+
MjE4NDcwOFoXDTMxMDcyMDE4NDcwOFowgY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQI
7+
DApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRAwDgYDVQQKDAdFbGlwdGlj
8+
MQwwCgYDVQQLDANSU0ExGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
9+
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
10+
ADCCAQoCggEBAJeWvOKDV2JjoWgSeuHJjvHEBxhRjxR8IOHJoO+YGhThGX2Ib8pa
11+
FEPVFXa2LyRcfd4KzOw+oIXrMrUzYKmU7hedN8WpyfuurCLO560moiQNil9IdQFe
12+
7fVlCmxpTvBwlHzJ4lx+E697mnozt+eM25qJE2h7XCZmN+jb1m+lyxpMAjolP7IU
13+
olnH57pMNkccM6EaToXWA8auk3IQulBfToBdavKB5jEAcI3D+HtHF30klEcqcbA4
14+
FwkSzP6CdHsDZU9TtDVuyQjbhgTJgiRIO2MigYIOimLZJ83+A9cI8GqMRN8MrC0D
15+
B4q7Vcu4C/M7Dhs/SM+H7MXo01t71nk22asCAwEAAaOCAVEwggFNMAkGA1UdEwQC
16+
MAAwEQYJYIZIAYb4QgEBBAQDAgZAMB0GA1UdDgQWBBRjfckuJfv9Ztl0epw/DE/a
17+
6ldZMjAPBgNVHREECDAGhwR/AAABMIHXBgNVHSMEgc8wgcyAFGd0eZ7H+R2lQl76
18+
gLEm6OeMDJZjoYGdpIGaMIGXMQswCQYDVQQGEwJVUzETMBEGA1UECAwKV2FzaGlu
19+
Z3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEQMA4GA1UECgwHd29sZlNTTDEUMBIGA1UE
20+
CwwLRGV2ZWxvcG1lbnQxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
21+
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbYIUZzNFzfT3gew6OMtFWGN5KCu962sw
22+
DgYDVR0PAQH/BAQDAgOoMBMGA1UdJQQMMAoGCCsGAQUFBwMBMAoGCCqGSM49BAMC
23+
A0gAMEUCIQC1rKX9GrvNhaWkqFkf8wYIF4TN8KPtUiGIWLBfiwzzlQIgdOd0O11g
24+
61w+iJz3sVFhGKcpAyOqU42K+ShqlJhh0RE=
25+
-----END CERTIFICATE-----

certs/server-rsa-key.pem

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-----BEGIN RSA PRIVATE KEY-----
2+
Proc-Type: 4,ENCRYPTED
3+
DEK-Info: AES-128-CBC,68083920376B41E11FEEBBE255D2D307
4+
5+
i803oPiuFmT19NoY4LfI9bx0vwAaApoxELygMMsPxE/VphubgviUC3YYtb5ZowCd
6+
i7ZlBN/Xg0sWYXm71hVdd+aRIBYuGg6+wC3Q80ISXwxNhEgnwJlNBPvp04L+RuTH
7+
z8BgoC6EmGMQbjsI3dtKGiotApvT/rPsNmGRtQJ6QnnWtxweisKxTVk5mSW3DCnY
8+
5cEw1OIbZ/PpHv014+KDY+MLHUi+VjFte3rYv0TMUXIe9jpLoC8lvug18V2W7a4E
9+
RuUDDeWh2E2Nhqfqr8yhc/uaThwDYhXpvILFK6WW0tW8lN6SzSO8hFNFoqSZj6hR
10+
pe9xos2NW0mV5VGuTtelQ6dXaFF4JjRh9OEpFsUEgG3olXECSjLx504ABO4rxP/c
11+
ScH5CwzpuVFJHTBwSYDi/LDAxUDT8tBr2ZAcV8xvh8uFor5QRsTuI+GbtvnCc2v9
12+
NtSQ0WB2ew9GAwf21p0aXy1fQm8QtzN4qgoPmVdr3Qp7N50a7oVOge7N/hgYQvlV
13+
fMJdGm//6FXNu9FcHsaAFkj5jpXEcK6CwrI7VETAGSIir4y0xnpbVocj+kNv8N4v
14+
zQDQ1XOUAdRDOCnyrjXcU2ti/DGSrlKUb1b+tBUSJCLNXGEGHgHJKQuSQOk9C5l5
15+
SOrgRCazW0BFmRduCCPfssBWOBjQNTdOOFxgswzZmaQuY9mff1dndFV9OPgrPHDm
16+
ONVPHf0dHD72FtMJbEuqeat5UnyaxwNZxXxnLSBbjdnPgFfjCZMQbik5nuzg4rZE
17+
zqZsHPEZ7csoX+JfD7LXaDPu7nSfBpWYOOqOul6dOPM3tIW+xoqz+53ci7GATbBQ
18+
PWBvpt2uaFO+Q2vz4/6QvocT49Sgv7Ic75DfJWkZ8mfsRGdHMei2DdWpsDXhKOyY
19+
Lo8JlrBllCWb40Tow6PqcbgkN3HKmavJv+sXP23GW5mPAJPUiiNeH/BOXbLIqcF9
20+
AEHjwti6UA4Haze6227rfG5cDNRF8Rw45EIIigkDB9a1o4VcWvT6UlXXokRSxNdD
21+
QC8NVQjJZOQdbgqH80IiPTY3if4y62Im66DcHi5lohl1slnscqxUd0SlxNTxEGQC
22+
ieIK1kYs+r7cw7tabKrvUdDl98lQZFxcvdoTkTG3s+e4h4+QSw5JnZcD4eDVxHaH
23+
P17aNOJ9T4RflwWPn5v5loa1Tp8o+EI+LLINQ+cUzlUW7sGt0GmCFnOLP/G2aPOt
24+
BzYbm4dzVoGpfamsVYSMoORcudvflOYSYcyKgCegThwE+P5KLozgPdbAN2Qdm+qe
25+
nOGpVrsOnCJdKkdyZki7orGqK1hslAqGJGt9TKqEhL6pdDvQZf6LaM/GZzgO2SB3
26+
lBvr3zSlYRbeadgYghzcbMnZAy0lSDuObB5U5wzPLqaq+1N2e6EhxWelmt1Bz4/q
27+
QlUamvUvogX7rPOMnjnt7W90kD5uqLS6IqBI0NKL62Ho9QyhyZ46ooZ4/ChFRO2G
28+
6hQ8hNDGF+UTQ8A0IIrzXnEuerhAy93Abv70Q5mDULQDbWdFxDOgfgqXwiX+EL/V
29+
wszqU4MN2wtDBuZQnCVzBXGbzd+yR0w1qYKSPip+6d/g8N1g8ybRhiD83CVcODqI
30+
-----END RSA PRIVATE KEY-----

configure.ac

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
AC_PREREQ(2.59)
77

8-
AC_INIT([wolfKeyManager],[0.9],[http://www.wolfssl.com])
8+
AC_INIT([wolfKeyManager],[0.10],[http://www.wolfssl.com])
99
AC_CONFIG_AUX_DIR(config)
1010
AC_CONFIG_HEADERS([wolfkeymgr/config.h])
1111
AC_CONFIG_MACRO_DIR(m4)
@@ -71,7 +71,7 @@ LT_PREREQ([2.2])
7171
LT_INIT([disable-static win32-dll])
7272

7373
# Shared library versioning
74-
WOLFKM_LIBRARY_VERSION=5:1:0
74+
WOLFKM_LIBRARY_VERSION=6:0:0
7575
# | | |
7676
# +------+ | +---+
7777
# | | |
@@ -86,7 +86,7 @@ WOLFKM_LIBRARY_VERSION=5:1:0
8686
AC_SUBST([WOLFKM_LIBRARY_VERSION])
8787

8888
# compiler options
89-
CFLAGS="$CFLAGS -Wall"
89+
CFLAGS="$CFLAGS -Wall -Wextra -Wabi -Wpedantic"
9090
CFLAGS_DEBUG="-g"
9191
CFLAGS_OPTIMIZE="-O2"
9292

@@ -121,18 +121,6 @@ esac
121121
# Checks for library functions.
122122
LIB_SOCKET_NSL
123123

124-
# ETSI Service
125-
AC_ARG_ENABLE([etsisvc],
126-
[AS_HELP_STRING([--enable-etsisvc],[Enable the ETSI key service (default: enabled)])],
127-
[ ENABLED_ETSI_SERVICE=$enableval ],
128-
[ ENABLED_ETSI_SERVICE=yes ]
129-
)
130-
131-
if test "x$ENABLED_ETSI_SERVICE" = "xyes"
132-
then
133-
CFLAGS="$CFLAGS -DWOLFKM_ETSI_SERVICE"
134-
fi
135-
136124

137125
# SNIFFER
138126
AC_ARG_ENABLE([sniffer],
@@ -149,11 +137,29 @@ AS_IF([ test "x$ENABLED_SNIFFER" = "xyes" ],
149137
)
150138
])
151139

140+
# VAULT
141+
AC_ARG_ENABLE([vault],
142+
[AS_HELP_STRING([--enable-vault],[Enable key storage and retrieval (use =clear to disable encryption) (default: enabled)])],
143+
[ ENABLED_VAULT=$enableval ],
144+
[ ENABLED_VAULT=yes ]
145+
)
146+
147+
if test "x$ENABLED_VAULT" != "xno"
148+
then
149+
CFLAGS="$CFLAGS -DWOLFKM_VAULT"
150+
if test "x$ENABLED_VAULT" == "xclear"
151+
then
152+
CFLAGS="$CFLAGS -DWOLFKM_NO_VAULT_ENC"
153+
fi
154+
fi
155+
156+
152157

153158
# The following AM_CONDITIONAL statements set flags for use in the Makefiles.
154159
# Some of these affect build targets and objects, some trigger different
155160
# test scripts for make check.
156-
AM_CONDITIONAL([BUILD_ETSI_SERVICE],[test "x$ENABLED_ETSI_SERVICE" = "xyes"])
161+
AM_CONDITIONAL([BUILD_SNIFFER],[test "x$ENABLED_SNIFFER" = "xyes"])
162+
AM_CONDITIONAL([BUILD_VAULT],[test "x$ENABLED_VAULT" = "xyes"])
157163

158164

159165
# FINAL
@@ -252,4 +258,5 @@ echo " * CPP Flags: $CPPFLAGS"
252258
echo " * LIB Flags: $LIB"
253259
echo " * Debug enabled: $ax_enable_debug"
254260

255-
echo " * ETSI Service $ENABLED_ETSI_SERVICE"
261+
echo " * Vault $ENABLED_VAULT"
262+
echo " * Sniffer $ENABLED_SNIFFER"

docs/ETSI-Components.png

132 KB
Loading

docs/README.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# wolf Key Manager ETSI Reference
2+
3+
Based on [ETSI TS 103 523-3 V1.3.1](https://www.etsi.org/deliver/etsi_ts/103500_103599/10352303/01.03.01_60/ts_10352303v010301p.pdf)
4+
5+
## Components
6+
7+
![ETSI Components](ETSI-Components.png)
8+
9+
* Key Manager (`src/wolfkeymgr`)
10+
* Enterprise Transport Security Server (`examples/https/server` or Apache httpd, nginx, etc...)
11+
* Middlebox Decryption (`examples/middlebox/decrypt` using wolfSSL sniffer)
12+
* TLS v1.3 client (browser or `examples/https/client`)
13+
* Asymmetric Key Package (RFC 5958 - PKCS8)
14+
15+
## ETSI Security
16+
17+
All communication between consumer and ETSI Key Manager will use TLS v1.3 with mutual authentication.
18+
19+
The Enterprise Transport Security profile does not provide per-session forward secrecy. Knowledge of a given static private key can be used to decrypt all sessions encrypted with that key, and forward secrecy for all of those sessions begins when all copies of that static private key have been destroyed.
20+
21+
Typically an organization will use standard TLS 1.3 to connect with external clients to the enterprise network or data centre. For connections within its own data center and could deployments the Enterprise Transport Security profile can be used.
22+
23+
An organization can rotate their keys as frequently as they choose.
24+
25+
The use of X.509 Visibility Information in the TLS server certificate should be used, but is not required for private internal use. The visibility information OID 0.4.0.3523.3.1 provides a public way to indicate the ETSI security profile is being used.
26+
27+
## ETSI (Enterprise Transport Security)
28+
29+
### ETSI Request Case (HTTPS GET)
30+
31+
`GET /.well-known/enterprise-transport-security/keys?fingerprints=[fingerprints]`, where:
32+
33+
a) `fingerprints` shall be present and its value, `[fingerprints]`, shall be either empty or shall be a comma-separated list of the hexadecimal string representation where each entry in the list is the static Diffie-Hellman public key fingerprint, as defined in clause 4.3.3, for which the corresponding public/private key pairs are being requested.
34+
35+
b) The key manager shall return a key package that contains the corresponding public/private key pair for each fingerprint for which it has a record. In the unlikely case that the key manager has more than one public/private key pair corresponding to a given fingerprint, it shall return all of them in the key package. If `[fingerprints]` is empty, the actions of the implementation are out of scope of the present document.
36+
37+
c) The key manager shall return an appropriate HTTP error code if there is not at least one matching public/private key pair [12].
38+
39+
Example:
40+
41+
```
42+
GET /.well-known/enterprise-transport-security/keys?fingerprints=00010203040506070809,09080706050403020100
43+
Accept: application/pkcs8, application/cms
44+
```
45+
46+
### ETSI Request with Groups (key type)
47+
48+
`GET /.well-known/enterprise-transport- security/keys?groups=[groups]&certs=[sigalgs]&context=contextstr`, where:
49+
50+
a) groups shall be non-empty and its value, [groups], shall be a comma-separated list where each entry in the list is a NamedGroup value defined in clause 4.2.7 in IETF RFC 8446 [2], represented in hexadecimal notation, for which an associated static Diffie-Hellman key pair is being requested.
51+
52+
b) certs may be included. If certs is included, its value, [sigalgs], shall be a comma-separated list where each entry is a colon-separated pair of SignatureScheme values defined in clause B.3.1.3 in IETF RFC 8446 [2], in hexadecimal notation. The first value in the pair shall indicate the requested algorithm for the certificate issuer to use to sign the certificate. The second value in the pair shall indicate the requested algorithm to be used to generate the certificate subject's signing key pair. If certs is included, then for each entry in the list, the key consumer shall request one additional server certificate using that scheme, which is bound to all returned key pairs. If certs is not included, then no certificates are being requested, and so none shall be provided by the key manager.
53+
54+
c) context may be included. If context is included, its value, contextstr, is a free string that the key manager shall use to determine what key pair and certificate contents to return. The structure of contextstr is not specified in the present document.
55+
56+
d) The key manager shall return a key package containing a static Diffie-Hellman key pair for each group listed in [groups]that the key manager supports. For each static Diffie-Hellman key pair in the key package, the key manager shall also return a corresponding server certificate for each given signature algorithm pair listed in [sigalgs] that it supports.
57+
58+
e) If no group in [groups] is supported by the key manager, the key manager shall return an appropriate HTTP error code as defined in clause 6 of IETF RFC 7231 [12]. If the key manager is unable to use contextstr, the key manager may return an appropriate HTTP error code, as defined in clause 6 of IETF RFC 7231 [12], or it may handle the error itself in a way outside the scope of the present document.
59+
60+
Example:
61+
62+
```
63+
GET /.well-known/enterprise-transport-security/keys?groups=0x0018,0x001d&certs=0x0401:0x0809,0x0503:0x0503
64+
Accept: application/pkcs8
65+
```
66+
67+
### ETSI Push (HTTPS PUT)
68+
69+
The key consumer shall support receiving a key package via an HTTP PUT request to a request-target, given here in origin-form, of:
70+
`/enterprise-transport-security/keys`
71+
72+
### Asymmetric Key Packages (RFC 5958)
73+
74+
When an Enterprise Transport Security static Diffie-Hellman public/private key pair are sent from the key manager to a key consumer, they shall be packaged using the Asymmetric Key Package defined in IETF RFC 5958 [3]. Each Asymmetric Key Package shall contain one or more OneAsymmetricKey elements. Such an element will be one of either:
75+
76+
a) a static Diffie-Hellman key pair, hereafter referred to as Type A elements; or
77+
b) a private signing key and a certificate, hereafter referred to as Type B elements.
78+
79+
First the case is defined where elements are static Diffie-Hellman key pairs, and so the Asymmetric Key Package shall contain fields and attributes pertaining to these key pairs, defined below. Though certificates are not sent in the same OneAsymmetricKey element as a static key pair, each Asymmetric Key Package may contain one or more Type B elements (server certificates and corresponding private signing keys). Where such Type B elements are sent, all certificates in the Asymmetric Key Package shall be bound to all of the static Diffie-Hellman key pairs in the Asymmetric Key Package. The use of multiple certificates is intended for the situation where it is necessary to provide certificates with different signature algorithms.
80+
With reference to clause 2 of IETF RFC 5958 [3], the Type A OneAsymmetricKey element used to store each key pair
81+
in the Asymmetric Key Package shall have the following fields set as follows:
82+
83+
1) Version shall be set to version 2 (integer value of 1).
84+
2) privateKeyAlgorithm shall be set to the key pair algorithm identifier (see below).
85+
3) privateKey shall be set to the Diffie-Hellman private key encoded as an octet string.
86+
4) publicKey shall be set to the Diffie-Hellman public key encoded as a bit string.
87+
5) Attributes shall include a validity period for the key pair using the attribute defined in clause 15 of IETF RFC 7906 [4].
88+
89+
### Server Certificate Visibility
90+
91+
The ETSI specification part 3 section 4.3.3 requires the TLS server to present a "visibility" information field indicating "Enterprise Transport Security" is being used.
92+
93+
```
94+
VisibilityInformation ::= SEQUENCE {
95+
fingerprint OCTET STRING (SIZE(10)),
96+
accessDescription UTF8String }
97+
```
98+
99+
where the SHA-256 digest of the static Diffie-Hellman public key as transmitted in the key_share extension of the ServerHello message shall be represented as the vector of 32-bit words (H0, H1,..., H7) as defined in FIPS 180-4 [11]. The fingerprint field shall be set to H0||H1||(H2>>16), which is the first 80 bits of the digest vector read in big-endian format. The accessDescription field shall be a human-readable text string that identifies, either generally or specifically, the controlling or authorizing entities or roles or domains, or any combination of these, of any middle-boxes that may be allowed access to the Enterprise Transport Security static Diffie-Hellman private key.
100+
101+
See Recommendation ITU-T X.509 (10/2016) | ISO/IEC 9594-8: "Information technology - Open Systems Interconnection - The Directory: Public-key and attribute certificate frameworks".

0 commit comments

Comments
 (0)