[IOT-1947][IOT-2761][IOT-3228] Rm PEM/DER convert
[iotivity.git] / resource / c_common / experimental / byte_array.h
1 /******************************************************************
2  *
3  * Copyright 2015 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  *      LICENSE-2.0" target="_blank">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
22
23 #ifndef _BYTE_ARRAY_H_
24 #define _BYTE_ARRAY_H_
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif //__cplusplus
29
30 #include <string.h>
31 #include <stdlib.h>
32 #include <stdint.h>
33
34 /**
35  * @struct ByteArray_t
36  *
37  * General purpose byte array structure.
38  *
39  * Contains pointer to array of bytes and it's length.
40  */
41
42 typedef struct ByteArray
43 {
44     uint8_t *data;    /**< Pointer to the byte array */
45     size_t len;      /**< Data size */
46 } ByteArray_t;
47
48 typedef struct ByteArrayLL ByteArrayLL_t;
49
50 struct ByteArrayLL
51 {
52     ByteArray_t *cert;
53     ByteArrayLL_t *next;
54 };
55
56 /**@def BYTE_ARRAY_INITIALIZER
57  *
58  * Initializes of existing byte array pointer to \a NULL.
59  */
60 #undef BYTE_ARRAY_INITIALIZER
61 #define BYTE_ARRAY_INITIALIZER {NULL, 0}
62
63 /**@def CERT_CHAIN_INITIALIZER
64  *
65  * Initializes of existing certificate chain pointer to \a NULL.
66  */
67 #undef CERT_CHAIN_INITIALIZER
68 #define CERT_CHAIN_INITIALIZER {NULL, NULL}
69
70 /**@def INIT_BYTE_ARRAY(array)
71  *
72  * Initializes of existing byte array \a array.
73  *
74  * @param array ByteArray_t
75  */
76 #undef INIT_BYTE_ARRAY
77 #define INIT_BYTE_ARRAY(array) do{  \
78         (array).data = NULL;        \
79         (array).len = 0;            \
80     }while(0)
81
82 /**@def DEINIT_BYTE_ARRAY(array)
83  *
84  * Deinitializes of existing byte array \a array.
85  *
86  * @param array ByteArray_t
87  */
88 #undef DEINIT_BYTE_ARRAY
89 #define DEINIT_BYTE_ARRAY(array) do{  \
90         OICFree((array).data);       \
91         (array).data = NULL;        \
92         (array).len = 0;            \
93     }while(0)
94
95 /**@def PRINT_BYTE_ARRAY(msg, array)
96  *
97  * Prints out byte array \a array in hex representation with message \a msg.
98  *
99  * @param msg string of characters
100  * @param array byte array
101  */
102 #undef PRINT_BYTE_ARRAY
103 #define PRINT_BYTE_ARRAY(msg, array) do{                \
104         size_t i;                                       \
105         printf("%10s", msg);                            \
106         for( i=0; i< (array).len; i++) {                \
107             if( (i!=0) && ((i%16)==0) ) putchar('\n');  \
108             printf("%02X ", (array).data[i]);        \
109         }                                               \
110         putchar('\n');                                  \
111     }while(0)
112
113 /**@def INC_BYTE_ARRAY_PTR(array, size)
114  *
115  * Increments byte array pointer \a array by \a size.
116  *
117  * @param array byte array pointer
118  * @param size number of positions
119  */
120 #undef INC_BYTE_ARRAY_PTR
121 #define INC_BYTE_ARRAY_PTR(array, size) do{      \
122         (array)->data += size;                   \
123         (array)->len -= size;                    \
124     }while(0)
125
126 /**@def INC_BYTE_ARRAY(array, size)
127  *
128  * Increments byte array \a array by \a size.
129  *
130  * @param array byte array
131  * @param size number of positions
132  */
133 #undef INC_BYTE_ARRAY
134 #define INC_BYTE_ARRAY(array, size) do{      \
135         (array).data += size;                \
136         (array).len -= size;                 \
137     }while(0)
138
139 #ifdef __cplusplus
140 }
141 #endif //__cplusplus
142
143 #endif // _BYTE_ARRAY_H_