Skip to content

Commit 9c8c8d9

Browse files
committed
remove option from client and more tests
1 parent 9b4d988 commit 9c8c8d9

File tree

16 files changed

+187
-65
lines changed

16 files changed

+187
-65
lines changed

modules/decrypt-node/src/decrypt_client.ts

-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export function buildDecrypt(
3131
const {
3232
commitmentPolicy = CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT,
3333
maxEncryptedDataKeys = false,
34-
utf8Sorting = false,
3534
} = typeof options === 'string' ? { commitmentPolicy: options } : options
3635

3736
/* Precondition: node buildDecrypt needs a valid commitmentPolicy. */
@@ -45,7 +44,6 @@ export function buildDecrypt(
4544
const clientOptions: ClientOptions = {
4645
commitmentPolicy,
4746
maxEncryptedDataKeys,
48-
utf8Sorting,
4947
}
5048
return {
5149
decryptUnsignedMessageStream: _decryptStream.bind(

modules/decrypt-node/test/decrypt.test.ts

+47
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,53 @@ describe('decrypt', () => {
214214
})
215215
).to.rejectedWith(Error, 'maxEncryptedDataKeys exceeded.')
216216
})
217+
218+
it('will fail to decrypt ciphertext with high utf8 codepoints and no utf8 sorting on keyring', async () => {
219+
const { decrypt } = buildDecrypt({
220+
commitmentPolicy: CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT,
221+
maxEncryptedDataKeys: 3,
222+
utf8Sorting: false,
223+
})
224+
const hkeyring = fixtures.hKeyring(false)
225+
const ciphertext = fixtures.hierarchyMessageWithHighUtf8CodePoints()
226+
227+
await expect(
228+
decrypt(hkeyring, ciphertext, {
229+
encoding: 'base64',
230+
})
231+
).to.rejectedWith(Error, 'Unsupported state or unable to authenticate data')
232+
})
233+
234+
it('will decrypt ciphertext with high utf8 codepoints with a keyring configured to do utf8 sorting', async () => {
235+
const { decrypt } = buildDecrypt({
236+
commitmentPolicy: CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT,
237+
maxEncryptedDataKeys: 3,
238+
utf8Sorting: false,
239+
})
240+
const hkeyring = fixtures.hKeyring(true)
241+
const ciphertext = fixtures.hierarchyMessageWithHighUtf8CodePoints()
242+
const { plaintext } = await decrypt(hkeyring, ciphertext, {
243+
encoding: 'base64',
244+
})
245+
expect(plaintext).to.deep.equal(Buffer.from('Hello World'))
246+
})
247+
248+
it('will decrypt ciphertext with high utf8 codepoints with a multikeyring with both utf8 and no utf8 sorting', async () => {
249+
const { decrypt } = buildDecrypt({
250+
commitmentPolicy: CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT,
251+
maxEncryptedDataKeys: 3,
252+
utf8Sorting: false,
253+
})
254+
const hkeyringUtf8 = fixtures.hKeyring(true)
255+
const hkeyringNoUtf8 = fixtures.hKeyring(false)
256+
const multikeyring = fixtures.multiKeyring(hkeyringUtf8, hkeyringNoUtf8)
257+
258+
const ciphertext = fixtures.hierarchyMessageWithHighUtf8CodePoints()
259+
const { plaintext } = await decrypt(multikeyring, ciphertext, {
260+
encoding: 'base64',
261+
})
262+
expect(plaintext).to.deep.equal(Buffer.from('Hello World'))
263+
})
217264
})
218265

