aws / aws/aws-encryption-sdk-javascript

Examples for all new canonical examples

Open
#398 0 comments 0 reactions 0 assignees View on GitHub
doc change required
Dominant language
TypeScript
Stars
260
Forks
68
Avg merge
22h 19m
Merged PRs (30d)
2

Description

We are standardizing examples across all implementations. We started with Python[1] and Java[2], so all new implementations need to match those examples.

Related to https://github.com/awslabs/aws-encryption-sdk-specification/issues/103, it is important that these examples be as near as possible direct copies. The premise wording needs to be the same, wording of the step-by-step comments need to be the same, and we need to hit all the major points in the example.

# Necessary Examples

## API

- [ ] [How to encrypt and decrypt](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/onestep_defaults.py)
- [ ] [How to change the algorithm suite](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/onestep_unsigned.py)
- [ ] [How to encrypt and decrypt data streams in memory](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/in_memory_streaming_defaults.py)
- [ ] [How to encrypt and decrypt data streamed between files](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/file_streaming_defaults.py)

## Keyrings

### AWS KMS

- [ ] [How to use one AWS KMS CMK](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/single_cmk.py)
- [ ] [How to use multiple AWS KMS CMKs in different regions](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/multiple_regions.py)
- [ ] [How to decrypt when you don't know the CMK](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/discovery_decrypt.py)
- [ ] [How to decrypt within a region](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/discovery_decrypt_in_region_only.py)
- [ ] [How to decrypt with a preferred region but failover to others](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/discovery_decrypt_with_preferred_regions.py)
- [ ] [How to use AWS KMS clients with custom configuration](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/custom_kms_client_config.py) (details pending client supplier discussions)
- [ ] [How to use different AWS KMS client for different regions](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/aws_kms/custom_client_supplier.py) (details pending client supplier discussions)

### Raw keyrings

- [ ] [How to use a raw AES wrapping key](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/raw_aes/raw_aes.py)
- [ ] [How to use a raw RSA wrapping key](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/raw_rsa/keypair.py)
- [ ] [How to use a raw RSA wrapping key when the key is PEM or DER encoded](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/raw_rsa/keypair_from_pem.py)
- [ ] [How to encrypt with a raw RSA public key wrapping key without access to the private key](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/raw_rsa/public_private_key_separate.py)

### Multi-keyrings

- [ ] [How to combine AWS KMS with an offline escrow key](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/keyring/multi/aws_kms_with_escrow.py)

## Cryptographic Materials Managers

- [ ] [How to reuse data keys across multiple messages](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/crypto_materials_manager/caching/simple_cache.py)
- [ ] [How to restrict algorithm suites](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/crypto_materials_manager/custom/algorithm_suite_enforcement.py)
- [ ] [How to require encryption context fields](https://github.com/aws/aws-encryption-sdk-python/blob/master/examples/src/crypto_materials_manager/custom/requiring_encryption_context_fields.py)

[1] https://github.com/aws/aws-encryption-sdk-python/tree/master/examples
[2] https://github.com/aws/aws-encryption-sdk-java/tree/master/src/examples

Contributor guide

Open the contributing guide

Research direction

Start by comparing the Python examples linked in the checklist with the corresponding Java examples and inspect the JavaScript repository's existing examples. Work through the API, keyring, and cryptographic materials manager sections, keeping premise and step-by-step wording aligned. Done means every listed example is implemented and the checklist requirements are satisfied.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, typescript
Domain
cryptography, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.