1295367Sdes/* $OpenBSD: bufbn.c,v 1.12 2014/04/30 05:29:56 djm Exp $ */
2295367Sdes
3162852Sdes/*
4295367Sdes * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
5162852Sdes *
6295367Sdes * Permission to use, copy, modify, and distribute this software for any
7295367Sdes * purpose with or without fee is hereby granted, provided that the above
8295367Sdes * copyright notice and this permission notice appear in all copies.
9162852Sdes *
10295367Sdes * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11295367Sdes * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12295367Sdes * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13295367Sdes * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14295367Sdes * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15295367Sdes * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16295367Sdes * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17162852Sdes */
18162852Sdes
19295367Sdes/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
20295367Sdes
21162852Sdes#include "includes.h"
22162852Sdes
23295367Sdes#ifdef WITH_OPENSSL
24295367Sdes
25162852Sdes#include <sys/types.h>
26162852Sdes
27162852Sdes#include "buffer.h"
28162852Sdes#include "log.h"
29295367Sdes#include "ssherr.h"
30162852Sdes
31295367Sdes#ifdef WITH_SSH1
32162852Sdesint
33162852Sdesbuffer_put_bignum_ret(Buffer *buffer, const BIGNUM *value)
34162852Sdes{
35295367Sdes	int ret;
36162852Sdes
37295367Sdes	if ((ret = sshbuf_put_bignum1(buffer, value)) != 0) {
38295367Sdes		error("%s: %s", __func__, ssh_err(ret));
39295367Sdes		return -1;
40162852Sdes	}
41295367Sdes	return 0;
42162852Sdes}
43162852Sdes
44162852Sdesvoid
45162852Sdesbuffer_put_bignum(Buffer *buffer, const BIGNUM *value)
46162852Sdes{
47162852Sdes	if (buffer_put_bignum_ret(buffer, value) == -1)
48295367Sdes		fatal("%s: buffer error", __func__);
49162852Sdes}
50162852Sdes
51162852Sdesint
52162852Sdesbuffer_get_bignum_ret(Buffer *buffer, BIGNUM *value)
53162852Sdes{
54295367Sdes	int ret;
55162852Sdes
56295367Sdes	if ((ret = sshbuf_get_bignum1(buffer, value)) != 0) {
57295367Sdes		error("%s: %s", __func__, ssh_err(ret));
58295367Sdes		return -1;
59162852Sdes	}
60295367Sdes	return 0;
61162852Sdes}
62162852Sdes
63162852Sdesvoid
64162852Sdesbuffer_get_bignum(Buffer *buffer, BIGNUM *value)
65162852Sdes{
66162852Sdes	if (buffer_get_bignum_ret(buffer, value) == -1)
67295367Sdes		fatal("%s: buffer error", __func__);
68162852Sdes}
69295367Sdes#endif /* WITH_SSH1 */
70162852Sdes
71162852Sdesint
72162852Sdesbuffer_put_bignum2_ret(Buffer *buffer, const BIGNUM *value)
73162852Sdes{
74295367Sdes	int ret;
75162852Sdes
76295367Sdes	if ((ret = sshbuf_put_bignum2(buffer, value)) != 0) {
77295367Sdes		error("%s: %s", __func__, ssh_err(ret));
78295367Sdes		return -1;
79162852Sdes	}
80295367Sdes	return 0;
81162852Sdes}
82162852Sdes
83162852Sdesvoid
84162852Sdesbuffer_put_bignum2(Buffer *buffer, const BIGNUM *value)
85162852Sdes{
86162852Sdes	if (buffer_put_bignum2_ret(buffer, value) == -1)
87295367Sdes		fatal("%s: buffer error", __func__);
88162852Sdes}
89162852Sdes
90162852Sdesint
91162852Sdesbuffer_get_bignum2_ret(Buffer *buffer, BIGNUM *value)
92162852Sdes{
93295367Sdes	int ret;
94162852Sdes
95295367Sdes	if ((ret = sshbuf_get_bignum2(buffer, value)) != 0) {
96295367Sdes		error("%s: %s", __func__, ssh_err(ret));
97295367Sdes		return -1;
98162852Sdes	}
99295367Sdes	return 0;
100162852Sdes}
101162852Sdes
102162852Sdesvoid
103162852Sdesbuffer_get_bignum2(Buffer *buffer, BIGNUM *value)
104162852Sdes{
105162852Sdes	if (buffer_get_bignum2_ret(buffer, value) == -1)
106295367Sdes		fatal("%s: buffer error", __func__);
107162852Sdes}
108295367Sdes
109295367Sdes#endif /* WITH_OPENSSL */
110