Skip to content

Commit ff62975

Browse files
committed
Update other places we reference key types to be more general where possible or specifically mention OKP/EdDSA where being general does not work
1 parent e5c755a commit ff62975

File tree

10 files changed

+64
-32
lines changed

10 files changed

+64
-32
lines changed

astro/src/content/docs/apis/_event-types.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import AvailableSince from 'src/components/api/AvailableSince.astro';
44

55
* `audit-log.create` - When an audit log is created <AvailableSince since="1.30.0" />
66
* `event-log.create` - When an event log is created <AvailableSince since="1.30.0" />
7-
* `jwt.public-key.update` - When a JWT RSA Public / Private keypair may have been changed
7+
* `jwt.public-key.update` - When a JWT signing Public / Private keypair may have been changed
88
* `jwt.refresh` - When an access token is refreshed using a refresh token <AvailableSince since="1.16.0" />
99
* `jwt.refresh-token.revoke` - When a JWT Refresh Token is revoked
1010
* `kickstart.success` - When kickstart has successfully completed <AvailableSince since="1.30.0" />

astro/src/content/docs/apis/_key-generate-post-request-body.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ import JSON from 'src/components/JSON.astro';
2222
* `HS512` - HMAC using SHA-512 hash algorithm
2323
</APIField>
2424
<APIField name="key.issuer" type="String" optional>
25-
The issuer of the RSA or EC certificate.
25+
The issuer of the certificate.
2626

2727
If omitted, this value will default to the value of <InlineField>tenant.issuer</InlineField> on the default tenant. For HMAC keys, this field does not apply and will be ignored if specified, and no default value will be set.
2828
</APIField>
2929
<APIField name="key.name" type="String" required>
3030
The name of the Key.
3131
</APIField>
3232
<APIField name="key.length" type="String" optional>
33-
The length of the RSA or EC certificate. This field is required when generating RSA key types.
33+
The length of the RSA or EC certificate. This field is required when generating RSA key types.
3434

3535
For RSA, possible values are: `2048`, `3072` or `4096`.
3636

astro/src/content/docs/apis/_key-import-post-request-body.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import JSON from 'src/components/JSON.astro';
2121
* `HS512` - HMAC using SHA-512 hash algorithm
2222
</APIField>
2323
<APIField name="key.certificate" type="String" optional>
24-
The certificate to import. The `publicKey` will be extracted from the certificate.
24+
The certificate to import. The `publicKey` will be extracted from the certificate.
2525
</APIField>
2626
<APIField name="key.kid" type="String" optional>
2727
The Key identifier 'kid'. When this value is omitted, one will be generated.
@@ -30,16 +30,16 @@ import JSON from 'src/components/JSON.astro';
3030
The name of the Key. It must be unique among all Keys.
3131
</APIField>
3232
<APIField name="key.publicKey" type="String" optional>
33-
The Key public key. Required if importing an RSA or EC key and a `certificate` is not provided.
33+
The Key public key. If the key is only to be used for signing, only a private key is necessary and this field may be omitted. This field should be omitted when importing an HMAC key type.
3434
</APIField>
3535
<APIField name="key.privateKey" type="String" optional>
36-
The Key private key. Optional if importing an RSA or EC key. If the key is only to be used for token validation, only a public key is necessary and this field may be omitted.
36+
The Key private key. If the key is only to be used for signature validation, only a public key is necessary and this field may be omitted. This field should be omitted when importing an HMAC key type.
3737
</APIField>
3838
<APIField name="key.secret" type="String" optional>
3939
The Key secret. This field is required if importing an HMAC key type.
4040
</APIField>
4141
<APIField name="key.type" type="String" optional>
42-
The Key type. This field is required if importing an HMAC key type, or if importing a public key / private key pair. The possible values are:
42+
The Key type. This field is required if importing an HMAC key type, or if importing a public key / private key pair. The possible values are:
4343

4444
* `EC`
4545
* `OKP` <AvailableSince since="1.62.0" />

