xref: /openbsd/lib/libfido2/src/blob.h (revision c4a807ed)
1d75efeb7Sdjm /*
2d75efeb7Sdjm  * Copyright (c) 2018 Yubico AB. All rights reserved.
3d75efeb7Sdjm  * Use of this source code is governed by a BSD-style
4d75efeb7Sdjm  * license that can be found in the LICENSE file.
5d75efeb7Sdjm  */
6d75efeb7Sdjm 
7d75efeb7Sdjm #ifndef _BLOB_H
8d75efeb7Sdjm #define _BLOB_H
9d75efeb7Sdjm 
1032a20e26Sdjm #include <cbor.h>
1132a20e26Sdjm #include <stdlib.h>
1232a20e26Sdjm 
13739189a3Sdjm #ifdef __cplusplus
14739189a3Sdjm extern "C" {
15739189a3Sdjm #endif /* __cplusplus */
16739189a3Sdjm 
17d75efeb7Sdjm typedef struct fido_blob {
18d75efeb7Sdjm 	unsigned char	*ptr;
19d75efeb7Sdjm 	size_t		 len;
20d75efeb7Sdjm } fido_blob_t;
21d75efeb7Sdjm 
22d75efeb7Sdjm typedef struct fido_blob_array {
23d75efeb7Sdjm 	fido_blob_t	*ptr;
24d75efeb7Sdjm 	size_t		 len;
25d75efeb7Sdjm } fido_blob_array_t;
26d75efeb7Sdjm 
27d75efeb7Sdjm cbor_item_t *fido_blob_encode(const fido_blob_t *);
28d75efeb7Sdjm fido_blob_t *fido_blob_new(void);
29d75efeb7Sdjm int fido_blob_decode(const cbor_item_t *, fido_blob_t *);
30d75efeb7Sdjm int fido_blob_is_empty(const fido_blob_t *);
31*c4a807edSdjm int fido_blob_set(fido_blob_t *, const u_char *, size_t);
32*c4a807edSdjm int fido_blob_append(fido_blob_t *, const u_char *, size_t);
33d75efeb7Sdjm void fido_blob_free(fido_blob_t **);
34*c4a807edSdjm void fido_blob_reset(fido_blob_t *);
3532a20e26Sdjm void fido_free_blob_array(fido_blob_array_t *);
36d75efeb7Sdjm 
37739189a3Sdjm #ifdef __cplusplus
38739189a3Sdjm } /* extern "C" */
39739189a3Sdjm #endif /* __cplusplus */
40739189a3Sdjm 
41d75efeb7Sdjm #endif /* !_BLOB_H */
42