add annotation for innerapi

Signed-off-by: liuziwei <liuziwei12@huawei.com>
Change-Id: I9a350f6bcc2edcb0813d61f0728c5b6645811f02
This commit is contained in:
liuziwei 2023-03-04 04:20:52 +00:00
parent 2f1cebe3ab
commit aa499f1418
17 changed files with 1002 additions and 36 deletions

View File

@ -33,8 +33,9 @@ ohos_shared_library("userauth") {
] ]
deps = [ deps = [
"//base/useriam/user_auth_framework/common:iam_utils", "../../../../common:iam_utils",
"//base/useriam/user_auth_framework/frameworks/native/common:dfx", "../../../native/client:userauth_client",
"../../../native/common:dfx",
] ]
external_deps = [ external_deps = [
@ -42,7 +43,6 @@ ohos_shared_library("userauth") {
"hiviewdfx_hilog_native:libhilog", "hiviewdfx_hilog_native:libhilog",
"ipc:ipc_single", "ipc:ipc_single",
"napi:ace_napi", "napi:ace_napi",
"user_auth_framework:userauth_client",
] ]
public_configs = [ ":userauth_public_config" ] public_configs = [ ":userauth_public_config" ]

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file attributes.h
*
* @brief Attributes enum define.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_ATTRIBUTES_H #ifndef IAM_ATTRIBUTES_H
#define IAM_ATTRIBUTES_H #define IAM_ATTRIBUTES_H
@ -25,79 +33,353 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class Attributes final { class Attributes final {
public: public:
/**
* @brief The key to set attribute.
*/
enum AttributeKey : uint32_t { enum AttributeKey : uint32_t {
/** Root tag. */
ATTR_ROOT = 100000, ATTR_ROOT = 100000,
ATTR_RESULT_CODE = 100001, // int32_t /** Result code, the value type is int32_t. */
ATTR_SIGNATURE = 100004, // std::vector<uint8_t> ATTR_RESULT_CODE = 100001,
ATTR_IDENTIFY_MODE = 100005, // uint32_t /** Signature, the value type is std::vector<uint8_t>. */
ATTR_TEMPLATE_ID = 100006, // uint64_t ATTR_SIGNATURE = 100004,
ATTR_TEMPLATE_ID_LIST = 100007, // std::vector<uint64_t> /** Identify mode, the value type is uint32_t. */
ATTR_ERROR_COUNT = 100008, // int32_t ATTR_IDENTIFY_MODE = 100005,
ATTR_REMAIN_TIMES = 100009, // int32_t /** Template ID, the value type is uint64_t. */
ATTR_FREEZING_TIME = 100010, // int32_t ATTR_TEMPLATE_ID = 100006,
ATTR_SESSION_ID = 100014, // uint64_t /** Template ID list, the value type is std::vector<uint64_t>. */
ATTR_SCHEDULE_VERSION = 100016, // uint32_t ATTR_TEMPLATE_ID_LIST = 100007,
ATTR_SCHEDULE_ID = 100020, // uint64_t /** Attribute error count, the value type is int32_t. */
ATTR_PIN_SUB_TYPE = 100021, // int32_t ATTR_ERROR_COUNT = 100008,
ATTR_SCHEDULE_MODE = 100022, // int32_t /** Remain time, the value type is int32_t. */
ATTR_PROPERTY_MODE = 100023, // uint32_t ATTR_REMAIN_TIMES = 100009,
ATTR_AUTH_TYPE = 100024, // int32_t /** Freezing time, the value type is int32_t. */
ATTR_CREDENTIAL_ID = 100025, // uint64_t ATTR_FREEZING_TIME = 100010,
ATTR_CALLER_UID = 100027, // uint64_t /** Session ID, the value type is uint64_t. */
ATTR_RESULT = 100028, // std::vector<uint8_t> ATTR_SESSION_ID = 100014,
ATTR_CAPABILITY_LEVEL = 100029, // uint64_t /** Schedule version, the value type is uint32_t. */
ATTR_ALGORITHM_INFO = 100030, // uint64_t ATTR_SCHEDULE_VERSION = 100016,
ATTR_TIME_STAMP = 100031, // uint64_t /** Schedule ID, the value type is uint64_t. */
ATTR_ROOT_SECRET = 100032, // std::vector<uint8_t> ATTR_SCHEDULE_ID = 100020,
ATTR_AUTH_TOKEN = 100033, // std::vector<uint8_t> /** Pin subtype, the value type is int32_t. */
ATTR_PIN_SUB_TYPE = 100021,
/** Schedule mode, the value type is int32_t. */
ATTR_SCHEDULE_MODE = 100022,
/** Property mode, the value type is uint32_t. */
ATTR_PROPERTY_MODE = 100023,
/** Authenticate type, the value type is int32_t. */
ATTR_AUTH_TYPE = 100024,
/** Credential ID, the value type is uint64_t. */
ATTR_CREDENTIAL_ID = 100025,
/** Caller UID, the value type is uint64_t. */
ATTR_CALLER_UID = 100027,
/** Tag of result, the value type is std::vector<uint8_t>. */
ATTR_RESULT = 100028,
/** Capability level, the value type is uint64_t. */
ATTR_CAPABILITY_LEVEL = 100029,
/** Algorithm infomation, the value type is uint64_t. */
ATTR_ALGORITHM_INFO = 100030,
/** Timer stamp, the value type is uint64_t. */
ATTR_TIME_STAMP = 100031,
/** Root secret, the value type is std::vector<uint8_t>. */
ATTR_ROOT_SECRET = 100032,
/** Auth token, the value type is std::vector<uint8_t>. */
ATTR_AUTH_TOKEN = 100033,
// private attrs /**
ATTR_USER_ID = 300000, // int32_t * Private attrs.
ATTR_EXTRA_INFO, // std::vector<uint8_t> * User ID, the value type is int32_t.
ATTR_EXECUTOR_INDEX, // uint64_t */
ATTR_EXECUTOR_SENSOR_HINT, // uint32_t ATTR_USER_ID = 300000,
ATTR_EXECUTOR_MATCHER, // uint32_t /** Extra infomation, the value type is std::vector<uint8_t>. */
ATTR_ACCESS_TOKEN_ID, // uint32_t ATTR_EXTRA_INFO,
/** Executor ID, the value type is uint64_t. */
ATTR_EXECUTOR_INDEX,
/** ExecutorSensorHint, the value type is uint32_t. */
ATTR_EXECUTOR_SENSOR_HINT,
/** ExecutorMatcher, the value type is uint32_t. */
ATTR_EXECUTOR_MATCHER,
/** Access token ID, the value type is uint32_t. */
ATTR_ACCESS_TOKEN_ID,
}; };
/**
* @brief Default constructor.
*/
Attributes(); Attributes();
/**
* @brief Overload constructor.
*
* This constructor prohibits implicit type conversion of input parameters.
*
* @param raw The value to be passed in when defining Attribute.
*/
explicit Attributes(const std::vector<uint8_t> &raw); explicit Attributes(const std::vector<uint8_t> &raw);
/**
* @brief Overload constructor.
*
* This constructor is used to define constant Attribute type.
*
* @param other The value to be passed in when defining Attribute.
*/
Attributes(const Attributes &other) = delete; Attributes(const Attributes &other) = delete;
/**
* @brief Overload operator.
*
* @param other The value to be compared.
*/
Attributes &operator=(const Attributes &other) = delete; Attributes &operator=(const Attributes &other) = delete;
/**
* @brief Overload constructor.
*
* @param other The value to be passed in when defining Attribute.
*/
Attributes(Attributes &&other) noexcept; Attributes(Attributes &&other) noexcept;
/**
* @brief Overload operator.
*
* @param other The value to be compared.
*/
Attributes &operator=(Attributes &&other) noexcept; Attributes &operator=(Attributes &&other) noexcept;
/**
* @brief Deconstructor.
*/
virtual ~Attributes(); virtual ~Attributes();
/**
* @brief Set bool value.
*
* @param key The attribute key.
* @param value The bool value.
* @return Return success or not(true:success; false:failed).
*/
bool SetBoolValue(AttributeKey key, bool value); bool SetBoolValue(AttributeKey key, bool value);
/**
* @brief Set uint64 value.
*
* @param key The attribute key.
* @param value The uint64_t value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint64Value(AttributeKey key, uint64_t value); bool SetUint64Value(AttributeKey key, uint64_t value);
/**
* @brief Set uint32_t value.
*
* @param key The attribute key.
* @param value The uint32_t value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint32Value(AttributeKey key, uint32_t value); bool SetUint32Value(AttributeKey key, uint32_t value);
/**
* @brief Set uint16_t value.
*
* @param key The attribute key.
* @param value The uint16_t value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint16Value(AttributeKey key, uint16_t value); bool SetUint16Value(AttributeKey key, uint16_t value);
/**
* @brief Set uint8_t value.
*
* @param key The attribute key.
* @param value The uint8_t value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint8Value(AttributeKey key, uint8_t value); bool SetUint8Value(AttributeKey key, uint8_t value);
/**
* @brief Set int32_t value.
*
* @param key The attribute key.
* @param value The int32_t value.
* @return Return success or not(true:success; false:failed).
*/
bool SetInt32Value(AttributeKey key, int32_t value); bool SetInt32Value(AttributeKey key, int32_t value);
/**
* @brief Set string value.
*
* @param key The attribute key.
* @param value The string.
* @return Return success or not(true:success; false:failed).
*/
bool SetStringValue(AttributeKey key, const std::string &value); bool SetStringValue(AttributeKey key, const std::string &value);
/**
* @brief Set Attributes value.
*
* @param key The attribute key.
* @param value The attributes type value.
* @return Return success or not(true:success; false:failed).
*/
bool SetAttributesValue(AttributeKey key, const Attributes &value); bool SetAttributesValue(AttributeKey key, const Attributes &value);
/**
* @brief Set vector<uint64_t> value.
*
* @param key The attribute key.
* @param value The vector<uint64_t> value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint64ArrayValue(AttributeKey key, const std::vector<uint64_t> &value); bool SetUint64ArrayValue(AttributeKey key, const std::vector<uint64_t> &value);
/**
* @brief Set vector<uint32_t> value.
*
* @param key The attribute key.
* @param value The vector<uint32_t> value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint32ArrayValue(AttributeKey key, const std::vector<uint32_t> &value); bool SetUint32ArrayValue(AttributeKey key, const std::vector<uint32_t> &value);
/**
* @brief Set vector<uint16_t> value.
*
* @param key The attribute key.
* @param value The vector<uint16_t> value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint16ArrayValue(AttributeKey key, const std::vector<uint16_t> &value); bool SetUint16ArrayValue(AttributeKey key, const std::vector<uint16_t> &value);
/**
* @brief Set vector<uint8_t> value.
*
* @param key The attribute key.
* @param value The vector<uint8_t> value.
* @return Return success or not(true:success; false:failed).
*/
bool SetUint8ArrayValue(AttributeKey key, const std::vector<uint8_t> &value); bool SetUint8ArrayValue(AttributeKey key, const std::vector<uint8_t> &value);
/**
* @brief Get bool value.
*
* @param key The attribute key.
* @param value Return bool value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetBoolValue(AttributeKey key, bool &value) const; bool GetBoolValue(AttributeKey key, bool &value) const;
/**
* @brief Get uint64_t value.
*
* @param key The attribute key.
* @param value Return uint64_t value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint64Value(AttributeKey key, uint64_t &value) const; bool GetUint64Value(AttributeKey key, uint64_t &value) const;
/**
* @brief Get uint32_t value.
*
* @param key The attribute key.
* @param value Return uint32_t value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint32Value(AttributeKey key, uint32_t &value) const; bool GetUint32Value(AttributeKey key, uint32_t &value) const;
/**
* @brief Get uint16_t value.
*
* @param key The attribute key.
* @param value Return uint16_t value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint16Value(AttributeKey key, uint16_t &value) const; bool GetUint16Value(AttributeKey key, uint16_t &value) const;
/**
* @brief Get uint8_t value.
*
* @param key The attribute key.
* @param value Return uint8_t value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint8Value(AttributeKey key, uint8_t &value) const; bool GetUint8Value(AttributeKey key, uint8_t &value) const;
/**
* @brief Get int32_t value.
*
* @param key The attribute key.
* @param value Return int32_t value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetInt32Value(AttributeKey key, int32_t &value) const; bool GetInt32Value(AttributeKey key, int32_t &value) const;
/**
* @brief Get string value.
*
* @param key The attribute key.
* @param value Return string corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetStringValue(AttributeKey key, std::string &value) const; bool GetStringValue(AttributeKey key, std::string &value) const;
/**
* @brief Get vector<uint64_t> value.
*
* @param key The attribute key.
* @param value Return vector<uint64_t> value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint64ArrayValue(AttributeKey key, std::vector<uint64_t> &value) const; bool GetUint64ArrayValue(AttributeKey key, std::vector<uint64_t> &value) const;
/**
* @brief Get vector<uint32_t> value.
*
* @param key The attribute key.
* @param value Return vector<uint32_t> value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint32ArrayValue(AttributeKey key, std::vector<uint32_t> &value) const; bool GetUint32ArrayValue(AttributeKey key, std::vector<uint32_t> &value) const;
/**
* @brief Get vector<uint16_t> value.
*
* @param key The attribute key.
* @param value Return vector<uint16_t> value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint16ArrayValue(AttributeKey key, std::vector<uint16_t> &value) const; bool GetUint16ArrayValue(AttributeKey key, std::vector<uint16_t> &value) const;
/**
* @brief Get vector<uint8_t> value.
*
* @param key The attribute key.
* @param value Return vector<uint8_t> value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetUint8ArrayValue(AttributeKey key, std::vector<uint8_t> &value) const; bool GetUint8ArrayValue(AttributeKey key, std::vector<uint8_t> &value) const;
/**
* @brief Get Attributes value.
*
* @param key The attribute key.
* @param value Return Attributes value corresponding to key.
* @return Return success or not(true:success; false:failed).
*/
bool GetAttributesValue(AttributeKey key, Attributes &value) const; bool GetAttributesValue(AttributeKey key, Attributes &value) const;
/**
* @brief Serialize the Attribute object.
*
* @return Return serialized Attribute object.
*/
std::vector<uint8_t> Serialize() const; std::vector<uint8_t> Serialize() const;
/**
* @brief Get all keys of Attribute.
*
* @return Return all keys of Attribute.
*/
std::vector<AttributeKey> GetKeys() const; std::vector<AttributeKey> GetKeys() const;
private: private:

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file co_auth_client.h
*
* @brief The definition of coAuth client.
* @since 3.1
* @version 3.2
*/
#ifndef CO_AUTH_CLIENT_H #ifndef CO_AUTH_CLIENT_H
#define CO_AUTH_CLIENT_H #define CO_AUTH_CLIENT_H
@ -24,10 +32,31 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class CoAuthClient { class CoAuthClient {
public: public:
/**
* @brief Get coAuth client's instance.
*
* @return CoAuthClient's instance.
*/
static CoAuthClient &GetInstance(); static CoAuthClient &GetInstance();
/**
* @brief Deconstructor.
*/
virtual ~CoAuthClient() = default; virtual ~CoAuthClient() = default;
/**
* @brief Executor secure register into coAuth resource pool.
*
* @param info Information about executor which need to register into coAuth.
* @param callback Callback of executor register.
*/
virtual void Register(const ExecutorInfo &info, const std::shared_ptr<ExecutorRegisterCallback> &callback) = 0; virtual void Register(const ExecutorInfo &info, const std::shared_ptr<ExecutorRegisterCallback> &callback) = 0;
/**
* @brief Executor secure unregister from coAuth resource pool.
*
* @param info Information about executor which need to unregister from coAuth.
*/
virtual void Unregister(const ExecutorInfo &info) = 0; virtual void Unregister(const ExecutorInfo &info) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file co_auth_client_callback.h
*
* @brief Callback definitions returned by coAuth client.
* @since 3.1
* @version 3.2
*/
#ifndef CO_AUTH_CLIENT_CALLBACK_H #ifndef CO_AUTH_CLIENT_CALLBACK_H
#define CO_AUTH_CLIENT_CALLBACK_H #define CO_AUTH_CLIENT_CALLBACK_H
@ -24,14 +32,51 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class ExecutorRegisterCallback { class ExecutorRegisterCallback {
public: public:
/**
* @brief Called by the coAuth resource pool to tell the executor messenger ready.
*
* @param messenger Messenger used for execute process.
* @param publicKey Public key of the framework.
* @param templateIds Matched templateIds based on authType and executor info.
*/
virtual void OnMessengerReady(const std::shared_ptr<ExecutorMessenger> &messenger, virtual void OnMessengerReady(const std::shared_ptr<ExecutorMessenger> &messenger,
const std::vector<uint8_t> &publicKey, const std::vector<uint64_t> &templateIds) = 0; const std::vector<uint8_t> &publicKey, const std::vector<uint64_t> &templateIds) = 0;
/**
* @brief Called by coAuth resource pool to tell the executor to begin.
*
* @param scheduleId Specify the current schedule.
* @param publicKey Public key of the framework.
* @param commandAttrs Properties of this operation.
* @return Return begin execute success or not(0:success; other:failed).
*/
virtual int32_t OnBeginExecute(uint64_t scheduleId, const std::vector<uint8_t> &publicKey, virtual int32_t OnBeginExecute(uint64_t scheduleId, const std::vector<uint8_t> &publicKey,
const Attributes &commandAttrs) = 0; const Attributes &commandAttrs) = 0;
/**
* @brief Notify the executor to end the operation.
*
* @param scheduleId Specify the current schedule.
* @param commandAttrs Properties of this operation.
* @return Return end execute success or not(0:success; other:failed).
*/
virtual int32_t OnEndExecute(uint64_t scheduleId, const Attributes &commandAttrs) = 0; virtual int32_t OnEndExecute(uint64_t scheduleId, const Attributes &commandAttrs) = 0;
/**
* @brief Called by coAuth resource pool to set executor's property.
*
* @param properties The properties need to set.
* @return Return set property success or not(0:success; other:failed).
*/
virtual int32_t OnSetProperty(const Attributes &properties) = 0; virtual int32_t OnSetProperty(const Attributes &properties) = 0;
/**
* @brief Called by coAuth resource pool to get executor's property.
*
* @param conditions The condition to get property.
* @param results The result of get property.
* @return Return get property success or not(0:success; other:failed).
*/
virtual int32_t OnGetProperty(const Attributes &conditions, Attributes &results) = 0; virtual int32_t OnGetProperty(const Attributes &conditions, Attributes &results) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file co_auth_client_defines.h
*
* @brief Type definitions used by coAuth client.
* @since 3.1
* @version 3.2
*/
#ifndef CO_AUTH_CLIENT_DEFINES_H #ifndef CO_AUTH_CLIENT_DEFINES_H
#define CO_AUTH_CLIENT_DEFINES_H #define CO_AUTH_CLIENT_DEFINES_H
@ -24,24 +32,59 @@
namespace OHOS { namespace OHOS {
namespace UserIam { namespace UserIam {
namespace UserAuth { namespace UserAuth {
/**
* @brief Infomation used to describe an Executor.
*/
struct ExecutorInfo { struct ExecutorInfo {
/** Authentication type supported by executor. */
AuthType authType {0}; AuthType authType {0};
/** Executor role. */
ExecutorRole executorRole {0}; ExecutorRole executorRole {0};
/** Unique index of executor within each authType. */
uint32_t executorSensorHint {0}; uint32_t executorSensorHint {0};
/** Sensor or algorithm type supported by executor. */
uint32_t executorMatcher {0}; uint32_t executorMatcher {0};
/** Executor secure level. */
ExecutorSecureLevel esl {0}; ExecutorSecureLevel esl {0};
/** Used to verify the result issued by the authenticator. */
std::vector<uint8_t> publicKey {}; std::vector<uint8_t> publicKey {};
}; };
class AuthMessage { class AuthMessage {
public: public:
/**
* @brief Function of type conversion.
*
* @param msg Incoming vector<uint8_t> type.
* @return Return shared_ptr<AuthMessage>.
*/
static std::shared_ptr<AuthMessage> As(const std::vector<uint8_t> &msg); static std::shared_ptr<AuthMessage> As(const std::vector<uint8_t> &msg);
}; };
class ExecutorMessenger { class ExecutorMessenger {
public: public:
/**
* @brief Called by the executor, send authentication data to resource pool.
*
* @param scheduleId Specify the current schedule.
* @param transNum Properties of this operation.
* @param srcRole Source executor role.
* @param dstRole Destination executor role.
* @param msg Authentication message.
* @return Return send data success or not(0:success; other:failed).
*/
virtual int32_t SendData(uint64_t scheduleId, uint64_t transNum, ExecutorRole srcRole, ExecutorRole dstRole, virtual int32_t SendData(uint64_t scheduleId, uint64_t transNum, ExecutorRole srcRole, ExecutorRole dstRole,
const std::shared_ptr<AuthMessage> &msg) = 0; const std::shared_ptr<AuthMessage> &msg) = 0;
/**
* @brief Called by the executor, send finish data to resource pool.
*
* @param scheduleId Specify the current schedule.
* @param srcRole Source executor role.
* @param resultcode Authentication result code.
* @param finalResult Authentication final result.
* @return Return finish success or not(0:success; other:failed).
*/
virtual int32_t Finish(uint64_t scheduleId, ExecutorRole srcRole, int32_t resultCode, virtual int32_t Finish(uint64_t scheduleId, ExecutorRole srcRole, int32_t resultCode,
const Attributes &finalResult) = 0; const Attributes &finalResult) = 0;
}; };

View File

@ -13,85 +13,167 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file iam_common_defines.h
*
* @brief Some common defines in IAM.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_COMMON_DEFINES_H #ifndef IAM_COMMON_DEFINES_H
#define IAM_COMMON_DEFINES_H #define IAM_COMMON_DEFINES_H
namespace OHOS { namespace OHOS {
namespace UserIam { namespace UserIam {
namespace UserAuth { namespace UserAuth {
/** Max length of challenge. */
constexpr size_t MAX_CHALLENG_LEN = 32; constexpr size_t MAX_CHALLENG_LEN = 32;
/**
* @brief Defines authentication type.
*/
enum AuthType : int32_t { enum AuthType : int32_t {
/** All authentication types. */
ALL = 0, ALL = 0,
/** Pin authentication. */
PIN = 1, PIN = 1,
/** Face authentication. */
FACE = 2, FACE = 2,
/** Fingerprint authentication. */
FINGERPRINT = 4, FINGERPRINT = 4,
}; };
/**
* @brief Defines pin auth's subtype.
*/
enum PinSubType : int32_t { enum PinSubType : int32_t {
/** Digit password with fixed length of six. */
PIN_SIX = 10000, PIN_SIX = 10000,
/** Digit password with unfixed length. */
PIN_NUMBER = 10001, PIN_NUMBER = 10001,
/** Complex password with number and alphabet. */
PIN_MIXED = 10002, PIN_MIXED = 10002,
/** Max pin. */
PIN_MAX, PIN_MAX,
}; };
/**
* @brief Enumerates executor roles.
*/
enum ExecutorRole : int32_t { enum ExecutorRole : int32_t {
/** Scheduler executor. */
SCHEDULER = 0, SCHEDULER = 0,
/** The executor acts as a collector. */
COLLECTOR = 1, COLLECTOR = 1,
/** The executor acts as a verifier. */
VERIFIER = 2, VERIFIER = 2,
/** The executor acts as a collector and verifier. */
ALL_IN_ONE = 3, ALL_IN_ONE = 3,
}; };
/**
* @brief Enumerates executor security levels.
*/
enum ExecutorSecureLevel : int32_t { enum ExecutorSecureLevel : int32_t {
/** Executor secure level 0. */
ESL0 = 0, ESL0 = 0,
/** Executor secure level 1. */
ESL1 = 1, ESL1 = 1,
/** Executor secure level 2. */
ESL2 = 2, ESL2 = 2,
/** Executor secure level 3. */
ESL3 = 3, ESL3 = 3,
}; };
/**
* @brief Authentication trust level
*/
enum AuthTrustLevel : uint32_t { enum AuthTrustLevel : uint32_t {
/** Auth trust level 1. */
ATL1 = 10000, ATL1 = 10000,
/** Auth trust level 2. */
ATL2 = 20000, ATL2 = 20000,
/** Auth trust level 3. */
ATL3 = 30000, ATL3 = 30000,
/** Auth trust level 4. */
ATL4 = 40000, ATL4 = 40000,
}; };
/**
* @brief Schedule mode.
*/
enum ScheduleMode : int32_t { enum ScheduleMode : int32_t {
/** The schedule mode is enrollment. */
ENROLL = 0, ENROLL = 0,
/** The schedule mode is authentication. */
AUTH = 1, AUTH = 1,
/** The schedule mode is identification. */
IDENTIFY = 2, IDENTIFY = 2,
}; };
/**
* @brief Property mode.
*/
enum PropertyMode : uint32_t { enum PropertyMode : uint32_t {
/** The property mode is init algorithm. */
PROPERTY_INIT_ALGORITHM = 1, PROPERTY_INIT_ALGORITHM = 1,
/** The property mode is delete. */
PROPERTY_MODE_DEL = 2, PROPERTY_MODE_DEL = 2,
/** The property mode is get. */
PROPERTY_MODE_GET = 3, PROPERTY_MODE_GET = 3,
/** The property mode is set. */
PROPERTY_MODE_SET = 4, PROPERTY_MODE_SET = 4,
/** The property mode is freeze. */
PROPERTY_MODE_FREEZE = 5, PROPERTY_MODE_FREEZE = 5,
/** The property mode is unfreeze. */
PROPERTY_MODE_UNFREEZE = 6, PROPERTY_MODE_UNFREEZE = 6,
}; };
/**
* @brief The result code.
*/
enum ResultCode : int32_t { enum ResultCode : int32_t {
/** The result is success. */
SUCCESS = 0, SUCCESS = 0,
/** Compile fail. */
FAIL = 1, FAIL = 1,
/** The result is fail, because an unknown error occurred. */
GENERAL_ERROR = 2, GENERAL_ERROR = 2,
/** The result is fail, because the request was canceled. */
CANCELED = 3, CANCELED = 3,
/** The result is fail ,because of time out. */
TIMEOUT = 4, TIMEOUT = 4,
/** The result is fail ,because type is not support. */
TYPE_NOT_SUPPORT = 5, TYPE_NOT_SUPPORT = 5,
/** The result is fail ,because trust level is not support. */
TRUST_LEVEL_NOT_SUPPORT = 6, TRUST_LEVEL_NOT_SUPPORT = 6,
/** The result is fail, because the service was busy. */
BUSY = 7, BUSY = 7,
/** The result is fail, because parameters is invalid. */
INVALID_PARAMETERS = 8, INVALID_PARAMETERS = 8,
/** The result if fail, because the status is locked. */
LOCKED = 9, LOCKED = 9,
/** The result is fail, because the user was not enrolled. */
NOT_ENROLLED = 10, NOT_ENROLLED = 10,
/** The result is fail, because the hardware is not supported. */
HARDWARE_NOT_SUPPORTED = 11, HARDWARE_NOT_SUPPORTED = 11,
SYSTEM_ERROR_CODE_BEGIN = 1000, // error code for system /** The result is fail, because something wrong from system. */
SYSTEM_ERROR_CODE_BEGIN = 1000,
/** The result is fail, because something wrong from ipc. */
IPC_ERROR = 1001, IPC_ERROR = 1001,
/** The result is fail, because the context ID is invalid. */
INVALID_CONTEXT_ID = 1002, INVALID_CONTEXT_ID = 1002,
/** The result is fail, because something wrong when read parcel. */
READ_PARCEL_ERROR = 1003, READ_PARCEL_ERROR = 1003,
/** The result is fail, because something wrong when write parcel. */
WRITE_PARCEL_ERROR = 1004, WRITE_PARCEL_ERROR = 1004,
/** The result is fail, because permission check is failed. */
CHECK_PERMISSION_FAILED = 1005, CHECK_PERMISSION_FAILED = 1005,
/** The result is fail, because the hdi interface is invalid. */
INVALID_HDI_INTERFACE = 1006, INVALID_HDI_INTERFACE = 1006,
VENDOR_ERROR_CODE_BEGIN = 10000, // error code for vendor /** The result is fail, because something wrong from vendor. */
VENDOR_ERROR_CODE_BEGIN = 10000,
}; };
} // namespace UserAuth } // namespace UserAuth
} // namespace UserIam } // namespace UserIam

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file iam_executor_framework_types.h
*
* @brief Some type defines in executor framwork.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_EXECUTOR_FRAMEWORK_TYPES_H #ifndef IAM_EXECUTOR_FRAMEWORK_TYPES_H
#define IAM_EXECUTOR_FRAMEWORK_TYPES_H #define IAM_EXECUTOR_FRAMEWORK_TYPES_H
@ -22,15 +30,27 @@
namespace OHOS { namespace OHOS {
namespace UserIam { namespace UserIam {
namespace UserAuth { namespace UserAuth {
/**
* @brief Defines authentication result.
*/
enum UserAuthResult : int32_t { enum UserAuthResult : int32_t {
/** Authentication result is success. */
USERAUTH_SUCCESS = 0, USERAUTH_SUCCESS = 0,
/** Authentication result is error. */
USERAUTH_ERROR = 1, USERAUTH_ERROR = 1,
}; };
/**
* @brief Defines Template infomation.
*/
struct TemplateInfo { struct TemplateInfo {
/** Executor type. */
uint32_t executorType; uint32_t executorType;
/** Freezing time. */
int32_t freezingTime; int32_t freezingTime;
/** Remain time. */
int32_t remainTimes; int32_t remainTimes;
/** Extra Info. */
std::vector<uint8_t> extraInfo; std::vector<uint8_t> extraInfo;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file iam_executor_iauth_driver_hdi.h
*
* @brief Hardware device interface for authenticate driver.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_EXECUTOR_IAUTH_DRIVER_HDI_H #ifndef IAM_EXECUTOR_IAUTH_DRIVER_HDI_H
#define IAM_EXECUTOR_IAUTH_DRIVER_HDI_H #define IAM_EXECUTOR_IAUTH_DRIVER_HDI_H
@ -27,9 +35,21 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class IAuthDriverHdi { class IAuthDriverHdi {
public: public:
/**
* @brief Default constructor.
*/
IAuthDriverHdi() = default; IAuthDriverHdi() = default;
/**
* @brief Deconstructor.
*/
virtual ~IAuthDriverHdi() = default; virtual ~IAuthDriverHdi() = default;
/**
* @brief Get the list of executor.
*
* @param executorList The list of executor.
*/
virtual void GetExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList) = 0; virtual void GetExecutorList(std::vector<std::shared_ptr<UserAuth::IAuthExecutorHdi>> &executorList) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file iam_executor_iauth_executor_hdi.h
*
* @brief Hardware device interface for authenticate executor.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_EXECUTOR_IAUTH_EXECUTOR_HDI_H #ifndef IAM_EXECUTOR_IAUTH_EXECUTOR_HDI_H
#define IAM_EXECUTOR_IAUTH_EXECUTOR_HDI_H #define IAM_EXECUTOR_IAUTH_EXECUTOR_HDI_H
@ -29,22 +37,105 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class IAuthExecutorHdi { class IAuthExecutorHdi {
public: public:
/**
* @brief Default constructor.
*/
IAuthExecutorHdi() = default; IAuthExecutorHdi() = default;
/**
* @brief Deconstructor.
*/
virtual ~IAuthExecutorHdi() = default; virtual ~IAuthExecutorHdi() = default;
/**
* @brief Get executor infomation.
*
* @param info The executor infomation.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode GetExecutorInfo(ExecutorInfo &info) = 0; virtual ResultCode GetExecutorInfo(ExecutorInfo &info) = 0;
/**
* @brief Get template infomation.
*
* @param templateId Template id.
* @param info The template infomation.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode GetTemplateInfo(uint64_t templateId, UserAuth::TemplateInfo &info) = 0; virtual ResultCode GetTemplateInfo(uint64_t templateId, UserAuth::TemplateInfo &info) = 0;
/**
* @brief Register is finish.
*
* @param templateIdList Template ID list.
* @param frameworkPublicKey Framework publickey
* @param extraInfo Extra infomation.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode OnRegisterFinish(const std::vector<uint64_t> &templateIdList, virtual ResultCode OnRegisterFinish(const std::vector<uint64_t> &templateIdList,
const std::vector<uint8_t> &frameworkPublicKey, const std::vector<uint8_t> &extraInfo) = 0; const std::vector<uint8_t> &frameworkPublicKey, const std::vector<uint8_t> &extraInfo) = 0;
/**
* @brief Begin enroll.
*
* @param scheduleId Current enroll schedule ID.
* @param tokenId Current enroll token ID.
* @param extraInfo Extra information of enroll.
* @param callbackObj Callback of enroll result.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode Enroll(uint64_t scheduleId, uint32_t tokenId, const std::vector<uint8_t> &extraInfo, virtual ResultCode Enroll(uint64_t scheduleId, uint32_t tokenId, const std::vector<uint8_t> &extraInfo,
const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0; const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0;
/**
* @brief Begin authenticate.
*
* @param scheduleId Current authenticate schedule ID.
* @param tokenId Current authenticate token ID.
* @param templateIdList Template ID list.
* @param extraInfo Extra information of authenticate.
* @param callbackObj Callback of authenticate result.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode Authenticate(uint64_t scheduleId, uint32_t tokenId, const std::vector<uint64_t> &templateIdList, virtual ResultCode Authenticate(uint64_t scheduleId, uint32_t tokenId, const std::vector<uint64_t> &templateIdList,
const std::vector<uint8_t> &extraInfo, const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0; const std::vector<uint8_t> &extraInfo, const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0;
virtual ResultCode Identify(uint64_t scheduleId, uint32_t tokenId, const std::vector<uint8_t> &extraInfo,
/**
* @brief Begin identify.
*
* @param scheduleId Current identify schedule ID.
* @param tokenId Current identify token ID.
* @param extraInfo Extra information of identify.
* @param callbackObj Callback of identify result.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode Identify(uint64_t scheduleId, uint32_t tokenId, const std::vector<uint8_t> &extraInfo,
const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0; const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0;
/**
* @brief Delete.
*
* @param templateIdList Template ID list.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode Delete(const std::vector<uint64_t> &templateIdList) = 0; virtual ResultCode Delete(const std::vector<uint64_t> &templateIdList) = 0;
/**
* @brief Cancel the action of executor.
*
* @param scheduleId Current working schedule ID.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode Cancel(uint64_t scheduleId) = 0; virtual ResultCode Cancel(uint64_t scheduleId) = 0;
/**
* @brief Send command.
*
* @param commandId Command ID.
* @param extraInfo Extra information of send command.
* @param callbackObj Callback of send command result.
* @return Return the result success or error code{@link ResultCode}.
*/
virtual ResultCode SendCommand(PropertyMode commandId, const std::vector<uint8_t> &extraInfo, virtual ResultCode SendCommand(PropertyMode commandId, const std::vector<uint8_t> &extraInfo,
const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0; const std::shared_ptr<UserAuth::IExecuteCallback> &callbackObj) = 0;
}; };

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file iam_executor_idriver_manager.h
*
* @brief Driver manager of executor.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_EXECUTOR_IDRIVER_MANAGER_H #ifndef IAM_EXECUTOR_IDRIVER_MANAGER_H
#define IAM_EXECUTOR_IDRIVER_MANAGER_H #define IAM_EXECUTOR_IDRIVER_MANAGER_H
@ -24,16 +32,34 @@
namespace OHOS { namespace OHOS {
namespace UserIam { namespace UserIam {
namespace UserAuth { namespace UserAuth {
/**
* @brief Hardware device interface config.
*/
struct HdiConfig { struct HdiConfig {
/** Driver ID. */
uint16_t id; // non-zero uint16_t id; // non-zero
/** The current driver. */
std::shared_ptr<IAuthDriverHdi> driver; std::shared_ptr<IAuthDriverHdi> driver;
}; };
class IDriverManager { class IDriverManager {
public: public:
/**
* @brief Default constructor.
*/
IDriverManager() = default; IDriverManager() = default;
/**
* @brief Deconstructor.
*/
virtual ~IDriverManager() = default; virtual ~IDriverManager() = default;
/**
* @brief Start.
*
* @param hdiName2Config Hardware device interface name and config.
* @return Return the result success or not.
*/
static int32_t Start(const std::map<std::string, HdiConfig> &hdiName2Config); static int32_t Start(const std::map<std::string, HdiConfig> &hdiName2Config);
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file iam_executor_idriver_manager.h
*
* @brief Driver manager of executor.
* @since 3.1
* @version 3.2
*/
#ifndef IAM_EXECUTOR_IEXECUTE_CALLBACK_H #ifndef IAM_EXECUTOR_IEXECUTE_CALLBACK_H
#define IAM_EXECUTOR_IEXECUTE_CALLBACK_H #define IAM_EXECUTOR_IEXECUTE_CALLBACK_H
@ -27,11 +35,38 @@ namespace UserAuth {
class IExecuteCallback { class IExecuteCallback {
public: public:
using ResultCode = UserIam::UserAuth::ResultCode; using ResultCode = UserIam::UserAuth::ResultCode;
/**
* @brief Default constructor.
*/
IExecuteCallback() = default; IExecuteCallback() = default;
/**
* @brief Deconstructor.
*/
virtual ~IExecuteCallback() = default; virtual ~IExecuteCallback() = default;
/**
* @brief The callback return execute result.
*
* @param result The result success or error code{@link ResultCode}.
* @param extraInfo Other related information about execute.
*/
virtual void OnResult(ResultCode result, const std::vector<uint8_t> &extraInfo) = 0; virtual void OnResult(ResultCode result, const std::vector<uint8_t> &extraInfo) = 0;
/**
* @brief The callback return execute result.
*
* @param result The result success or error code{@link ResultCode}.
*/
virtual void OnResult(ResultCode result) = 0; virtual void OnResult(ResultCode result) = 0;
/**
* @brief The callback return authenticate acquire information.
*
* @param acquireInfo Acquire info needed to be pass in.
* @param extraInfo Other related information about execute.
*/
virtual void OnAcquireInfo(int32_t acquire, const std::vector<uint8_t> &extraInfo) = 0; virtual void OnAcquireInfo(int32_t acquire, const std::vector<uint8_t> &extraInfo) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file user_auth_client.h
*
* @brief The definition of user auth client.
* @since 3.1
* @version 3.2
*/
#ifndef USER_AUTH_CLIENT_H #ifndef USER_AUTH_CLIENT_H
#define USER_AUTH_CLIENT_H #define USER_AUTH_CLIENT_H
@ -27,20 +35,76 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class UserAuthClient { class UserAuthClient {
public: public:
/**
* @brief Get userAuth client's instance.
*
* @return UserAuthClient's instance.
*/
static UserAuthClient &GetInstance(); static UserAuthClient &GetInstance();
/**
* @brief Deconstructor.
*/
virtual ~UserAuthClient() = default; virtual ~UserAuthClient() = default;
/**
* @brief Get executor property.
*
* @param userId System userId, generated by account subsystem.
* @param request AuthType and AttributeKey to get property.
* @param callback Callback of get property result.
*/
virtual void GetProperty(int32_t userId, const GetPropertyRequest &request, virtual void GetProperty(int32_t userId, const GetPropertyRequest &request,
const std::shared_ptr<GetPropCallback> &callback) = 0; const std::shared_ptr<GetPropCallback> &callback) = 0;
/**
* @brief Set executor property.
*
* @param userId System userId, generated by account subsystem.
* @param request AuthType, propertyMode and attributes to set property.
* @param callback Callback of set property result.
*/
virtual void SetProperty(int32_t userId, const SetPropertyRequest &request, virtual void SetProperty(int32_t userId, const SetPropertyRequest &request,
const std::shared_ptr<SetPropCallback> &callback) = 0; const std::shared_ptr<SetPropCallback> &callback) = 0;
/**
* @brief Begin user authentication according to ATL and authType.
*
* @param userId System userId, generated by account subsystem.
* @param challenge auth challenge which can prevent replay attacks.
* @param authType Auth type supported by executor.
* @param atl Auth trust level.
* @param callback Callback of user authentication result.
* @return Return context ID of authentication.
*/
virtual uint64_t BeginAuthentication(int32_t userId, const std::vector<uint8_t> &challenge, AuthType authType, virtual uint64_t BeginAuthentication(int32_t userId, const std::vector<uint8_t> &challenge, AuthType authType,
AuthTrustLevel atl, const std::shared_ptr<AuthenticationCallback> &callback) = 0; AuthTrustLevel atl, const std::shared_ptr<AuthenticationCallback> &callback) = 0;
/**
* @brief Cancel user authentication.
*
* @param contextId Indicates the authenticate context index.
* @return Return cancelAuthentication result(0:success; other:failed).
*/
virtual int32_t CancelAuthentication(uint64_t contextId) = 0; virtual int32_t CancelAuthentication(uint64_t contextId) = 0;
/**
* @brief Begin user identification according to authType.
*
* @param challenge auth challenge which can prevent replay attacks.
* @param authType Auth type supported by executor.
* @param callback Callback of user identification result.
* @return Return context ID of authentication.
*/
virtual uint64_t BeginIdentification(const std::vector<uint8_t> &challenge, AuthType authType, virtual uint64_t BeginIdentification(const std::vector<uint8_t> &challenge, AuthType authType,
const std::shared_ptr<IdentificationCallback> &callback) = 0; const std::shared_ptr<IdentificationCallback> &callback) = 0;
/**
* @brief Cancel user identification.
*
* @param contextId Indicates the identification context index.
* @return Return CancelIdentification result(0:success; other:failed).
*/
virtual int32_t CancelIdentification(uint64_t contextId) = 0; virtual int32_t CancelIdentification(uint64_t contextId) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file user_auth_client_callback.h
*
* @brief Callback definitions returned by user auth client.
* @since 3.1
* @version 3.2
*/
#ifndef USER_AUTH_CLIENT_CALLBACK_H #ifndef USER_AUTH_CLIENT_CALLBACK_H
#define USER_AUTH_CLIENT_CALLBACK_H #define USER_AUTH_CLIENT_CALLBACK_H
@ -24,23 +32,63 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class AuthenticationCallback { class AuthenticationCallback {
public: public:
/**
* @brief The callback return authenticate acquire information.
*
* @param module Module of current acquire info.
* @param acquireInfo Acquire info needed to be pass in.
* @param extraInfo Other related information about authentication.
*/
virtual void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) = 0; virtual void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) = 0;
/**
* @brief The callback return authenticate result.
*
* @param result The result success or error code{@link ResultCode}.
* @param extraInfo Other related information about authentication.
*/
virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0; virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0;
}; };
class IdentificationCallback { class IdentificationCallback {
public: public:
/**
* @brief The callback return identification acquire information.
*
* @param module Module of current acquire info.
* @param acquireInfo Acquire info needed to be pass in.
* @param extraInfo Other related information about identification.
*/
virtual void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) = 0; virtual void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) = 0;
/**
* @brief The callback return identification result.
*
* @param result The result success or error code{@link ResultCode}.
* @param extraInfo Other related information about identification.
*/
virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0; virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0;
}; };
class GetPropCallback { class GetPropCallback {
public: public:
/**
* @brief The callback return get property result.
*
* @param result The result success or error code{@link ResultCode}.
* @param extraInfo Other related information about get property.
*/
virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0; virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0;
}; };
class SetPropCallback { class SetPropCallback {
public: public:
/**
* @brief The callback return set property result.
*
* @param result The result success or error code{@link ResultCode}.
* @param extraInfo Other related information about set property.
*/
virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0; virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file co_auth_client_defines.h
*
* @brief Type definitions used by user auth client.
* @since 3.1
* @version 3.2
*/
#ifndef USER_AUTH_CLIENT_DEFINES_H #ifndef USER_AUTH_CLIENT_DEFINES_H
#define USER_AUTH_CLIENT_DEFINES_H #define USER_AUTH_CLIENT_DEFINES_H
@ -22,14 +30,25 @@
namespace OHOS { namespace OHOS {
namespace UserIam { namespace UserIam {
namespace UserAuth { namespace UserAuth {
/**
* @brief Executor property needed to get.
*/
struct GetPropertyRequest { struct GetPropertyRequest {
/** Auth type supported by executor. */
AuthType authType {0}; AuthType authType {0};
/** The keys of attribute needed to get. */
std::vector<Attributes::AttributeKey> keys {}; std::vector<Attributes::AttributeKey> keys {};
}; };
/**
* @brief Executor property needed to set.
*/
struct SetPropertyRequest { struct SetPropertyRequest {
/** Auth type supported by executor. */
AuthType authType {0}; AuthType authType {0};
/** The executor's property mode. */
PropertyMode mode {0}; PropertyMode mode {0};
/** The attributes needed to set. */
Attributes attrs {}; Attributes attrs {};
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file user_idm_client.h
*
* @brief The definition of idm client.
* @since 3.1
* @version 3.2
*/
#ifndef USER_IDM_CLIENT_H #ifndef USER_IDM_CLIENT_H
#define USER_IDM_CLIENT_H #define USER_IDM_CLIENT_H
@ -29,27 +37,118 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class UserIdmClient { class UserIdmClient {
public: public:
/**
* @brief Get userIdm client's instance.
*
* @return UserIdmClient's instance.
*/
static UserIdmClient &GetInstance(); static UserIdmClient &GetInstance();
/**
* @brief Deconstructor.
*/
virtual ~UserIdmClient() = default; virtual ~UserIdmClient() = default;
/**
* @brief Open session with user identity management.
*
* User identity Management can be used only after the session is open,
* and the session is valid for ten minutes.
* @param userId System userId, generated by account subsystem.
* @return Return the challenge.
*/
virtual std::vector<uint8_t> OpenSession(int32_t userId) = 0; virtual std::vector<uint8_t> OpenSession(int32_t userId) = 0;
/**
* @brief Open session with user identity management.
*
* @param userId System userId, generated by account subsystem.
*/
virtual void CloseSession(int32_t userId) = 0; virtual void CloseSession(int32_t userId) = 0;
/**
* @brief Add user credential information.
*
* @param userId System userId, generated by account subsystem.
* @param para Include authType, pinSubType and token.
* @param callback Callback of add credential result.
*/
virtual void AddCredential(int32_t userId, const CredentialParameters &para, virtual void AddCredential(int32_t userId, const CredentialParameters &para,
const std::shared_ptr<UserIdmClientCallback> &callback) = 0; const std::shared_ptr<UserIdmClientCallback> &callback) = 0;
/**
* @brief Update user credential information.
*
* @param userId System userId, generated by account subsystem.
* @param para Include authType, pinSubType and token(PIN).
* @param callback Callback of update credential result.
*/
virtual void UpdateCredential(int32_t userId, const CredentialParameters &para, virtual void UpdateCredential(int32_t userId, const CredentialParameters &para,
const std::shared_ptr<UserIdmClientCallback> &callback) = 0; const std::shared_ptr<UserIdmClientCallback> &callback) = 0;
/**
* @brief Cancel add user credential.
*
* @param userId System userId, generated by account subsystem.
* @return Return Cancel result(0:success; other:failed).
*/
virtual int32_t Cancel(int32_t userId) = 0; virtual int32_t Cancel(int32_t userId) = 0;
/**
* @brief Delete user's credential according to credentialId.
*
* Only support to delete non-password credentials.
*
* @param userId System userId, generated by account subsystem.
* @param credentialId User credentialId.
* @param authToken PIN auth token.
* @param callback Callback of delete credential result.
*/
virtual void DeleteCredential(int32_t userId, uint64_t credentialId, const std::vector<uint8_t> &authToken, virtual void DeleteCredential(int32_t userId, uint64_t credentialId, const std::vector<uint8_t> &authToken,
const std::shared_ptr<UserIdmClientCallback> &callback) = 0; const std::shared_ptr<UserIdmClientCallback> &callback) = 0;
/**
* @brief Delete user's PIN.
*
* When deleting user's PIN, all credentials of the user will be deleted.
*
* @param userId System userId, generated by account subsystem.
* @param authToken PIN auth token.
* @param callback Callback of delete user's credential result.
*/
virtual void DeleteUser(int32_t userId, const std::vector<uint8_t> &authToken, virtual void DeleteUser(int32_t userId, const std::vector<uint8_t> &authToken,
const std::shared_ptr<UserIdmClientCallback> &callback) = 0; const std::shared_ptr<UserIdmClientCallback> &callback) = 0;
/**
* @brief Erase user.
*
* This method is used for administrators to delete user and
* delete all credentials of the user at the same time.
*
* @param userId System userId, generated by account subsystem.
* @param callback Callback of erase user result.
* @return Return erase user success or not(0:success; other:failed).
*/
virtual int32_t EraseUser(int32_t userId, const std::shared_ptr<UserIdmClientCallback> &callback) = 0; virtual int32_t EraseUser(int32_t userId, const std::shared_ptr<UserIdmClientCallback> &callback) = 0;
/**
* @brief get user's credential information.
*
* @param userId System userId, generated by account subsystem.
* @param authType Authtype supported by executor.
* @param callback Callback of get credentialInfo result.
* @return Return get credentialInfo success or not(0:success; other:failed).
*/
virtual int32_t GetCredentialInfo(int32_t userId, AuthType authType, virtual int32_t GetCredentialInfo(int32_t userId, AuthType authType,
const std::shared_ptr<GetCredentialInfoCallback> &callback) = 0; const std::shared_ptr<GetCredentialInfoCallback> &callback) = 0;
/**
* @brief get security user information.
*
* @param userId System userId, generated by account subsystem.
* @param callback Return get security userInfo result.
* @return Return get security userInfo success or not(0:success; other:failed).
*/
virtual int32_t GetSecUserInfo(int32_t userId, const std::shared_ptr<GetSecUserInfoCallback> &callback) = 0; virtual int32_t GetSecUserInfo(int32_t userId, const std::shared_ptr<GetSecUserInfoCallback> &callback) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file user_idm_client_callback.h
*
* @brief Callback definitions returned by idm client.
* @since 3.1
* @version 3.2
*/
#ifndef USER_IDM_CLIENT_CALLBACK_H #ifndef USER_IDM_CLIENT_CALLBACK_H
#define USER_IDM_CLIENT_CALLBACK_H #define USER_IDM_CLIENT_CALLBACK_H
@ -25,17 +33,41 @@ namespace UserIam {
namespace UserAuth { namespace UserAuth {
class GetCredentialInfoCallback { class GetCredentialInfoCallback {
public: public:
/**
* @brief The callback return get credential info result.
*
* @param infoList The credential info list.
*/
virtual void OnCredentialInfo(const std::vector<CredentialInfo> &infoList) = 0; virtual void OnCredentialInfo(const std::vector<CredentialInfo> &infoList) = 0;
}; };
class GetSecUserInfoCallback { class GetSecUserInfoCallback {
public: public:
/**
* @brief The callback return get security user info result.
*
* @param info The security user info.
*/
virtual void OnSecUserInfo(const SecUserInfo &info) = 0; virtual void OnSecUserInfo(const SecUserInfo &info) = 0;
}; };
class UserIdmClientCallback { class UserIdmClientCallback {
public: public:
/**
* @brief The callback return authenticate acquire information.
*
* @param module Module of current acquire info.
* @param acquireInfo Acquire info needed to be pass in.
* @param extraInfo Other related information about authentication.
*/
virtual void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) = 0; virtual void OnAcquireInfo(int32_t module, uint32_t acquireInfo, const Attributes &extraInfo) = 0;
/**
* @brief The callback return set property result.
*
* @param result The result success or error code{@link ResultCode}.
* @param extraInfo Other related information about set property.
*/
virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0; virtual void OnResult(int32_t result, const Attributes &extraInfo) = 0;
}; };
} // namespace UserAuth } // namespace UserAuth

View File

@ -13,6 +13,14 @@
* limitations under the License. * limitations under the License.
*/ */
/**
* @file user_idm_client_defines.h
*
* @brief Type definitions used by idm client.
* @since 3.1
* @version 3.2
*/
#ifndef USER_IDM_CLIENT_DEFINES_H #ifndef USER_IDM_CLIENT_DEFINES_H
#define USER_IDM_CLIENT_DEFINES_H #define USER_IDM_CLIENT_DEFINES_H
@ -23,26 +31,49 @@
namespace OHOS { namespace OHOS {
namespace UserIam { namespace UserIam {
namespace UserAuth { namespace UserAuth {
/**
* @brief User credential infomation returned.
*/
struct CredentialInfo { struct CredentialInfo {
/* Auth type supported by executor. */
AuthType authType {0}; AuthType authType {0};
/* Auth subtype of PIN. */
std::optional<PinSubType> pinType {}; std::optional<PinSubType> pinType {};
/* User credentialId is generated by idm to associate userId and templateId. */
uint64_t credentialId {0}; uint64_t credentialId {0};
/* User templateId is generated by executor to represent user characteristics. */
uint64_t templateId {0}; uint64_t templateId {0};
}; };
/**
* @brief Define credential enrollment information.
*/
struct EnrolledInfo { struct EnrolledInfo {
/** Auth type supported by executor. */
AuthType authType {0}; AuthType authType {0};
/** Enrolled ID. */
uint64_t enrolledId {0}; uint64_t enrolledId {0};
}; };
/**
* @brief Define security user information.
*/
struct SecUserInfo { struct SecUserInfo {
/** Security user ID. */
uint64_t secureUid {0}; uint64_t secureUid {0};
/** The user credential enrollment infomation. */
std::vector<EnrolledInfo> enrolledInfo {}; std::vector<EnrolledInfo> enrolledInfo {};
}; };
/**
* @brief Parameters needed to set about user credential information.
*/
struct CredentialParameters { struct CredentialParameters {
/** Auth type supported by executor. */
AuthType authType {0}; AuthType authType {0};
/** Auth subtype of PIN. */
std::optional<PinSubType> pinType {}; std::optional<PinSubType> pinType {};
/** Auth token. */
std::vector<uint8_t> token {}; std::vector<uint8_t> token {};
}; };
} // namespace UserAuth } // namespace UserAuth