1 /* 2 * Copyright (C) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef USERIAM_COAUTH_H 17 #define USERIAM_COAUTH_H 18 19 #include "defines.h" 20 #include "pool.h" 21 22 #ifdef __cplusplus 23 extern "C" { 24 #endif 25 26 #define INVALID_SESSION_ID 0 27 #define MAX_EXECUTOR_SIZE 2 28 29 typedef union AssociateId { 30 uint64_t contextId; 31 int32_t userId; 32 } AssociateId; 33 34 typedef struct ScheduleParam { 35 uint32_t authType; 36 ScheduleMode scheduleMode; 37 AssociateId associateId; 38 TemplateIdArrays *templateIds; 39 uint32_t collectorSensorHint; 40 uint32_t verifierSensorHint; 41 uint32_t executorMatcher; 42 } ScheduleParam; 43 44 typedef struct CoAuthSchedule { 45 uint64_t scheduleId; 46 uint32_t authType; 47 ScheduleMode scheduleMode; 48 AssociateId associateId; 49 TemplateIdArrays templateIds; 50 uint32_t executorSize; 51 ExecutorInfoHal executors[MAX_EXECUTOR_SIZE]; 52 } CoAuthSchedule; 53 54 ResultCode InitCoAuth(void); 55 void DestoryCoAuth(void); 56 57 CoAuthSchedule *GenerateSchedule(const ScheduleParam *param); 58 59 ResultCode AddCoAuthSchedule(const CoAuthSchedule *coAuthSchedule); 60 ResultCode RemoveCoAuthSchedule(uint64_t scheduleId); 61 const CoAuthSchedule *GetCoAuthSchedule(uint64_t scheduleId); 62 uint32_t GetScheduleVeriferSensorHint(const CoAuthSchedule *coAuthSchedule); 63 void DestroyCoAuthSchedule(CoAuthSchedule *coAuthSchedule); 64 CoAuthSchedule *CopyCoAuthSchedule(const CoAuthSchedule *coAuthSchedule); 65 void DestroyScheduleNode(void *data); 66 bool IsTemplateArraysValid(const TemplateIdArrays *templateIds); 67 ResultCode CopyTemplateArrays(const TemplateIdArrays *in, TemplateIdArrays *out); 68 69 #ifdef __cplusplus 70 } 71 #endif 72 73 #endif 74