/*
- * Copyright (C) 2005-2011 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2005-2013 Andre Noll <maan@systemlinux.org>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
/** \file crypt_common.c Crypto functions independent of openssl/libgcrypt. */
#include <regex.h>
-#include <stdbool.h>
#include "para.h"
#include "error.h"
#include "string.h"
-#include "crypt_backend.h"
#include "crypt.h"
+#include "crypt_backend.h"
/** If the key begins with this text, we treat it as an ssh key. */
#define KEY_TYPE_TXT "ssh-rsa"
int sc_send_buffer(struct stream_cipher_context *scc, char *buf)
{
- return sc_send_bin_buffer(scc, buf, strlen(buf));
+ size_t len = strlen(buf);
+ int ret = sc_send_bin_buffer(scc, buf, len);
+
+ if (ret < 0 || ret == len)
+ return ret;
+ return -E_SHORT_WRITE;
}
__printf_2_3 int sc_send_va_buffer(struct stream_cipher_context *scc,
{
char *msg;
int ret;
+ va_list ap;
- PARA_VSPRINTF(fmt, msg);
- ret = sc_send_buffer(scc, msg);
+ va_start(ap, fmt);
+ ret = xvasprintf(&msg, fmt, ap);
+ va_end(ap);
+ ret = sc_send_bin_buffer(scc, msg, ret);
free(msg);
return ret;
}