X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=include%2Fafb%2Fafb-auth.h;h=81364240c637ff8396b21000519598d548b0dded;hb=65353dce81a629e042800bb7b86fcd869a76727e;hp=fe29adec984444aec834d480acaa8f6398a22296;hpb=863d6041e2ff2daa97fb1befb79dc3a69093e112;p=src%2Fapp-framework-binder.git diff --git a/include/afb/afb-auth.h b/include/afb/afb-auth.h index fe29adec..81364240 100644 --- a/include/afb/afb-auth.h +++ b/include/afb/afb-auth.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016, 2017 "IoT.bzh" + * Copyright (C) 2015-2020 "IoT.bzh" * Author: José Bollo * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,24 +17,63 @@ #pragma once -/* - * Enum for Session/Token/Assurance middleware. +/** @defgroup AFB_AUTH + * @{ */ + + +/** + * Enumeration for authority (Session/Token/Assurance) definitions. + * + * @see afb_auth */ enum afb_auth_type { + /** never authorized, no data */ afb_auth_No = 0, + + /** authorized if token valid, no data */ + afb_auth_Token, + + /** authorized if LOA greater than or equal to data 'loa' */ + afb_auth_LOA, + + /** authorized if permission 'text' is granted */ afb_auth_Permission, + + /** authorized if 'first' or 'next' is authorized */ afb_auth_Or, + + /** authorized if 'first' and 'next' are authorized */ afb_auth_And, + + /** authorized if 'first' is not authorized */ + afb_auth_Not, + + /** always authorized, no data */ afb_auth_Yes }; -struct afb_auth_desc +/** + * Definition of an authorization entry + */ +struct afb_auth { + /** type of entry @see afb_auth_type */ enum afb_auth_type type; + union { + /** text when @ref type == @ref afb_auth_Permission */ const char *text; - struct afb_auth_desc *child[2]; + + /** level of assurancy when @ref type == @ref afb_auth_LOA */ + unsigned loa; + + /** first child when @ref type in { @ref afb_auth_Or, @ref afb_auth_And, @ref afb_auth_Not } */ + const struct afb_auth *first; }; + + /** second child when @ref type in { @ref afb_auth_Or, @ref afb_auth_And } */ + const struct afb_auth *next; }; +/** @} */ \ No newline at end of file