bd189bead2ce2a211d4b42894db69bf2a2d28a77
[iotivity.git] / resource / csdk / security / include / oxmverifycommon.h
1 //******************************************************************
2 //
3 // Copyright 2016 Samsung Electronics All Rights Reserved.
4 //
5 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 //      http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 //
19 //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
20
21 #ifndef _OXM_VERIFY_COMMON_
22 #define _OXM_VERIFY_COMMON_
23
24 #include "securevirtualresourcetypes.h"
25 #include "casecurityinterface.h"
26
27 #ifdef __cplusplus
28  extern "C" {
29 #endif // __cplusplus
30
31 /** Verification Number Length */
32 #define MUTUAL_VERIF_NUM_LEN (3)
33
34 /** Label Length */
35 #define LABEL_LEN (30)
36
37 /** Verification Method Option definition
38  * This type supports multiple bit set.
39  */
40  typedef enum VerifyOptionBitmask
41 {
42     NOT_APPLICABLE              = 0x0,
43     DISPLAY_NUM                 = (0x1 << 0),
44     USER_CONFIRM                = (0x1 << 1)
45 } VerifyOptionBitmask_t;
46
47 /**
48  * Function pointer to display verification PIN
49  */
50 typedef OCStackResult (OC_CALL *DisplayNumCallback)(void * ctx, uint8_t verifNum[MUTUAL_VERIF_NUM_LEN]);
51
52 /**
53  * Function pointer to get user confirmation
54  */
55 typedef OCStackResult (OC_CALL *UserConfirmCallback)(void * ctx);
56
57 /**
58  * Context for displaying verification PIN
59  */
60 typedef struct DisplayNumContext
61 {
62     DisplayNumCallback callback;
63     void * context;
64 } DisplayNumContext_t;
65
66 /**
67  * Context for getting user confirmation
68  */
69 typedef struct UserConfirmContext
70 {
71     UserConfirmCallback callback;
72     void * context;
73 } UserConfirmContext_t;
74
75 /**
76  * Set Callback for displaying verification PIN
77  */
78 void OC_CALL SetDisplayNumCB(void * ptr, DisplayNumCallback displayNumCB);
79
80 /**
81  * Unset Callback for displaying verification PIN
82  */
83 void* OC_CALL UnsetDisplayNumCB();
84
85 /**
86  * Set Callback for getting user confirmation
87  */
88 void OC_CALL SetUserConfirmCB(void * ptr, UserConfirmCallback userConfirmCB);
89
90 /**
91  * Unset Callback for getting user confirmation
92  */
93 void* OC_CALL UnsetUserConfirmCB();
94
95 /**
96  * Set verification method option.
97  * The default is both display PIN and get user confirmation.
98  */
99 void OC_CALL SetVerifyOption(VerifyOptionBitmask_t verifyOption);
100
101 /**
102  * Call the Callback for Verifying Ownership Transfer process.
103  */
104 OCStackResult OC_CALL VerifyOwnershipTransfer(uint8_t mutualVerifNum[MUTUAL_VERIF_NUM_LEN],
105                                 VerifyOptionBitmask_t verifyOption);
106
107 #ifdef __cplusplus
108 }
109 #endif
110
111 #endif
112