Home | History | Annotate | Line # | Download | only in src
      1 /*
      2  * Copyright (c) 2018 Yubico AB. All rights reserved.
      3  * Use of this source code is governed by a BSD-style
      4  * license that can be found in the LICENSE file.
      5  * SPDX-License-Identifier: BSD-2-Clause
      6  */
      7 
      8 #ifndef _BLOB_H
      9 #define _BLOB_H
     10 
     11 #include <cbor.h>
     12 #include <stdlib.h>
     13 
     14 #ifdef __cplusplus
     15 extern "C" {
     16 #endif /* __cplusplus */
     17 
     18 typedef struct fido_blob {
     19 	unsigned char	*ptr;
     20 	size_t		 len;
     21 } fido_blob_t;
     22 
     23 typedef struct fido_blob_array {
     24 	fido_blob_t	*ptr;
     25 	size_t		 len;
     26 } fido_blob_array_t;
     27 
     28 cbor_item_t *fido_blob_encode(const fido_blob_t *);
     29 fido_blob_t *fido_blob_new(void);
     30 int fido_blob_decode(const cbor_item_t *, fido_blob_t *);
     31 int fido_blob_is_empty(const fido_blob_t *);
     32 int fido_blob_set(fido_blob_t *, const u_char *, size_t);
     33 int fido_blob_append(fido_blob_t *, const u_char *, size_t);
     34 void fido_blob_free(fido_blob_t **);
     35 void fido_blob_reset(fido_blob_t *);
     36 void fido_free_blob_array(fido_blob_array_t *);
     37 
     38 #ifdef __cplusplus
     39 } /* extern "C" */
     40 #endif /* __cplusplus */
     41 
     42 #endif /* !_BLOB_H */
     43