Skip to content

Commit 1842480

Browse files
committed
fix? integration node
1 parent 71498e4 commit 1842480

File tree

5 files changed

+32
-4
lines changed

5 files changed

+32
-4
lines changed

modules/integration-node/src/integration_tests.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,12 @@ import {
2222
MessageHeader,
2323
needs,
2424
DecryptOutput,
25+
getCompatibleCommitmentPolicy,
2526
} from '@aws-crypto/client-node'
2627
import { version } from './version'
2728
import { URL } from 'url'
2829
import got from 'got'
2930
import streamToPromise from 'stream-to-promise'
30-
const { encrypt, decrypt, decryptUnsignedMessageStream } = buildClient({
31-
commitmentPolicy: CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT,
32-
maxEncryptedDataKeys: false,
33-
})
3431
import { ZipFile } from 'yazl'
3532
import { createWriteStream } from 'fs'
3633
import { v4 } from 'uuid'
@@ -59,6 +56,9 @@ async function runDecryption(
5956
testVectorInfo: TestVectorInfo
6057
): Promise<DecryptOutput> {
6158
const cmm = decryptMaterialsManagerNode(testVectorInfo.keysInfo)
59+
const { decrypt, decryptUnsignedMessageStream } = buildClient(
60+
CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT
61+
)
6262
if (testVectorInfo.decryptionMethod == 'streaming-unsigned-only') {
6363
const plaintext: Buffer[] = []
6464
let messageHeader: MessageHeader | false = false
@@ -148,6 +148,8 @@ export async function testEncryptVector(
148148
handleEncryptResult: HandleEncryptResult
149149
): Promise<TestVectorResult> {
150150
const { name, keysInfo, encryptOp, plainTextData } = info
151+
const commitmentPolicy = getCompatibleCommitmentPolicy(encryptOp.suiteId)
152+
const { encrypt } = buildClient(commitmentPolicy)
151153
try {
152154
const cmm = encryptMaterialsManagerNode(keysInfo)
153155
const { result: encryptResult } = await encrypt(

modules/material-management-node/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@ export {
3939
MessageFormat,
4040
ClientOptions,
4141
Newable,
42+
getCompatibleCommitmentPolicy,
4243
} from '@aws-crypto/material-management'

modules/material-management/src/algorithm_suites.ts

+13
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,19 @@ export const CommitmentPolicySuites = Object.freeze({
250250
}),
251251
})
252252

253+
export function getCompatibleCommitmentPolicy(
254+
suiteId: AlgorithmSuiteIdentifier
255+
) {
256+
// If it is a algorithm suite with no key commitment
257+
// we use FORBID_ENCRYPT_ALLOW_DECRYPT
258+
// otherwise we use REQUIRE_ENCRYPT_REQUIRE_DECRYPT
259+
if (CommittingAlgorithmSuiteIdentifier[suiteId]) {
260+
return CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
261+
} else {
262+
return CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT
263+
}
264+
}
265+
253266
export type AlgorithmSuiteName = keyof typeof AlgorithmSuiteIdentifier
254267
export type AlgorithmSuiteTypeNode = 'node'
255268
export type AlgorithmSuiteTypeWebCrypto = 'webCrypto'

modules/material-management/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export {
2424
MessageFormat,
2525
NonCommittingAlgorithmSuiteIdentifier,
2626
CommittingAlgorithmSuiteIdentifier,
27+
getCompatibleCommitmentPolicy,
2728
} from './algorithm_suites'
2829

2930
export { WebCryptoAlgorithmSuite } from './web_crypto_algorithms'

modules/material-management/test/algorithm_suites.test.ts

+11
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,23 @@ import {
1313
NonSigningAlgorithmSuiteIdentifier,
1414
SignaturePolicy,
1515
SignaturePolicySuites,
16+
getCompatibleCommitmentPolicy,
1617
} from '../src/algorithm_suites'
1718

1819
describe('AlgorithmSuiteIdentifier', () => {
1920
it('should be frozen', () => {
2021
expect(Object.isFrozen(AlgorithmSuiteIdentifier)).to.eql(true)
2122
})
23+
it('get compatible commitment policy', () => {
24+
// 0x0014 is a non-commiting algorithm suite
25+
expect(getCompatibleCommitmentPolicy(0x0014)).to.eql(
26+
CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT
27+
)
28+
// 0x0478 is a commiting algorithm suite
29+
expect(getCompatibleCommitmentPolicy(0x0478)).to.eql(
30+
CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT
31+
)
32+
})
2233
})
2334

2435
describe('AlgorithmSuite', () => {

0 commit comments

Comments
 (0)