AESKnownAnswerProof.encrypt_matches: def of qasim-bend-kit@0.1.0.2 Import: import qasim-bend-kit@0.1.0.2/proof/AES_KnownAnswerProof.bend as AESKnownAnswerProof Lines 97-136 of qasim-bend-kit@0.1.0.2/proof/AES_KnownAnswerProof.bend: https://jend.leeeet.dev/read.txt?path=qasim-bend-kit@0.1.0.2/proof/AES_KnownAnswerProof.bend&start_line=97&end_line=136 import Base import qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend as AES import qasim-bend-kit@0.1.0.2/proof/AES_CoreTagProof.bend as Fields def encrypt_matches(+key: AES.SecretKey, +nonce: AES.Nonce, +aad: List<&2, U32>, +plaintext: List<&2, U32>, +ciphertext: List<&2, U32>, +tag_bytes: List<&2, U32>, aad_valid: {AES.aad_valid(aad) == True{} : Bool}, plaintext_valid: {AES.plaintext_valid(plaintext) == True{} : Bool}, ciphertext_matches: {Fields.output_ciphertext(AES.encrypt_valid_output( key, nonce, aad, plaintext)) == ciphertext : List<&2, U32>}, tag_matches: {Fields.output_tag(AES.encrypt_valid_output(key, nonce, aad, plaintext)) == tag_bytes : List<&2, U32>}, +tag_size: {List.length(&2, U32, tag_bytes) == 16n : Nat}, +tag_valid: {AES.bytes_valid(tag_bytes) == True{} : Bool}, +ciphertext_valid: {AES.bytes_valid(ciphertext) == True{} : Bool}) -> {AES.encrypt(key, nonce, aad, plaintext) == Done{AES.Envelope{nonce, ciphertext, AES.Tag{tag_bytes, tag_size, tag_valid}, ciphertext_valid}} : Result<&2, &2, AES.Error, AES.Envelope>}: aad_checked = Equal.cong(Bool, Result<&2, &2, AES.Error, AES.Envelope>, flag => AES.encrypt_checked(key, nonce, aad, plaintext, flag, AES.plaintext_valid(plaintext)), AES.aad_valid(aad), True{}, aad_valid) plaintext_checked = Equal.cong(Bool, Result<&2, &2, AES.Error, AES.Envelope>, flag => AES.encrypt_checked(key, nonce, aad, plaintext, True{}, flag), AES.plaintext_valid(plaintext), True{}, plaintext_valid) output_eq = output_matches(nonce, AES.encrypt_valid_output(key, nonce, aad, plaintext), ciphertext, tag_bytes, ciphertext_matches, tag_matches, tag_size, tag_valid, ciphertext_valid) Equal.trans(Result<&2, &2, AES.Error, AES.Envelope>, AES.encrypt(key, nonce, aad, plaintext), AES.encrypt_valid(key, nonce, aad, plaintext), Done{AES.Envelope{nonce, ciphertext, AES.Tag{tag_bytes, tag_size, tag_valid}, ciphertext_valid}}, Equal.trans(Result<&2, &2, AES.Error, AES.Envelope>, AES.encrypt(key, nonce, aad, plaintext), AES.encrypt_checked(key, nonce, aad, plaintext, True{}, AES.plaintext_valid(plaintext)), AES.encrypt_valid(key, nonce, aad, plaintext), aad_checked, plaintext_checked), output_eq) Uses (23): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.cong https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Equal.trans https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List.length https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Result https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=Envelope https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=Error https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=Nonce https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=SecretKey https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=Tag https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=aad_valid https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=bytes_valid https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=encrypt https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=encrypt_checked https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=encrypt_valid https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=encrypt_valid_output https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend&name=plaintext_valid https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/proof/AES_CoreTagProof.bend&name=output_ciphertext https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/proof/AES_CoreTagProof.bend&name=output_tag https://jend.leeeet.dev/definition.txt?path=qasim-bend-kit@0.1.0.2/proof/AES_KnownAnswerProof.bend&name=output_matches