1294328Sdes/* $OpenBSD: bufbn.c,v 1.12 2014/04/30 05:29:56 djm Exp $ */
2294328Sdes
3162852Sdes/*
4294328Sdes * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
5162852Sdes *
6294328Sdes * Permission to use, copy, modify, and distribute this software for any
7294328Sdes * purpose with or without fee is hereby granted, provided that the above
8294328Sdes * copyright notice and this permission notice appear in all copies.
9162852Sdes *
10294328Sdes * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11294328Sdes * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12294328Sdes * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13294328Sdes * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14294328Sdes * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15294328Sdes * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16294328Sdes * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17162852Sdes */
18162852Sdes
19294328Sdes/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
20294328Sdes
21162852Sdes#include "includes.h"
22162852Sdes
23294332Sdes#ifdef WITH_OPENSSL
24294332Sdes
25162852Sdes#include <sys/types.h>
26162852Sdes
27162852Sdes#include "buffer.h"
28162852Sdes#include "log.h"
29294328Sdes#include "ssherr.h"
30162852Sdes
31294332Sdes#ifdef WITH_SSH1
32162852Sdesint
33162852Sdesbuffer_put_bignum_ret(Buffer *buffer, const BIGNUM *value)
34162852Sdes{
35294328Sdes	int ret;
36162852Sdes
37294328Sdes	if ((ret = sshbuf_put_bignum1(buffer, value)) != 0) {
38294328Sdes		error("%s: %s", __func__, ssh_err(ret));
39294328Sdes		return -1;
40162852Sdes	}
41294328Sdes	return 0;
42162852Sdes}
43162852Sdes
44162852Sdesvoid
45162852Sdesbuffer_put_bignum(Buffer *buffer, const BIGNUM *value)
46162852Sdes{
47162852Sdes	if (buffer_put_bignum_ret(buffer, value) == -1)
48294328Sdes		fatal("%s: buffer error", __func__);
49162852Sdes}
50162852Sdes
51162852Sdesint
52162852Sdesbuffer_get_bignum_ret(Buffer *buffer, BIGNUM *value)
53162852Sdes{
54294328Sdes	int ret;
55162852Sdes
56294328Sdes	if ((ret = sshbuf_get_bignum1(buffer, value)) != 0) {
57294328Sdes		error("%s: %s", __func__, ssh_err(ret));
58294328Sdes		return -1;
59162852Sdes	}
60294328Sdes	return 0;
61162852Sdes}
62162852Sdes
63162852Sdesvoid
64162852Sdesbuffer_get_bignum(Buffer *buffer, BIGNUM *value)
65162852Sdes{
66162852Sdes	if (buffer_get_bignum_ret(buffer, value) == -1)
67294328Sdes		fatal("%s: buffer error", __func__);
68162852Sdes}
69294332Sdes#endif /* WITH_SSH1 */
70162852Sdes
71162852Sdesint
72162852Sdesbuffer_put_bignum2_ret(Buffer *buffer, const BIGNUM *value)
73162852Sdes{
74294328Sdes	int ret;
75162852Sdes
76294328Sdes	if ((ret = sshbuf_put_bignum2(buffer, value)) != 0) {
77294328Sdes		error("%s: %s", __func__, ssh_err(ret));
78294328Sdes		return -1;
79162852Sdes	}
80294328Sdes	return 0;
81162852Sdes}
82162852Sdes
83162852Sdesvoid
84162852Sdesbuffer_put_bignum2(Buffer *buffer, const BIGNUM *value)
85162852Sdes{
86162852Sdes	if (buffer_put_bignum2_ret(buffer, value) == -1)
87294328Sdes		fatal("%s: buffer error", __func__);
88162852Sdes}
89162852Sdes
90162852Sdesint
91162852Sdesbuffer_get_bignum2_ret(Buffer *buffer, BIGNUM *value)
92162852Sdes{
93294328Sdes	int ret;
94162852Sdes
95294328Sdes	if ((ret = sshbuf_get_bignum2(buffer, value)) != 0) {
96294328Sdes		error("%s: %s", __func__, ssh_err(ret));
97294328Sdes		return -1;
98162852Sdes	}
99294328Sdes	return 0;
100162852Sdes}
101162852Sdes
102162852Sdesvoid
103162852Sdesbuffer_get_bignum2(Buffer *buffer, BIGNUM *value)
104162852Sdes{
105162852Sdes	if (buffer_get_bignum2_ret(buffer, value) == -1)
106294328Sdes		fatal("%s: buffer error", __func__);
107162852Sdes}
108294332Sdes
109294332Sdes#endif /* WITH_OPENSSL */
110