cscg24-guacamole

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

socket-ssl.h (2044B)


      1/*
      2 * Licensed to the Apache Software Foundation (ASF) under one
      3 * or more contributor license agreements.  See the NOTICE file
      4 * distributed with this work for additional information
      5 * regarding copyright ownership.  The ASF licenses this file
      6 * to you under the Apache License, Version 2.0 (the
      7 * "License"); you may not use this file except in compliance
      8 * with the License.  You may obtain a copy of the License at
      9 *
     10 *   http://www.apache.org/licenses/LICENSE-2.0
     11 *
     12 * Unless required by applicable law or agreed to in writing,
     13 * software distributed under the License is distributed on an
     14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     15 * KIND, either express or implied.  See the License for the
     16 * specific language governing permissions and limitations
     17 * under the License.
     18 */
     19
     20
     21#ifndef __GUACD_SOCKET_SSL_H
     22#define __GUACD_SOCKET_SSL_H
     23
     24/**
     25 * Provides an SSL/TLS implementation of guac_socket. This header will only be
     26 * available if libguac was built with SSL support.
     27 *
     28 * @file socket-ssl.h
     29 */
     30
     31#include "socket-types.h"
     32
     33#include <openssl/ssl.h>
     34
     35/**
     36 * SSL socket-specific data.
     37 */
     38typedef struct guac_socket_ssl_data {
     39
     40    /**
     41     * The file descriptor that SSL communication will take place
     42     * over.
     43     */
     44    int fd;
     45
     46    /**
     47     * The current SSL context.
     48     */
     49    SSL_CTX* context;
     50
     51    /**
     52     * The SSL connection, created automatically via
     53     * guac_socket_open_secure().
     54     */
     55    SSL* ssl;
     56
     57} guac_socket_ssl_data;
     58
     59/**
     60 * Creates a new guac_socket which will use SSL for all communication. Freeing
     61 * this guac_socket will automatically close the associated file descriptor.
     62 *
     63 * @param context
     64 *     The SSL_CTX structure describing the desired SSL configuration.
     65 *
     66 * @param fd
     67 *     The file descriptor to use for the SSL connection underlying the
     68 *     created guac_socket.
     69 *
     70 * @return
     71 *     A newly-allocated guac_socket which will transparently use SSL for
     72 *     all communication.
     73 */
     74guac_socket* guac_socket_open_secure(SSL_CTX* context, int fd);
     75
     76#endif
     77