Abstract. Many prior trust management frameworks provide authorization logics for specifying policies based on distributed trust. However, to implement a security protocol using these frameworks, one usually resorts to a general-purpose programming language. To reason about the security of the entire system, one must study not only policies in the authorization logic, but also hard-to-analyze implementation code. This paper proposes DKAL ⋆ , a language for constructing executable specifications of authorization protocols. Protocol and policy designers can use DKAL ⋆ ’s authorization logic for expressing distributed trust relationships, and its small rule-based programming language to describe the message sequence of a protocol. Importantly, many low-level details of the protocol (e.g., marshaling formats or management of state consistency) are left abstract in DKAL ⋆ , but sufficient details must be provided in order for the protocol to be executable. We formalize the semantics of DKAL ⋆ , giving it an operational semantics and a type system. We prove various properties of DKAL ⋆ , including type soundness and a decidability property for its underlying logic. We also present an interpreter for DKAL ⋆ , mechanically verified for correctness and security. We evaluate our work experimentally on several examples.