219266
function chunkCipherTextStream(ciphertext: Buffer, { size }: { size: number }) {

modules/decrypt-node/test/fixtures.ts

+36-1
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ import {
88
NodeEncryptionMaterial,
99
KeyringNode,
1010
KeyringTraceFlag,
11+
MultiKeyringNode,
1112
} from '@aws-crypto/material-management-node'
12-
13+
import { KmsHierarchicalKeyRingNode } from '@aws-crypto/kms-keyring-node'
14+
import { BranchKeyStoreNode } from '@aws-crypto/branch-keystore-node'
1315
export function base64CiphertextAlgAes256GcmIv12Tag16HkdfSha384EcdsaP384() {
1416
return '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'
1517
}
@@ -74,6 +76,10 @@ export function fourEdksMessage() {
7476
return 'AYAAFO/VP38MeBJoKQshvIaF8TgAAAAEAAR0ZW1wABhrZXkzAAAAgAAAAAzIotUMc7SaFTbzk0EAIKgxmVzmYedtQj5od6KglliFAx7G3OBYHMgyvbGQVJSyAAR0ZW1wABhrZXkwAAAAgAAAAAwBe+86+eb8+uYOeoIAIFmT8yZvThnsJigzsRen9OJc0kuGE+rJyalk+yF5VdNBAAR0ZW1wABhrZXkyAAAAgAAAAAy939QOrzUF3XKc0m8AICSGMg1tdgULYD15Jr7RWkFgqCXjtwyUK86xqrU+OzV9AAR0ZW1wABhrZXkxAAAAgAAAAAxE6lJVWjxWLtvnkBYAIJUl4vhbLEjNS/3g3of4T/QvAR7TGPJZgv7cLqOP0T7uAgAAAAAMAAAQAAAAAAAAAAAAAAAAAOMcqPpQVjBzbYAHIPjMM1T/////AAAAAQAAAAAAAAAAAAAAAQAAAAQPcr1WkUGY1IDMmCgdibk0zwg4Yg=='
7577
}
7678

79+
export function hierarchyMessageWithHighUtf8CodePoints() {
80+
return 'AgV4PI3AdgfggyWInxz6XkfmQMbOd7/RgCN9HTTg7KeiczgAaQACABVhd3MtY3J5cHRvLXB1YmxpYy1rZXkAREE2MTQvUGlNNTkyNkZwN3NWeUltVjhNZVZ4eEJNeFRpajI5Y3ozeFVZaFIwT29wbHJjT0sxNWFrR25BcENiOGkxZz09AALCtgAE8JOJqQABABFhd3Mta21zLWhpZXJhcmNoeQAkNmUxZjVlZGMtOWE3MC00YThlLWFkZmItMzdhZWVmZGVhOWU2AFx9XILjG4l3+qJ1BzpOHfZ5mf0eHmX4r3+q16U1LRGGFoVxS2mPKAqwWMUSwe2tNCe3G6kANAmRi4pyD2FK0VpuHx5FbpNgP3BR+U3cHYXiSg1vMMYEMl3usnss1QIAABAA1/mKQ+4BMR0aajtum3RQQxKfvFpi5DeCTVt0V8x7ibGHP7FCZzQWujM7M/rcfkeo/////wAAAAEAAAAAAAAAAAAAAAEAAAALxddd43JEIrllMceZonlyQGtPTX1zTsf+vwChAGcwZQIxALKuLqVHZNuvXhyjjRzs8ysgtJqvcVgvIgX1ExBKHueZLP7XsZOSUG/4SqxMFXGzuQIwOf1zLim/I65beZF1p1az1gyD+UzpWIa/vg9y0wjsYPDUEb9sUyUVU3etQ+y0LwI2'
81+
}
82+
7783
export function decryptKeyring(): KeyringNode {
7884
class TestKeyring extends KeyringNode {
7985
async _onEncrypt(): Promise<NodeEncryptionMaterial> {
@@ -95,6 +101,35 @@ export function decryptKeyring(): KeyringNode {
95101
return new TestKeyring()
96102
}
97103

104+
export function hKeyring(utf8Sorting: boolean): KeyringNode {
105+
const keyStoreTableName = 'KeyStoreDdbTable'
106+
const logicalKeyStoreName = keyStoreTableName
107+
const kmsKeyId =
108+
'arn:aws:kms:us-west-2:370957321024:key/9d989aa2-2f9c-438c-a745-cc57d3ad0126'
109+
const keyStore = new BranchKeyStoreNode({
110+
storage: { ddbTableName: keyStoreTableName },
111+
logicalKeyStoreName: logicalKeyStoreName,
112+
kmsConfiguration: { identifier: kmsKeyId },
113+
})
114+
const branchKeyId = '6e1f5edc-9a70-4a8e-adfb-37aeefdea9e6'
115+
return new KmsHierarchicalKeyRingNode({
116+
branchKeyId,
117+
keyStore,
118+
cacheLimitTtl: 600, // 10 min
119+
utf8Sorting,
120+
})
121+
}
122+
123+
export function multiKeyring(
124+
keyring1: KeyringNode,
125+
keyring2: KeyringNode
126+
): KeyringNode {
127+
return new MultiKeyringNode({
128+
generator: keyring1,
129+
children: [keyring2],
130+
})
131+
}
132+
98133
export interface VectorTest {
99134
ciphertext: string
100135
commitment: string

modules/encrypt-browser/src/encrypt.ts

+2-7
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import {
3131
import { fromUtf8 } from '@aws-sdk/util-utf8-browser'
3232
import { getWebCryptoBackend } from '@aws-crypto/web-crypto-backend'
3333

34+
const serialize = serializeFactory(fromUtf8, { utf8Sorting: true })
3435
const { messageAADContentString, messageAAD } = aadFactory(fromUtf8)
3536

3637
export interface EncryptInput {
@@ -46,7 +47,7 @@ export interface EncryptResult {
4647
}
4748

4849
export async function _encrypt(
49-
{ commitmentPolicy, maxEncryptedDataKeys, utf8Sorting }: ClientOptions,
50+
{ commitmentPolicy, maxEncryptedDataKeys }: ClientOptions,
5051
cmm: KeyringWebCrypto | WebCryptoMaterialsManager,
5152
plaintext: Uint8Array,
5253
{
@@ -121,12 +122,6 @@ export async function _encrypt(
121122

122123
const { getSubtleEncrypt, keyCommitment } = await getEncryptInfo(messageId)
123124

124-
const maybeUtf8Sorting = utf8Sorting ?? false
125-
126-
const serialize = serializeFactory(fromUtf8, {
127-
utf8Sorting: maybeUtf8Sorting,
128-
})
129-
130125
const messageHeader = serialize.buildMessageHeader({
131126
suite: material.suite,
132127
encryptedDataKeys: material.encryptedDataKeys,

modules/encrypt-browser/src/encrypt_client.ts

-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ export function buildEncrypt(
2323
const {
2424
commitmentPolicy = CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT,
2525
maxEncryptedDataKeys = false,
26-
utf8Sorting = false,
2726
} = typeof options === 'string' ? { commitmentPolicy: options } : options
2827

2928
/* Precondition: browser buildEncrypt needs a valid commitmentPolicy. */
@@ -37,7 +36,6 @@ export function buildEncrypt(
3736
const clientOptions: ClientOptions = {
3837
commitmentPolicy,
3938
maxEncryptedDataKeys,
40-
utf8Sorting,
4139
}
4240
return {
4341
encrypt: _encrypt.bind({}, clientOptions),

modules/encrypt-node/src/encrypt_client.ts

-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ export function buildEncrypt(
2727
const {
2828
commitmentPolicy = CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT,
2929
maxEncryptedDataKeys = false,
30-
utf8Sorting = false,
3130
} = typeof options === 'string' ? { commitmentPolicy: options } : options
3231

3332
/* Precondition: node buildEncrypt needs a valid commitmentPolicy. */
@@ -41,7 +40,6 @@ export function buildEncrypt(
4140
const clientOptions: ClientOptions = {
4241
commitmentPolicy,
4342
maxEncryptedDataKeys,
44-
utf8Sorting,
4543
}
4644
return {
4745
encryptStream: _encryptStream.bind({}, clientOptions),

modules/encrypt-node/src/encrypt_stream.ts

+5-8
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ import { pipeline } from 'readable-stream'
3333
import { Duplex } from 'stream'
3434

3535
const fromUtf8 = (input: string) => Buffer.from(input, 'utf8')
36+
const { serializeMessageHeader, headerAuthIv, buildMessageHeader } =
37+
serializeFactory(fromUtf8, { utf8Sorting: true })
3638

3739
export interface EncryptStreamInput {
3840
suiteId?: AlgorithmSuiteIdentifier
@@ -51,7 +53,7 @@ export interface EncryptStreamInput {
5153
* @param op EncryptStreamInput
5254
*/
5355
export function _encryptStream(
54-
{ commitmentPolicy, maxEncryptedDataKeys, utf8Sorting }: ClientOptions,
56+
{ commitmentPolicy, maxEncryptedDataKeys }: ClientOptions,
5557
cmm: KeyringNode | NodeMaterialsManager,
5658
op: EncryptStreamInput = {}
5759
): Duplex {
@@ -109,17 +111,15 @@ export function _encryptStream(
109111
'maxEncryptedDataKeys exceeded.'
110112
)
111113

112-
const maybeUtf8Sorting = utf8Sorting ?? false
113114
const { getCipher, messageHeader, rawHeader, dispose, getSigner } =
114-
getEncryptionInfo(material, frameLength, maybeUtf8Sorting)
115+
getEncryptionInfo(material, frameLength)
115116

116117
wrappingStream.emit('MessageHeader', messageHeader)
117118

118119
const encryptStream = getFramedEncryptStream(
119120
getCipher,
120121
messageHeader,
121122
dispose,
122-
maybeUtf8Sorting,
123123
{ plaintextLength, suite: material.suite }
124124
)
125125
const signatureStream = new SignatureStream(getSigner)
@@ -140,12 +140,9 @@ export function _encryptStream(
140140

141141
export function getEncryptionInfo(
142142
material: NodeEncryptionMaterial,
143-
frameLength: number,
144-
utf8Sorting: boolean
143+
frameLength: number
145144
) {
146145
const { getCipherInfo, dispose, getSigner } = getEncryptHelper(material)
147-
const { serializeMessageHeader, headerAuthIv, buildMessageHeader } =
148-
serializeFactory(fromUtf8, { utf8Sorting })
149146
const { suite, encryptionContext, encryptedDataKeys } = material
150147
const { ivLength, messageFormat } = material.suite
151148

modules/encrypt-node/src/framed_encrypt_stream.ts

+3-15
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import {
1818
} from '@aws-crypto/material-management-node'
1919

2020
const fromUtf8 = (input: string) => Buffer.from(input, 'utf8')
21+
const serialize = serializeFactory(fromUtf8, { utf8Sorting: true })
22+
const { finalFrameHeader, frameHeader } = serialize
2123
const aadUtility = aadFactory(fromUtf8)
2224

2325
interface AccumulatingFrame {
@@ -45,7 +47,6 @@ export function getFramedEncryptStream(
4547
getCipher: GetCipher,
4648
messageHeader: MessageHeader,
4749
dispose: () => void,
48-
utf8Sorting: boolean,
4950
{
5051
plaintextLength,
5152
suite,
@@ -106,7 +107,6 @@ export function getFramedEncryptStream(
106107
getCipher,
107108
isFinalFrame: false,
108109
suite,
109-
utf8Sorting,
110110
})
111111

112112
// Reset frame state for next frame
@@ -129,7 +129,6 @@ export function getFramedEncryptStream(
129129
getCipher,
130130
isFinalFrame: true,
131131
suite,
132-
utf8Sorting,
133132
})
134133

135134
this._flushEncryptFrame(encryptFrame)
@@ -206,18 +205,10 @@ type EncryptFrameInput = {
206205
getCipher: GetCipher
207206
isFinalFrame: boolean
208207
suite: NodeAlgorithmSuite
209-
utf8Sorting: boolean
210208
}
211209

212210
export function getEncryptFrame(input: EncryptFrameInput): EncryptFrame {
213-
const {
214-
pendingFrame,
215-
messageHeader,
216-
getCipher,
217-
isFinalFrame,
218-
suite,
219-
utf8Sorting,
220-
} = input
211+
const { pendingFrame, messageHeader, getCipher, isFinalFrame, suite } = input
221212
const { sequenceNumber, contentLength, content } = pendingFrame
222213
const { frameLength, contentType, messageId } = messageHeader
223214
/* Precondition: The content length MUST correlate with the frameLength.
@@ -235,9 +226,6 @@ export function getEncryptFrame(input: EncryptFrameInput): EncryptFrame {
235226
isFinalFrame,
236227
})}`
237228
)
238-
const serialize = serializeFactory(fromUtf8, { utf8Sorting })
239-
const { finalFrameHeader, frameHeader } = serialize
240-
241229
const frameIv = serialize.frameIv(suite.ivLength, sequenceNumber)
242230
const bodyHeader = Buffer.from(
243231
isFinalFrame

modules/encrypt-node/test/framed_encrypt_stream.test.ts

+4-9
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ describe('getFramedEncryptStream', () => {
2828
getCipher,
2929
{} as any,
3030
() => {},
31-
false,
3231
{} as any
3332
)
3433
expect(test._transform).is.a('function')
@@ -37,13 +36,13 @@ describe('getFramedEncryptStream', () => {
3736
it('Precondition: plaintextLength must be within bounds.', () => {
3837
const getCipher: any = () => {}
3938
expect(() =>
40-
getFramedEncryptStream(getCipher, {} as any, () => {}, false, {
39+
getFramedEncryptStream(getCipher, {} as any, () => {}, {
4140
plaintextLength: -1,
4241
suite,
4342
})
4443
).to.throw(Error, 'plaintextLength out of bounds.')
4544
expect(() =>
46-
getFramedEncryptStream(getCipher, {} as any, () => {}, false, {
45+
getFramedEncryptStream(getCipher, {} as any, () => {}, {
4746
plaintextLength: Number.MAX_SAFE_INTEGER + 1,
4847
suite,
4948
})
@@ -53,7 +52,7 @@ describe('getFramedEncryptStream', () => {
5352
* I want to make sure that I don't have an errant off by 1 error.
5453
*/
5554
expect(() =>
56-
getFramedEncryptStream(getCipher, {} as any, () => {}, false, {
55+
getFramedEncryptStream(getCipher, {} as any, () => {}, {
5756
plaintextLength: Number.MAX_SAFE_INTEGER,
5857
suite,
5958
})
@@ -62,7 +61,7 @@ describe('getFramedEncryptStream', () => {
6261

6362
it('Precondition: Must not process more than plaintextLength.', () => {
6463
const getCipher: any = () => {}
65-
const test = getFramedEncryptStream(getCipher, {} as any, () => {}, false, {
64+
const test = getFramedEncryptStream(getCipher, {} as any, () => {}, {
6665
plaintextLength: 8,
6766
suite,
6867
})
@@ -79,7 +78,6 @@ describe('getFramedEncryptStream', () => {
7978
getCipher,
8079
{ frameLength } as any,
8180
() => {},
82-
false,
8381
{} as any
8482
)
8583

@@ -114,7 +112,6 @@ describe('getEncryptFrame', () => {
114112
encryptedDataKeys: [],
115113
},
116114
suite,
117-
utf8Sorting: false,
118115
}
119116
const test1 = getEncryptFrame(input)
120117
expect(test1.content).to.equal(input.pendingFrame.content)
@@ -149,7 +146,6 @@ describe('getEncryptFrame', () => {
149146
encryptedDataKeys: [],
150147
},
151148
suite,
152-
utf8Sorting: false,
153149
}
154150

155151
expect(() => getEncryptFrame(inputFinalFrameToLarge)).to.throw(
@@ -176,7 +172,6 @@ describe('getEncryptFrame', () => {
176172
encryptedDataKeys: [],
177173
},
178174
suite,
179-
utf8Sorting: false,
180175
}
181176

182177
// Make sure that it must be equal as long as we are here...

modules/integration-node/src/integration_tests.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ import { version } from './version'
2727
import { URL } from 'url'
2828
import got from 'got'
2929
import streamToPromise from 'stream-to-promise'
30-
const { encrypt, decrypt, decryptUnsignedMessageStream } = buildClient(
31-
CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT
32-
)
30+
const { encrypt, decrypt, decryptUnsignedMessageStream } = buildClient({
31+
commitmentPolicy: CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT,
32+
maxEncryptedDataKeys: false,
33+
})
3334
import { ZipFile } from 'yazl'
3435
import { createWriteStream } from 'fs'
3536
import { v4 } from 'uuid'

0 commit comments

Comments
 (0)