static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc,

                                                      const char *key,

                                                      Error **errp)

{

    char combined_key[QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

                      QIO_CHANNEL_WEBSOCK_GUID_LEN + 1];

    char *accept = NULL;

    char *date = qio_channel_websock_date_str();



    g_strlcpy(combined_key, key, QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN + 1);

    g_strlcat(combined_key, QIO_CHANNEL_WEBSOCK_GUID,

              QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

              QIO_CHANNEL_WEBSOCK_GUID_LEN + 1);



    /* hash and encode it */

    if (qcrypto_hash_base64(QCRYPTO_HASH_ALG_SHA1,

                            combined_key,

                            QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

                            QIO_CHANNEL_WEBSOCK_GUID_LEN,

                            &accept,

                            errp) < 0) {

        qio_channel_websock_handshake_send_res_err(

            ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR);

        return;

    }



    qio_channel_websock_handshake_send_res(

        ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, date, accept);



    g_free(date);

    g_free(accept);

}

static void qio_channel_websock_handshake_send_res_ok(QIOChannelWebsock *ioc,

                                                      const char *key,

                                                      Error **errp)

{

    char combined_key[QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

                      QIO_CHANNEL_WEBSOCK_GUID_LEN + 1];

    char *accept = NULL;

    char *date = qio_channel_websock_date_str();



    g_strlcpy(combined_key, key, QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN + 1);

    g_strlcat(combined_key, QIO_CHANNEL_WEBSOCK_GUID,

              QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

              QIO_CHANNEL_WEBSOCK_GUID_LEN + 1);



    

    if (qcrypto_hash_base64(QCRYPTO_HASH_ALG_SHA1,

                            combined_key,

                            QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

                            QIO_CHANNEL_WEBSOCK_GUID_LEN,

                            &accept,

                            errp) < 0) {

        qio_channel_websock_handshake_send_res_err(

            ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR);

        return;

    }



    qio_channel_websock_handshake_send_res(

        ioc, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, date, accept);



    g_free(date);

    g_free(accept);

}

    char *date = qio_channel_websock_date_str();
static void FUNC_0(QIOChannelWebsock *VAR_0,

                                                      const char *VAR_1,

                                                      Error **VAR_2)

{

    char VAR_3[QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

                      QIO_CHANNEL_WEBSOCK_GUID_LEN + 1];

    char *VAR_4 = NULL;

    char *VAR_5 = qio_channel_websock_date_str();



    g_strlcpy(VAR_3, VAR_1, QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN + 1);

    g_strlcat(VAR_3, QIO_CHANNEL_WEBSOCK_GUID,

              QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

              QIO_CHANNEL_WEBSOCK_GUID_LEN + 1);



    

    if (qcrypto_hash_base64(QCRYPTO_HASH_ALG_SHA1,

                            VAR_3,

                            QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +

                            QIO_CHANNEL_WEBSOCK_GUID_LEN,

                            &VAR_4,

                            VAR_2) < 0) {

        qio_channel_websock_handshake_send_res_err(

            VAR_0, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR);

        return;

    }



    qio_channel_websock_handshake_send_res(

        VAR_0, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, VAR_5, VAR_4);



    g_free(VAR_5);

    g_free(VAR_4);

}

static void FUNC_0(QIOChannelWebsock *VAR_0,
const char *VAR_1,
Error **VAR_2)
{ char VAR_3[QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +
QIO_CHANNEL_WEBSOCK_GUID_LEN + 1]; char *VAR_4 = NULL; char *VAR_5 = qio_channel_websock_date_str(); g_strlcpy(VAR_3, VAR_1, QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN + 1); g_strlcat(VAR_3, QIO_CHANNEL_WEBSOCK_GUID,
QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +
QIO_CHANNEL_WEBSOCK_GUID_LEN + 1); if (qcrypto_hash_base64(QCRYPTO_HASH_ALG_SHA1,
VAR_3,
QIO_CHANNEL_WEBSOCK_CLIENT_KEY_LEN +
QIO_CHANNEL_WEBSOCK_GUID_LEN,
&VAR_4,
VAR_2) < 0) { qio_channel_websock_handshake_send_res_err(
VAR_0, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_SERVER_ERR); return; } qio_channel_websock_handshake_send_res(
VAR_0, QIO_CHANNEL_WEBSOCK_HANDSHAKE_RES_OK, VAR_5, VAR_4); g_free(VAR_5); g_free(VAR_4); }