1*e7b1675dSTing-Kang Chang# Python streaming AEAD example 2*e7b1675dSTing-Kang Chang 3*e7b1675dSTing-Kang ChangThis example shows how to encrypt files with Tink using streaming Authenticated 4*e7b1675dSTing-Kang ChangEncryption with Associated Data (AEAD). 5*e7b1675dSTing-Kang Chang 6*e7b1675dSTing-Kang ChangIt demonstrates the basic steps of using Tink, namely loading key material, 7*e7b1675dSTing-Kang Changobtaining a primitive, and using the primitive to do crypto. 8*e7b1675dSTing-Kang Chang 9*e7b1675dSTing-Kang ChangThe key material was generated using Tinkey: 10*e7b1675dSTing-Kang Chang 11*e7b1675dSTing-Kang Chang```shell 12*e7b1675dSTing-Kang Chang$ tinkey create-keyset --key-template AES256_CTR_HMAC_SHA256_1MB \ 13*e7b1675dSTing-Kang Chang --out-format JSON --out streaming_aead_keyset.json 14*e7b1675dSTing-Kang Chang``` 15*e7b1675dSTing-Kang Chang 16*e7b1675dSTing-Kang Chang## Build and run 17*e7b1675dSTing-Kang Chang 18*e7b1675dSTing-Kang Chang### Bazel 19*e7b1675dSTing-Kang Chang 20*e7b1675dSTing-Kang ChangBuild the examples: 21*e7b1675dSTing-Kang Chang 22*e7b1675dSTing-Kang Chang```shell 23*e7b1675dSTing-Kang Chang$ git clone https://github.com/google/tink 24*e7b1675dSTing-Kang Chang$ cd tink/python/examples 25*e7b1675dSTing-Kang Chang$ bazel build ... 26*e7b1675dSTing-Kang Chang``` 27*e7b1675dSTing-Kang Chang 28*e7b1675dSTing-Kang ChangYou can then encrypt a file with: 29*e7b1675dSTing-Kang Chang 30*e7b1675dSTing-Kang Chang```shell 31*e7b1675dSTing-Kang Chang$ echo "some data" > testdata.txt 32*e7b1675dSTing-Kang Chang 33*e7b1675dSTing-Kang Chang$ ./bazel-bin/streaming_aead/streaming_aead --mode encrypt \ 34*e7b1675dSTing-Kang Chang --keyset_path ./streaming_aead/streaming_aead_keyset.json \ 35*e7b1675dSTing-Kang Chang --input_path testdata.txt \ 36*e7b1675dSTing-Kang Chang --output_path testdata.txt.ciphertext 37*e7b1675dSTing-Kang Chang``` 38*e7b1675dSTing-Kang Chang 39*e7b1675dSTing-Kang ChangAnd then decrypt the the output with: 40*e7b1675dSTing-Kang Chang 41*e7b1675dSTing-Kang Chang```shell 42*e7b1675dSTing-Kang Chang$ ./bazel-bin/streaming_aead/streaming_aead --mode decrypt \ 43*e7b1675dSTing-Kang Chang --keyset_path ./streaming_aead/streaming_aead_keyset.json \ 44*e7b1675dSTing-Kang Chang --input_path testdata.txt.ciphertext \ 45*e7b1675dSTing-Kang Chang --output_path testdata.txt.plaintext 46*e7b1675dSTing-Kang Chang 47*e7b1675dSTing-Kang Chang$ diff testdata.txt testdata.txt.decrypted 48*e7b1675dSTing-Kang Chang``` 49