blob: 749ce9d4c2a6ec18494a705d9ed5f944ecce4a3e [file] [log] [blame]
Adam Langleyd0592972015-03-30 14:49:51 -07001/* $OpenBSD: bufec.c,v 1.4 2014/04/30 05:29:56 djm Exp $ */
2
Greg Hartmanbd77cf72015-02-25 13:21:06 -08003/*
Adam Langleyd0592972015-03-30 14:49:51 -07004 * Copyright (c) 2012 Damien Miller <djm@mindrot.org>
Greg Hartmanbd77cf72015-02-25 13:21:06 -08005 *
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 */
18
Adam Langleyd0592972015-03-30 14:49:51 -070019/* Emulation wrappers for legacy OpenSSH buffer API atop sshbuf */
Greg Hartmanbd77cf72015-02-25 13:21:06 -080020
Adam Langleyd0592972015-03-30 14:49:51 -070021#include "includes.h"
Greg Hartmanbd77cf72015-02-25 13:21:06 -080022
23#include <sys/types.h>
24
Greg Hartmanbd77cf72015-02-25 13:21:06 -080025#include "buffer.h"
26#include "log.h"
Adam Langleyd0592972015-03-30 14:49:51 -070027#include "ssherr.h"
Greg Hartmanbd77cf72015-02-25 13:21:06 -080028
Adam Langleyd0592972015-03-30 14:49:51 -070029#ifdef OPENSSL_HAS_ECC
Greg Hartmanbd77cf72015-02-25 13:21:06 -080030
Greg Hartmanbd77cf72015-02-25 13:21:06 -080031int
32buffer_put_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve,
33 const EC_POINT *point)
34{
Adam Langleyd0592972015-03-30 14:49:51 -070035 int ret;
Greg Hartmanbd77cf72015-02-25 13:21:06 -080036
Adam Langleyd0592972015-03-30 14:49:51 -070037 if ((ret = sshbuf_put_ec(buffer, point, curve)) != 0) {
38 error("%s: %s", __func__, ssh_err(ret));
39 return -1;
Greg Hartmanbd77cf72015-02-25 13:21:06 -080040 }
Adam Langleyd0592972015-03-30 14:49:51 -070041 return 0;
Greg Hartmanbd77cf72015-02-25 13:21:06 -080042}
43
44void
45buffer_put_ecpoint(Buffer *buffer, const EC_GROUP *curve,
46 const EC_POINT *point)
47{
48 if (buffer_put_ecpoint_ret(buffer, curve, point) == -1)
49 fatal("%s: buffer error", __func__);
50}
51
52int
53buffer_get_ecpoint_ret(Buffer *buffer, const EC_GROUP *curve,
54 EC_POINT *point)
55{
Adam Langleyd0592972015-03-30 14:49:51 -070056 int ret;
Greg Hartmanbd77cf72015-02-25 13:21:06 -080057
Adam Langleyd0592972015-03-30 14:49:51 -070058 if ((ret = sshbuf_get_ec(buffer, point, curve)) != 0) {
59 error("%s: %s", __func__, ssh_err(ret));
Greg Hartmanbd77cf72015-02-25 13:21:06 -080060 return -1;
61 }
Adam Langleyd0592972015-03-30 14:49:51 -070062 return 0;
Greg Hartmanbd77cf72015-02-25 13:21:06 -080063}
64
65void
66buffer_get_ecpoint(Buffer *buffer, const EC_GROUP *curve,
67 EC_POINT *point)
68{
69 if (buffer_get_ecpoint_ret(buffer, curve, point) == -1)
70 fatal("%s: buffer error", __func__);
71}
72
73#endif /* OPENSSL_HAS_ECC */
Adam Langleyd0592972015-03-30 14:49:51 -070074