astro/src/content/docs/apis/_key-response-body-base.mdx

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,43 @@ import JSON from 'src/components/JSON.astro';
1212
The algorithm used to generate the key.
1313
</APIField>
1414
<APIField name={ props.base_field_name + ".certificate" } type="String">
15-
The RSA or EC X.509 certificate. This field is omitted for HMAC key types.
15+
The X.509 certificate. This field is omitted for HMAC key types.
1616
</APIField>
1717
<APIField name={ props.base_field_name + ".certificateInformation" } type="Map<String, Object>">
18-
The RSA or EC certificate information. This field is omitted for HMAC key types.
18+
The certificate information. This field is omitted for HMAC key types.
1919
</APIField>
2020
<APIField name={ props.base_field_name + ".certificateInformation.issuer" } type="String">
21-
The issuer of the RSA or EC certificate. This field is omitted for HMAC key types.
21+
The issuer of the certificate. This field is omitted for HMAC key types.
2222
</APIField>
2323
<APIField name={ props.base_field_name + ".certificateInformation.md5Fingerprint" } type="String">
24-
The md5 fingerprint of the RSA or EC certificate. This field is omitted for HMAC key types.
24+
The md5 fingerprint of the certificate. This field is omitted for HMAC key types.
2525
</APIField>
2626
<APIField name={ props.base_field_name + ".certificateInformation.serialNumber" } type="String">
27-
The serial number of the RSA or EC certificate. This field is omitted for HMAC key types.
27+
The serial number of the certificate. This field is omitted for HMAC key types.
2828
</APIField>
2929
<APIField name={ props.base_field_name + ".certificateInformation.sha1Fingerprint" } type="String">
30-
The SHA-1 fingerprint of the RSA or EC certificate. This field is omitted for HMAC key types.
30+
The SHA-1 fingerprint of the certificate. This field is omitted for HMAC key types.
3131
</APIField>
3232
<APIField name={ props.base_field_name + ".certificateInformation.sha1Thumbprint" } type="String">
33-
The SHA-1 thumbprint of the RSA or EC certificate. This field is omitted for HMAC key types.
33+
The SHA-1 thumbprint of the certificate. This field is omitted for HMAC key types.
3434
</APIField>
3535
<APIField name={ props.base_field_name + ".certificateInformation.sha256Fingerprint" } type="String">
36-
The SHA-256 fingerprint of the RSA or EC certificate. This field is omitted for HMAC key types.
36+
The SHA-256 fingerprint of the certificate. This field is omitted for HMAC key types.
3737
</APIField>
3838
<APIField name={ props.base_field_name + ".certificateInformation.sha256Thumbprint" } type="String">
39-
The SHA-256 thumbprint of the RSA or EC certificate. This field is omitted for HMAC key types.
39+
The SHA-256 thumbprint of the certificate. This field is omitted for HMAC key types.
4040
</APIField>
4141
<APIField name={ props.base_field_name + ".certificateInformation.subject" } type="String">
42-
The subject of the RSA or EC certificate. This field is omitted for HMAC key types.
42+
The subject of the certificate. This field is omitted for HMAC key types.
4343
</APIField>
4444
<APIField name={ props.base_field_name + ".certificateInformation.validFrom" } type="Integer">
45-
The UNIX time in milliseconds marking the start of the RSA or EC certificate validity period. This field is omitted for HMAC key types.
45+
The UNIX time in milliseconds marking the start of the certificate validity period. This field is omitted for HMAC key types.
4646
</APIField>
4747
<APIField name={ props.base_field_name + ".certificateInformation.validTo" } type="Integer">
48-
The UNIX time in milliseconds marking the expiration RSA or EC certificate. This field is omitted for HMAC key types.
48+
The UNIX time in milliseconds marking the expiration certificate. This field is omitted for HMAC key types.
4949
</APIField>
5050
<APIField name={ props.base_field_name + ".expirationInstant" } type="Integer">
51-
The [instant](/docs/reference/data-types#instants) marking the expiration RSA or EC certificate. This field is omitted for HMAC key types.
51+
The [instant](/docs/reference/data-types#instants) marking the expiration certificate. This field is omitted for HMAC key types.
5252
</APIField>
5353
<APIField name={ props.base_field_name + ".hasPrivateKey" } type="Boolean">
5454
Because the private key will never be returned in the API response, this value will indicate if the private key is stored in FusionAuth. This field is omitted for HMAC key types.
@@ -60,7 +60,7 @@ import JSON from 'src/components/JSON.astro';
6060
The [instant](/docs/reference/data-types#instants) that the key was added to the FusionAuth database.
6161
</APIField>
6262
<APIField name={ props.base_field_name + ".issuer" } type="String">
63-
The issuer of the RSA or EC certificate. This field is omitted for HMAC key types.
63+
The issuer of the certificate. This field is omitted for HMAC key types.
6464
</APIField>
6565
<APIField name={ props.base_field_name + ".kid" } type="String">
6666
The key identifier 'kid'.
@@ -69,13 +69,13 @@ import JSON from 'src/components/JSON.astro';
6969
The [instant](/docs/reference/data-types#instants) that the key was updated in the FusionAuth database.
7070
</APIField>
7171
<APIField name={ props.base_field_name + ".length" } type="String">
72-
The length of the RSA or EC certificate. This field is omitted for HMAC key types.
72+
The length of the certificate. This field is omitted for HMAC key types.
7373
</APIField>
7474
<APIField name={ props.base_field_name + ".name" } type="String">
7575
The name of the key.
7676
</APIField>
7777
<APIField name={ props.base_field_name + ".publicKey" } type="String">
78-
The RSA or EC certificate public key. This field is omitted for HMAC key types.
78+
The certificate public key. This field is omitted for HMAC key types.
7979
</APIField>
8080
<APIField name={ props.base_field_name + ".type" } type="String">
8181
The key type. The possible values are:
@@ -96,6 +96,8 @@ import JSON from 'src/components/JSON.astro';
9696
<JSON title="Example RSA Key Response JSON" src="keys/rsa-response.json" />
9797

9898
<JSON title="Example EC Key Response JSON" src="keys/ec-response.json" />
99+
100+
<JSON title="Example EdDSA Key Response JSON" src="keys/eddsa-response.json" />
99101

100102
</>}
101103

astro/src/content/docs/apis/jwt.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ _Response Codes_
142142

143143
## Retrieve Public Keys
144144

145-
This API is used to retrieve Public Keys generated by FusionAuth. These can be used to cryptographically verify JWTs signed with the corresponding RSA or ECDSA private key.
145+
This API is used to retrieve Public Keys generated by FusionAuth. These can be used to cryptographically verify JWTs signed with the corresponding private key.
146146

147147
### Request
148148

astro/src/content/docs/extend/events-and-webhooks/events/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ These are the events that FusionAuth generates that can be optionally consumed b
2020

2121
* [Audit Log Create](/docs/extend/events-and-webhooks/events/audit-log-create) - when an audit log is created
2222
* [Event Log Create](/docs/extend/events-and-webhooks/events/event-log-create) - when an event log is created
23-
* [JWT Public Key Update](/docs/extend/events-and-webhooks/events/jwt-public-key-update) - when a JWT RSA Public / Private keypair used for signing may have been updated
23+
* [JWT Public Key Update](/docs/extend/events-and-webhooks/events/jwt-public-key-update) - when a JWT signing Public / Private keypair used for signing may have been updated
2424
* [JWT Refresh](/docs/extend/events-and-webhooks/events/jwt-refresh) - when an access token is refreshed using a refresh token
2525
* [JWT Refresh Token Revoke](/docs/extend/events-and-webhooks/events/jwt-refresh-token-revoke) - when a refresh token (or multiple tokens) are revoked
2626
* [Kickstart Success](/docs/extend/events-and-webhooks/events/kickstart-success) - when kickstart has successfully completed

astro/src/content/docs/extend/events-and-webhooks/signing.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,12 @@ Configuring webhook signatures in FusionAuth consists of generating a key and co
2828

2929
Keys are generated or imported from <Breadcrumb>Settings -> Key Master</Breadcrumb>. Webhooks can be signed with three types of keys
3030

31-
* EC key - strongest cryptography, public key can be available
31+
* OKP (EdDSA) key - strongest cryptography, public key can be available
32+
* EC key - stronger cryptography, public key can be available
3233
* RSA key - strong cryptography, public key can be available
3334
* HMAC key - fast cryptography, requires manual key distribution
3435

35-
EC and RSA keys allow you to make public keys available through the `/.well-known/jwks.json` endpoint, which facilitates key rotation. If your webhook listener cannot make outbound network connections or you prefer to manually configure your key in your webhook listener, HMAC keys are a good option.
36+
Asymmetric key types allow you to make public keys available through the `/.well-known/jwks.json` endpoint, which facilitates key rotation. If your webhook listener cannot make outbound network connections or you prefer to manually configure your key in your webhook listener, HMAC keys are a good option.
3637

3738
For this example, we'll use an RSA key pair. More information on keys is available in the [Key Master Guide](/docs/operate/secure/key-master).
3839

@@ -87,7 +88,7 @@ The [Webhook Testing](/docs/extend/events-and-webhooks#test-a-webhook) page prov
8788

8889
[Rotating keys](/docs/operate/secure/key-rotation) regularly is an important part of a defense-in-depth strategy. The type of key used for signing webhook events and the method used for fetching that key determines the process for rotating keys.
8990

90-
* Signatures validated using a public key (RSA or EC) where signature verification dynamically fetches public key from `.well-known/jwks.json` endpoint
91+
* Signatures validated using a public key where signature verification dynamically fetches public key from `.well-known/jwks.json` endpoint
9192
* Generate new key in FusionAuth
9293
* Update webhook signing key to use new key
9394
* Test

astro/src/content/docs/lifecycle/authenticate-users/login-api/json-web-tokens.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ FusionAuth provides three configuration locations for JWT signing:
8080
* an Application level setting
8181
* with [Entity Management](/docs/get-started/core-concepts/entity-management), each entity type can have a unique key
8282

83-
FusionAuth supports configurations for HMAC, ECDSA (Elliptic Curve) or RSA based signing algorithms.
83+
FusionAuth supports configurations for HMAC, ECDSA (Elliptic Curve), EdDSA, or RSA based signing algorithms.
8484

8585
Keys are managed in [Key Master](/docs/operate/secure/key-master) and can be generated or imported there.
8686

87-
### ECDSA & RSA Signing
87+
### Asymmetric Signing
8888

89-
If you are using FusionAuth in a hybrid environment where applications may be untrusted, asymmetric ECDSA or RSA signing is preferred.
89+
If you are using FusionAuth in a hybrid environment where applications may be untrusted, asymmetric signing using EdDSA, ECDSA, or RSA is preferred.
9090

9191
Using this approach allows you to provide applications with a public key to verify the JWT signature while securing the private key in FusionAuth.
9292

astro/src/content/docs/operate/secure/compliance.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Here is a non-exhaustive list of encryption FusionAuth uses:
1717

1818
### Signing
1919

20-
FusionAuth signs the items below using various cryptographic signature algorithms including HMAC, RSA, and ECDSA:
20+
FusionAuth signs the items below using various cryptographic signature algorithms including HMAC, RSA, ECDSA, and EdDSA:
2121

2222
* JWT signing
2323
* XML signing for SAML
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"key": {
3+
"algorithm": "Ed25519",
4+
"certificate": "-----BEGIN CERTIFICATE-----\nMIHsMIGfoAMCAQECEQDqdRGGNnhIwI8IEfDjwZN7MAUGAytlcDAYMRYwFAYDVQQD\nEw1mdXNpb25hdXRoLmlvMB4XDTI1MTIxODE2MDUyNVoXDTM1MTIxODE2MDUyNVow\nGDEWMBQGA1UEAxMNZnVzaW9uYXV0aC5pbzAqMAUGAytlcAMhAI+wTC3wU30tqiGR\n8RsFrAYl++dNZTRIdwUqPmMv3xeqMAUGAytlcANBANiOCGE+XoUorYo13gor1PWM\n6sL7j2oDBbSExzThihvYXyO7Lx7s8ZCgJ8rIcxgDQRJbhq1n5oxMAvGnzezDMwQ=\n-----END CERTIFICATE-----",
5+
"certificateInformation": {
6+
"issuer": "CN=fusionauth.io",
7+
"md5Fingerprint": "74:19:09:95:D9:6F:52:D9:83:D5:CD:48:D2:26:34:A2",
8+
"serialNumber": "00:EA:75:11:86:36:78:48:C0:8F:08:11:F0:E3:C1:93:7B",
9+
"sha1Fingerprint": "AB:6D:71:A6:B6:36:BA:D3:00:7D:1D:E8:CB:08:25:6F:46:13:EF:51",
10+
"sha1Thumbprint": "q21xprY2utMAfR3oywglb0YT71E",
11+
"sha256Fingerprint": "1A:BE:72:43:9A:B6:06:D5:08:32:06:28:A8:1B:DF:73:A2:99:5E:82:FF:C4:A3:FD:F3:9B:5F:5F:80:4A:27:D4",
12+
"sha256Thumbprint": "Gr5yQ5q2BtUIMgYoqBvfc6KZXoL_xKP985tfX4BKJ9Q",
13+
"subject": "CN=fusionauth.io",
14+
"validFrom": 1766073925573,
15+
"validTo": 2081606725573
16+
},
17+
"expirationInstant": 2081606725573,
18+
"hasPrivateKey": true,
19+
"id": "ea751186-3678-48c0-8f08-11f0e3c1937b",
20+
"insertInstant": 1766073925573,
21+
"issuer": "fusionauth.io",
22+
"kid": "q21xprY2utMAfR3oywglb0YT71E",
23+
"lastUpdateInstant": 1766073925573,
24+
"length": 32,
25+
"name": "EdDSA using the Ed25519 parameter set",
26+
"publicKey": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAj7BMLfBTfS2qIZHxGwWsBiX7501lNEh3BSo+Yy/fF6o=\n-----END PUBLIC KEY-----",
27+
"type": "OKP"
28+
}
29+
}

0 commit comments

Comments
 (0)