aws / aws/aws-encryption-sdk-c
multi_keyring needs a non-deterministic construct predicate
- 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
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