blob: 127e56d43a6f53c3a17a8ca6be83d7ad49006a75 [file] [log] [blame]
Damien Miller05e82c32014-05-15 14:33:43 +10001/* $OpenBSD: bufec.c,v 1.4 2014/04/30 05:29:56 djm Exp $ */
2
Damien Millereb8b60e2010-08-31 22:41:14 +10003/*
Damien Miller05e82c32014-05-15 14:33:43 +10004 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
Damien Millereb8b60e2010-08-31 22:41:14 +10005 *
6 * Permission to use, copy, modify, and distribute this software for any
7 * purpose with or without fee is hereby granted, provided that the above
8 * copyright notice and this permission notice appear in all copies.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
Damien Millerc79ff072010-08-31 22:50:48 +100018
Damien Miller05e82c32014-05-15 14:33:43 +100019/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
Damien Miller6af914a2010-09-10 11:39:26 +100020
Darren Tucker58538d72014-06-11 13:39:24 +100021#include "includes.h"
22
Damien Millereb8b60e2010-08-31 22:41:14 +100023#include <sys/types.h>
24
Damien Millereb8b60e2010-08-31 22:41:14 +100025#include "buffer.h"
26#include "log.h"
Damien Miller05e82c32014-05-15 14:33:43 +100027#include "ssherr.h"
Damien Millereb8b60e2010-08-31 22:41:14 +100028
Damien Millereb8b60e2010-08-31 22:41:14 +100029int
30buffer_put_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve,
31 const EC_POINT *point)
32{
Damien Miller05e82c32014-05-15 14:33:43 +100033 int ret;
Damien Millereb8b60e2010-08-31 22:41:14 +100034
Damien Miller05e82c32014-05-15 14:33:43 +100035 if ((ret = sshbuf_put_ec(buffer, point, curve)) != 0) {
36 error("%s: %s", __func__, ssh_err(ret));
37 return -1;
Damien Millereb8b60e2010-08-31 22:41:14 +100038 }
Damien Miller05e82c32014-05-15 14:33:43 +100039 return 0;
Damien Millereb8b60e2010-08-31 22:41:14 +100040}
41
42void
43buffer_put_ecpoint(Buffer *buffer, const EC_GROUP *curve,
44 const EC_POINT *point)
45{
46 if (buffer_put_ecpoint_ret(buffer, curve, point) == -1)
47 fatal("%s: buffer error", __func__);
48}
49
50int
51buffer_get_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve,
52 EC_POINT *point)
53{
Damien Miller05e82c32014-05-15 14:33:43 +100054 int ret;
Damien Millereb8b60e2010-08-31 22:41:14 +100055
Damien Miller05e82c32014-05-15 14:33:43 +100056 if ((ret = sshbuf_get_ec(buffer, point, curve)) != 0) {
57 error("%s: %s", __func__, ssh_err(ret));
Damien Millereb8b60e2010-08-31 22:41:14 +100058 return -1;
59 }
Damien Miller05e82c32014-05-15 14:33:43 +100060 return 0;
Damien Millereb8b60e2010-08-31 22:41:14 +100061}
62
63void
64buffer_get_ecpoint(Buffer *buffer, const EC_GROUP *curve,
65 EC_POINT *point)
66{
67 if (buffer_get_ecpoint_ret(buffer, curve, point) == -1)
68 fatal("%s: buffer error", __func__);
69}
70
Damien Miller05e82c32014-05-15 14:33:43 +100071