def aes_parse_decoded_if_some

qasim-bend-kit@0.1.0.2 · proof/AES_EnvelopeProof.bend:795

import qasim-bend-kit@0.1.0.2/proof/AES_EnvelopeProof.bend as AESEnvelopeProof
import Base
import qasim-bend-kit@0.1.0.2/libs/AES256GCM.bend as AES

795def aes_parse_decoded_if_some(+nonce: List<&2, U32>,
796    +tag: List<&2, U32>, +ciphertext: List<&2, U32>,
797    ns: Maybe<&0, {List.length(&2, U32,
798        aes_hex_mask_bytes(nonce)) == 12n : Nat}>,
799    ts: Maybe<&0, {List.length(&2, U32,
800        aes_hex_mask_bytes(tag)) == 16n : Nat}>,
801    nv: Maybe<&0, {AES.bytes_valid(aes_hex_mask_bytes(nonce)) ==
802        True{} : Bool}>,
803    tv: Maybe<&0, {AES.bytes_valid(aes_hex_mask_bytes(tag)) ==
804        True{} : Bool}>,
805    cv: Maybe<&0, {AES.bytes_valid(aes_hex_mask_bytes(ciphertext)) ==
806        True{} : Bool}>,
807    ns_present: {Maybe.is_some(&0,
808        {List.length(&2, U32, aes_hex_mask_bytes(nonce)) == 12n : Nat},
809        ns) == True{} : Bool},
810    ts_present: {Maybe.is_some(&0,
811        {List.length(&2, U32, aes_hex_mask_bytes(tag)) == 16n : Nat},
812        ts) == True{} : Bool},
813    nv_present: {Maybe.is_some(&0,
814        {AES.bytes_valid(aes_hex_mask_bytes(nonce)) == True{} : Bool},
815        nv) == True{} : Bool},
816    tv_present: {Maybe.is_some(&0,
817        {AES.bytes_valid(aes_hex_mask_bytes(tag)) == True{} : Bool},
818        tv) == True{} : Bool},
819    cv_present: {Maybe.is_some(&0,
820        {AES.bytes_valid(aes_hex_mask_bytes(ciphertext)) == True{} : Bool},
821        cv) == True{} : Bool}) ->
822    {Result.map(&2, &2, AES.Error, AES.Envelope, String, AES.encode,
823        AES.parse_decoded(aes_hex_mask_bytes(nonce),
824            aes_hex_mask_bytes(tag), aes_hex_mask_bytes(ciphertext),
825            ns, ts, nv, tv, cv)) ==
826     Done{"v1." ++ AES.hex_bytes(nonce) ++ "." ++ AES.hex_bytes(tag) ++
827         "." ++ AES.hex_bytes(ciphertext)} :
828        Result<&2, &2, AES.Error, String>}:
829    match ns:
830        case None{}:
831            Empty.absurd(aes_parse_decoded_map_goal(nonce, tag,
832                ciphertext, None{}, ts, nv, tv, cv),
833                aes_false_true(ns_present))
834        case Some{ns_proof}:
835            match ts:
836                case None{}:
837                    Empty.absurd(aes_parse_decoded_map_goal(nonce, tag,
838                        ciphertext, Some{ns_proof}, None{}, nv, tv, cv),
839                        aes_false_true(ts_present))
840                case Some{ts_proof}:
841                    match nv:
842                        case None{}:
843                            Empty.absurd(aes_parse_decoded_map_goal(nonce,
844                                tag, ciphertext, Some{ns_proof},
845                                Some{ts_proof}, None{}, tv, cv),
846                                aes_false_true(nv_present))
847                        case Some{nv_proof}:
848                            match tv:
849                                case None{}:
850                                    Empty.absurd(aes_parse_decoded_map_goal(
851                                        nonce, tag, ciphertext,
852                                        Some{ns_proof}, Some{ts_proof},
853                                        Some{nv_proof}, None{}, cv),
854                                        aes_false_true(tv_present))
855                                case Some{tv_proof}:
856                                    match cv:
857                                        case None{}:
858                                            Empty.absurd(
859                                                aes_parse_decoded_map_goal(
860                                                    nonce, tag, ciphertext,
861                                                    Some{ns_proof},
862                                                    Some{ts_proof},
863                                                    Some{nv_proof},
864                                                    Some{tv_proof}, None{}),
865                                                aes_false_true(cv_present))
866                                        case Some{cv_proof}:
867                                            aes_parse_decoded_masked_map(
868                                                nonce, tag, ciphertext,
869                                                ns_proof, ts_proof,
870                                                nv_proof, tv_proof,
871                                                cv_proof)

Uses (22)

Used by (1)