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