diff options
author | Jack Rosenthal <jrosenth@chromium.org> | 2022-06-27 15:09:24 -0600 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-07-01 19:34:57 +0000 |
commit | 761db14ef422056e76515a2a38f848d5fb410cbb (patch) | |
tree | 9ad9e8a33539b9f1398d7e9c4a1d569fd0d14a85 /include | |
parent | c694c632168ffae9f134696088de2029720a84cf (diff) | |
download | chrome-ec-761db14ef422056e76515a2a38f848d5fb410cbb.tar.gz |
include/curve25519.h: Format with clang-format
BUG=b:236386294
BRANCH=none
TEST=none
Change-Id: I880c41231b4a941eae1d3d1fbd56a7769dc1505f
Signed-off-by: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3730238
Reviewed-by: Jeremy Bettis <jbettis@chromium.org>
Diffstat (limited to 'include')
-rw-r--r--[l---------] | include/curve25519.h | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/include/curve25519.h b/include/curve25519.h index b9943bd4ac..447790ec45 120000..100644 --- a/include/curve25519.h +++ b/include/curve25519.h @@ -1 +1,68 @@ -../third_party/boringssl/include/curve25519.h
\ No newline at end of file +/* Copyright 2017 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef __CROS_EC_CURVE25519_H +#define __CROS_EC_CURVE25519_H + +#include <stdint.h> + +/* 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_PRIVATE_KEY_LEN 32 +#define X25519_PUBLIC_VALUE_LEN 32 + +/** + * Generate a public/private key pair. + * @param out_public_value generated public key. + * @param out_private_value generated private key. + */ +void X25519_keypair(uint8_t out_public_value[32], uint8_t out_private_key[32]); + +/** + * Diffie-Hellman function. + * @param out_shared_key + * @param private_key + * @param out_public_value + * @return one on success and zero on error. + * + * X25519() writes a shared key to @out_shared_key that is calculated from the + * given private key and the peer's public value. + * + * 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[32], const uint8_t private_key[32], + const uint8_t peers_public_value[32]); + +/** + * Compute the matching public key. + * @param out_public_value computed public key. + * @param private_key private key to use. + * + * X25519_public_from_private() calculates a Diffie-Hellman public value from + * the given private key and writes it to @out_public_value. + */ +void X25519_public_from_private(uint8_t out_public_value[32], + const uint8_t private_key[32]); + +/* + * Low-level x25519 function, defined by either the generic or cortex-m0 + * implementation. Must not be called directly. + */ +void x25519_scalar_mult(uint8_t out[32], const uint8_t scalar[32], + const uint8_t point[32]); + +#endif /* __CROS_EC_CURVE25519_H */ |