Skip to content

Commit 35c4b7e

Browse files
committed
PR feedback
1 parent b4b170a commit 35c4b7e

File tree

1 file changed

+19
-8
lines changed

1 file changed

+19
-8
lines changed

proposals/2020-07-28_keyring-cmm/proposal.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,11 @@ that customers SHOULD use.
5959
## Motivation
6060

6161
Prior to this change, the Default CMM serves two purposes.
62-
First, it provides a base implementation of a CMM that uses a
63-
keyring or master key provider to ensure valid materials.
62+
First, it provides a base implementation of a CMM that:
63+
64+
- Uses a keyring or master key provider to provide valid materials.
65+
- Handles providing the signature key and verification key with the materials.
66+
6467
Second, it serves as a safe default that can be used for most use cases.
6568

6669
While there is currently no conflict in these purposes,
@@ -72,7 +75,9 @@ One way to address this would be to directly add the new desired behavior
7275
to the current Default CMM implementation,
7376
however this makes our provided CMMs less composable.
7477
Keeping the CMM composable is important because it allows users to assert desired properties
75-
[by construction](../../tenets.md#correct-by-construction).
78+
[by construction](https://github.com/awslabs/aws-encryption-sdk-specification/blob/2ec7674c304c408c2a32d412e834939c73f68d80/tenets.md#correct-by-construction).
79+
Additionally this approach would not allow customers to opt out of this new behavior if
80+
it is not desirable for their use case.
7681
Because it is important to retain this base implementation,
7782
we should define a CMM whose sole purpose is to be this base implementation.
7883
We will call this CMM implementation the Keyring CMM.
@@ -124,7 +129,9 @@ or compose a CMM using the AWS Encryption SDK's provided CMM implementations
124129
The Default CMM is a specific configuration of a
125130
CMM implementation provided by the AWS Encryption SDK.
126131

127-
The specific CMM configuration describes a safe default that serves most use cases.
132+
The specific CMM configuration describes a
133+
[safe default](https://github.com/awslabs/aws-encryption-sdk-specification/blob/2ec7674c304c408c2a32d412e834939c73f68d80/tenets.md#sensible-defaults)
134+
that serves most use cases.
128135

129136
The CMM configuration defined by the Default CMM is the [Keyring CMM](#keyring-cmm) as is
130137
(The Keyring CMM provides no additional options other than specifying an underlying Keyring).
@@ -171,15 +178,19 @@ SHOULD compose with the Master Key Provider CMM.
171178

172179
### Default CMM
173180

174-
On initialization it MUST accept:
181+
On initialization, the caller MUST provide exactly one of the following:
175182

176-
- an underlying [Keyring](../../framework/keyring-interface.md)
183+
- [Keyring](../../framework/keyring-interface.md)
184+
- If this AWS Encryption SDK implementations provides a [Master Key Provider CMM](#master-key-provider-cmm),
185+
a [Master Key Provider](../../framework/master-key-provider-interface.md)
177186

178-
It MUST NOT take any additional configuration.
187+
The Default CMM MUST NOT accept any additional configuration.
179188

180189
It MUST construct a CMM in the following manner:
181190

182-
- Initialize a [Keyring CMM](#keyring-cmm) with the configured underlying Keyring
191+
- If a keyring was supplied, initialize a [Keyring CMM](#keyring-cmm) with the provided keyring.
192+
- If a master key provider was supplied, initialize a [Master Key Provider CMM](#keyring-cmm)
193+
with the provided master key provider.
183194

184195
This CMM MUST NOT offer any additional features beyond the composed CMM created
185196
above.

0 commit comments

Comments
 (0)