aws / aws/aws-encryption-sdk-c

multi_keyring needs a non-deterministic construct predicate

Open
#524 0 comments 0 reactions 0 assignees View on GitHub
cbmc
Dominant language
C
Stars
63
Forks
59
PR merge metrics
No merged PRs in 30d

Description

[PR #510](https://github.com/aws/aws-encryption-sdk-c/pull/510) adds a proof harness for `aws_cryptosdk_multi_keyring_add_child`, which still uses the `aws_cryptosdk_multi_keyring_new` instead of a non-deterministic construct predicate to initialize the data structure. We need to investigate whether this could be more non-deterministic. The proof documentation also states:
```c
/*
* We inject non-deterministic parameters in aws_cryptosdk_multi_keyring_new to ensure
* that multi_keyring is allocated. We use the initializer because a multi_keyring
* structure must have as base member the static aws_cryptosdk_keyring_vt (vt) defined
* in the multi_keyring.c file.
*/
```

Contributor guide

Open the contributing guide

Research direction

Start with PR #510 and the proof harness for aws_cryptosdk_multi_keyring_add_child, then inspect aws_cryptosdk_multi_keyring_new and the static aws_cryptosdk_keyring_vt in multi_keyring.c. Determine whether initialization can use a non-deterministic construct predicate while preserving the required base member, and document or implement the resulting approach.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
cryptography, security
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.