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