Skip to content

Commit

Permalink
fix(default_cmm): track unset default alg separately (#687)
Browse files Browse the repository at this point in the history
* default_cmm: track unset default alg separately

* clang-format

Co-authored-by: Tony Knapp <[email protected]>
  • Loading branch information
alex-chew and texastony authored Aug 30, 2022
1 parent 824b9c6 commit 072bce0
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions source/default_cmm.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@

#include <assert.h>

#define DEFAULT_ALG_UNSET 0x7FFF
#define DEFAULT_ALG_NON_KEY_COMMITTING ALG_AES256_GCM_IV12_TAG16_HKDF_SHA384_ECDSA_P384
#define DEFAULT_ALG_KEY_COMMITTING ALG_AES256_GCM_HKDF_SHA512_COMMIT_KEY_ECDSA_P384

Expand All @@ -29,8 +28,8 @@ struct default_cmm {
struct aws_cryptosdk_cmm base;
struct aws_allocator *alloc;
struct aws_cryptosdk_keyring *kr;
/* Invariant: this is either DEFAULT_ALG_UNSET or is a valid algorithm ID */
enum aws_cryptosdk_alg_id default_alg;
bool default_alg_is_set;
};

static int default_cmm_generate_enc_materials(
Expand All @@ -52,7 +51,7 @@ static int default_cmm_generate_enc_materials(
}

if (!request->requested_alg) {
if (self->default_alg == DEFAULT_ALG_UNSET) {
if (!self->default_alg_is_set) {
if (aws_cryptosdk_commitment_policy_encrypt_must_include_commitment(request->commitment_policy)) {
request->requested_alg = DEFAULT_ALG_KEY_COMMITTING;
} else {
Expand Down Expand Up @@ -170,9 +169,10 @@ struct aws_cryptosdk_cmm *aws_cryptosdk_default_cmm_new(struct aws_allocator *al

aws_cryptosdk_cmm_base_init(&cmm->base, &default_cmm_vt);

cmm->alloc = alloc;
cmm->kr = aws_cryptosdk_keyring_retain(kr);
cmm->default_alg = DEFAULT_ALG_UNSET;
cmm->alloc = alloc;
cmm->kr = aws_cryptosdk_keyring_retain(kr);
cmm->default_alg = 0;
cmm->default_alg_is_set = false;

return (struct aws_cryptosdk_cmm *)cmm;
}
Expand All @@ -186,7 +186,8 @@ int aws_cryptosdk_default_cmm_set_alg_id(struct aws_cryptosdk_cmm *cmm, enum aws
return aws_raise_error(AWS_CRYPTOSDK_ERR_UNSUPPORTED_FORMAT);
}

self->default_alg = alg_id;
self->default_alg = alg_id;
self->default_alg_is_set = true;
return AWS_OP_SUCCESS;
}

Expand Down

0 comments on commit 072bce0

Please sign in to comment.