diff options
author | Eduardo Chappa <chappa@washington.edu> | 2017-12-04 21:47:52 -0700 |
---|---|---|
committer | Eduardo Chappa <chappa@washington.edu> | 2017-12-04 21:47:52 -0700 |
commit | 04737118aa1d9ad3db63fb1064267187ae871856 (patch) | |
tree | 44e525222e947a2164bf39d642963835e7d8e5ae /libressl/include/openssl/curve25519.h | |
parent | 2e8d2c252dda9878bc7ae5bab2d455d6c04314bf (diff) | |
download | alpine-04737118aa1d9ad3db63fb1064267187ae871856.tar.xz |
* New version 2.21.99
* The online repo does not mimic the root local directory
from which it is created. This is an attempt to fix this.
This caused the problem that kerberos was not working
with the bytes on the repo, but it would work on the root
which created it. Reported by Holger Trapp.
Diffstat (limited to 'libressl/include/openssl/curve25519.h')
-rw-r--r-- | libressl/include/openssl/curve25519.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/libressl/include/openssl/curve25519.h b/libressl/include/openssl/curve25519.h new file mode 100644 index 00000000..5aaa8c08 --- /dev/null +++ b/libressl/include/openssl/curve25519.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2015, Google Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef HEADER_CURVE25519_H +#define HEADER_CURVE25519_H + +#include <stdint.h> + +#include <openssl/opensslconf.h> + +#if defined(__cplusplus) +extern "C" { +#endif + +/* + * Curve25519. + * + * Curve25519 is an elliptic curve. See https://tools.ietf.org/html/rfc7748. + */ + +/* + * X25519. + * + * X25519 is the Diffie-Hellman primitive built from curve25519. It is + * sometimes referred to as curve25519, but X25519 is a more precise name. + * See http://cr.yp.to/ecdh.html and https://tools.ietf.org/html/rfc7748. + */ + +#define X25519_KEY_LENGTH 32 + +/* + * X25519_keypair sets |out_public_value| and |out_private_key| to a freshly + * generated, public/private key pair. + */ +void X25519_keypair(uint8_t out_public_value[X25519_KEY_LENGTH], + uint8_t out_private_key[X25519_KEY_LENGTH]); + +/* + * X25519 writes a shared key to |out_shared_key| that is calculated from the + * given private key and the peer's public value. It returns one on success and + * zero on error. + * + * Don't use the shared key directly, rather use a KDF and also include the two + * public values as inputs. + */ +int X25519(uint8_t out_shared_key[X25519_KEY_LENGTH], + const uint8_t private_key[X25519_KEY_LENGTH], + const uint8_t peers_public_value[X25519_KEY_LENGTH]); + +#if defined(__cplusplus) +} /* extern C */ +#endif + +#endif /* HEADER_CURVE25519_H */ |