cscg24-guacamole

CSCG 2024 Challenge 'Guacamole Mashup'
git clone https://git.sinitax.com/sinitax/cscg24-guacamole
Log | Files | Refs | sfeed.txt

libssh2_publickey.h (4909B)


      1/* Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org>
      2 * All rights reserved.
      3 *
      4 * Redistribution and use in source and binary forms,
      5 * with or without modification, are permitted provided
      6 * that the following conditions are met:
      7 *
      8 *   Redistributions of source code must retain the above
      9 *   copyright notice, this list of conditions and the
     10 *   following disclaimer.
     11 *
     12 *   Redistributions in binary form must reproduce the above
     13 *   copyright notice, this list of conditions and the following
     14 *   disclaimer in the documentation and/or other materials
     15 *   provided with the distribution.
     16 *
     17 *   Neither the name of the copyright holder nor the names
     18 *   of any other contributors may be used to endorse or
     19 *   promote products derived from this software without
     20 *   specific prior written permission.
     21 *
     22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
     23 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
     24 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     25 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     26 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
     29 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     32 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     33 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
     34 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
     35 * OF SUCH DAMAGE.
     36 */
     37
     38/* Note: This include file is only needed for using the
     39 * publickey SUBSYSTEM which is not the same as publickey
     40 * authentication.  For authentication you only need libssh2.h
     41 *
     42 * For more information on the publickey subsystem,
     43 * refer to IETF draft: secsh-publickey
     44 */
     45
     46#ifndef LIBSSH2_PUBLICKEY_H
     47#define LIBSSH2_PUBLICKEY_H 1
     48
     49#include "libssh2.h"
     50
     51typedef struct _LIBSSH2_PUBLICKEY               LIBSSH2_PUBLICKEY;
     52
     53typedef struct _libssh2_publickey_attribute {
     54    const char *name;
     55    unsigned long name_len;
     56    const char *value;
     57    unsigned long value_len;
     58    char mandatory;
     59} libssh2_publickey_attribute;
     60
     61typedef struct _libssh2_publickey_list {
     62    unsigned char *packet; /* For freeing */
     63
     64    const unsigned char *name;
     65    unsigned long name_len;
     66    const unsigned char *blob;
     67    unsigned long blob_len;
     68    unsigned long num_attrs;
     69    libssh2_publickey_attribute *attrs; /* free me */
     70} libssh2_publickey_list;
     71
     72/* Generally use the first macro here, but if both name and value are string
     73   literals, you can use _fast() to take advantage of preprocessing */
     74#define libssh2_publickey_attribute(name, value, mandatory) \
     75    { (name), strlen(name), (value), strlen(value), (mandatory) },
     76#define libssh2_publickey_attribute_fast(name, value, mandatory) \
     77    { (name), sizeof(name) - 1, (value), sizeof(value) - 1, (mandatory) },
     78
     79#ifdef __cplusplus
     80extern "C" {
     81#endif
     82
     83/* Publickey Subsystem */
     84LIBSSH2_API LIBSSH2_PUBLICKEY *
     85libssh2_publickey_init(LIBSSH2_SESSION *session);
     86
     87LIBSSH2_API int
     88libssh2_publickey_add_ex(LIBSSH2_PUBLICKEY *pkey,
     89                         const unsigned char *name,
     90                         unsigned long name_len,
     91                         const unsigned char *blob,
     92                         unsigned long blob_len, char overwrite,
     93                         unsigned long num_attrs,
     94                         const libssh2_publickey_attribute attrs[]);
     95#define libssh2_publickey_add(pkey, name, blob, blob_len, overwrite, \
     96                              num_attrs, attrs) \
     97    libssh2_publickey_add_ex((pkey), \
     98                             (name), strlen(name), \
     99                             (blob), (blob_len), \
    100                             (overwrite), (num_attrs), (attrs))
    101
    102LIBSSH2_API int libssh2_publickey_remove_ex(LIBSSH2_PUBLICKEY *pkey,
    103                                            const unsigned char *name,
    104                                            unsigned long name_len,
    105                                            const unsigned char *blob,
    106                                            unsigned long blob_len);
    107#define libssh2_publickey_remove(pkey, name, blob, blob_len) \
    108    libssh2_publickey_remove_ex((pkey), \
    109                                (name), strlen(name), \
    110                                (blob), (blob_len))
    111
    112LIBSSH2_API int
    113libssh2_publickey_list_fetch(LIBSSH2_PUBLICKEY *pkey,
    114                             unsigned long *num_keys,
    115                             libssh2_publickey_list **pkey_list);
    116LIBSSH2_API void
    117libssh2_publickey_list_free(LIBSSH2_PUBLICKEY *pkey,
    118                            libssh2_publickey_list *pkey_list);
    119
    120LIBSSH2_API int libssh2_publickey_shutdown(LIBSSH2_PUBLICKEY *pkey);
    121
    122#ifdef __cplusplus
    123} /* extern "C" */
    124#endif
    125
    126#endif /* LIBSSH2_PUBLICKEY_H */