Manual formatting tweaks to Curve448 code
[openssl.git] / crypto / ec / curve448 / ed448.h
index a8064bec7d8b7a371016fe1b8450d2247edbb523..f710dc5618362724e41a1480dd7c32d3a467d955 100644 (file)
 extern "C" {
 #endif
 
 extern "C" {
 #endif
 
-/** Number of bytes in an EdDSA public key. */
+/* Number of bytes in an EdDSA public key. */
 # define DECAF_EDDSA_448_PUBLIC_BYTES 57
 
 # define DECAF_EDDSA_448_PUBLIC_BYTES 57
 
-/** Number of bytes in an EdDSA private key. */
+/* Number of bytes in an EdDSA private key. */
 # define DECAF_EDDSA_448_PRIVATE_BYTES DECAF_EDDSA_448_PUBLIC_BYTES
 
 # define DECAF_EDDSA_448_PRIVATE_BYTES DECAF_EDDSA_448_PUBLIC_BYTES
 
-/** Number of bytes in an EdDSA private key. */
-# define DECAF_EDDSA_448_SIGNATURE_BYTES (DECAF_EDDSA_448_PUBLIC_BYTES + DECAF_EDDSA_448_PRIVATE_BYTES)
+/* Number of bytes in an EdDSA private key. */
+# define DECAF_EDDSA_448_SIGNATURE_BYTES (DECAF_EDDSA_448_PUBLIC_BYTES + \
+                                          DECAF_EDDSA_448_PRIVATE_BYTES)
 
 
-/** Does EdDSA support non-contextual signatures? */
+/* Does EdDSA support non-contextual signatures? */
 # define DECAF_EDDSA_448_SUPPORTS_CONTEXTLESS_SIGS 0
 
 # define DECAF_EDDSA_448_SUPPORTS_CONTEXTLESS_SIGS 0
 
-/** EdDSA encoding ratio. */
+/* EdDSA encoding ratio. */
 # define DECAF_448_EDDSA_ENCODE_RATIO 4
 
 # define DECAF_448_EDDSA_ENCODE_RATIO 4
 
-/** EdDSA decoding ratio. */
+/* EdDSA decoding ratio. */
 # define DECAF_448_EDDSA_DECODE_RATIO (4 / 4)
 
 # define DECAF_448_EDDSA_DECODE_RATIO (4 / 4)
 
-/**
- * @brief EdDSA key generation.  This function uses a different (non-Decaf)
- * encoding.
+/*
+ * EdDSA key generation.  This function uses a different (non-Decaf) encoding.
  *
  *
- * @param [out] pubkey The public key.
- * @param [in] privkey The private key.
+ * pubkey (out): The public key.
+ * privkey (in): The private key.
  */
  */
-decaf_error_t decaf_ed448_derive_public_key(uint8_t
-                                            pubkey
-                                            [DECAF_EDDSA_448_PUBLIC_BYTES],
-                                            const uint8_t
-                                            privkey
-                                            [DECAF_EDDSA_448_PRIVATE_BYTES]
-    );
-
-/**
- * @brief EdDSA signing.
- *
- * @param [out] signature The signature.
- * @param [in] privkey The private key.
- * @param [in] pubkey The public key.
- * @param [in] message The message to sign.
- * @param [in] message_len The length of the message.
- * @param [in] prehashed Nonzero if the message is actually the hash of something you want to sign.
- * @param [in] context A "context" for this signature of up to 255 bytes.
- * @param [in] context_len Length of the context.
- *
- * @warning For Ed25519, it is unsafe to use the same key for both prehashed and non-prehashed
- * messages, at least without some very careful protocol-level disambiguation.  For Ed448 it is
- * safe.  The C++ wrapper is designed to make it harder to screw this up, but this C code gives
- * you no seat belt.
+decaf_error_t decaf_ed448_derive_public_key(
+                        uint8_t pubkey [DECAF_EDDSA_448_PUBLIC_BYTES],
+                        const uint8_t privkey [DECAF_EDDSA_448_PRIVATE_BYTES]);
+
+/*
+ * EdDSA signing.
+ *
+ * signature (out): The signature.
+ * privkey (in): The private key.
+ * pubkey (in):  The public key.
+ * message (in):  The message to sign.
+ * message_len (in):  The length of the message.
+ * prehashed (in):  Nonzero if the message is actually the hash of something
+ *                  you want to sign.
+ * context (in):  A "context" for this signature of up to 255 bytes.
+ * context_len (in):  Length of the context.
+ *
+ * For Ed25519, it is unsafe to use the same key for both prehashed and
+ * non-prehashed messages, at least without some very careful protocol-level
+ * disambiguation.  For Ed448 it is safe.  The C++ wrapper is designed to make
+ * it harder to screw this up, but this C code gives you no seat belt.
  */
  */
-decaf_error_t decaf_ed448_sign(uint8_t
-                               signature[DECAF_EDDSA_448_SIGNATURE_BYTES],
-                               const uint8_t
-                               privkey[DECAF_EDDSA_448_PRIVATE_BYTES],
-                               const uint8_t
-                               pubkey[DECAF_EDDSA_448_PUBLIC_BYTES],
-                               const uint8_t *message, size_t message_len,
-                               uint8_t prehashed, const uint8_t *context,
-                               size_t context_len)
-    __attribute__ ((nonnull(1, 2, 3)));
-
-/**
- * @brief EdDSA signing with prehash.
- *
- * @param [out] signature The signature.
- * @param [in] privkey The private key.
- * @param [in] pubkey The public key.
- * @param [in] hash The hash of the message.  This object will not be modified by the call.
- * @param [in] context A "context" for this signature of up to 255 bytes.  Must be the same as what was used for the prehash.
- * @param [in] context_len Length of the context.
- *
- * @warning For Ed25519, it is unsafe to use the same key for both prehashed and non-prehashed
- * messages, at least without some very careful protocol-level disambiguation.  For Ed448 it is
- * safe.  The C++ wrapper is designed to make it harder to screw this up, but this C code gives
- * you no seat belt.
+decaf_error_t decaf_ed448_sign(
+                        uint8_t signature[DECAF_EDDSA_448_SIGNATURE_BYTES],
+                        const uint8_t privkey[DECAF_EDDSA_448_PRIVATE_BYTES],
+                        const uint8_t pubkey[DECAF_EDDSA_448_PUBLIC_BYTES],
+                        const uint8_t *message, size_t message_len,
+                        uint8_t prehashed, const uint8_t *context,
+                        size_t context_len)
+                        __attribute__ ((nonnull(1, 2, 3)));
+
+/*
+ * EdDSA signing with prehash.
+ *
+ * signature (out): The signature.
+ * privkey (in): The private key.
+ * pubkey (in): The public key.
+ * hash (in): The hash of the message.  This object will not be modified by the
+ *            call.
+ * context (in): A "context" for this signature of up to 255 bytes.  Must be the
+ *               same as what was used for the prehash.
+ * context_len (in): Length of the context.
+ *
+ * For Ed25519, it is unsafe to use the same key for both prehashed and
+ * non-prehashed messages, at least without some very careful protocol-level
+ * disambiguation.  For Ed448 it is safe.  The C++ wrapper is designed to make
+ * it harder to screw this up, but this C code gives you no seat belt.
  */
  */
-decaf_error_t decaf_ed448_sign_prehash(uint8_t
-                                       signature
-                                       [DECAF_EDDSA_448_SIGNATURE_BYTES],
-                                       const uint8_t
-                                       privkey[DECAF_EDDSA_448_PRIVATE_BYTES],
-                                       const uint8_t
-                                       pubkey[DECAF_EDDSA_448_PUBLIC_BYTES],
-                                       const uint8_t hash[64],
-                                       const uint8_t *context,
-                                       size_t context_len)
-    __attribute__ ((nonnull(1, 2, 3, 4)));
-
-/**
- * @brief EdDSA signature verification.
+decaf_error_t decaf_ed448_sign_prehash(
+                        uint8_t signature[DECAF_EDDSA_448_SIGNATURE_BYTES],
+                        const uint8_t privkey[DECAF_EDDSA_448_PRIVATE_BYTES],
+                        const uint8_t pubkey[DECAF_EDDSA_448_PUBLIC_BYTES],
+                        const uint8_t hash[64],
+                        const uint8_t *context,
+                        size_t context_len)
+                        __attribute__ ((nonnull(1, 2, 3, 4)));
+
+/*
+ * EdDSA signature verification.
  *
  * Uses the standard (i.e. less-strict) verification formula.
  *
  *
  * Uses the standard (i.e. less-strict) verification formula.
  *
- * @param [in] signature The signature.
- * @param [in] pubkey The public key.
- * @param [in] message The message to verify.
- * @param [in] message_len The length of the message.
- * @param [in] prehashed Nonzero if the message is actually the hash of something you want to verify.
- * @param [in] context A "context" for this signature of up to 255 bytes.
- * @param [in] context_len Length of the context.
- *
- * @warning For Ed25519, it is unsafe to use the same key for both prehashed and non-prehashed
- * messages, at least without some very careful protocol-level disambiguation.  For Ed448 it is
- * safe.  The C++ wrapper is designed to make it harder to screw this up, but this C code gives
- * you no seat belt.
+ * signature (in): The signature.
+ * pubkey (in): The public key.
+ * message (in): The message to verify.
+ * message_len (in): The length of the message.
+ * prehashed (in): Nonzero if the message is actually the hash of something you
+ *                 want to verify.
+ * context (in): A "context" for this signature of up to 255 bytes.
+ * context_len (in): Length of the context.
+ *
+ * For Ed25519, it is unsafe to use the same key for both prehashed and
+ * non-prehashed messages, at least without some very careful protocol-level
+ * disambiguation.  For Ed448 it is safe.  The C++ wrapper is designed to make
+ * it harder to screw this up, but this C code gives you no seat belt.
  */
 decaf_error_t decaf_ed448_verify(const uint8_t
                                  signature[DECAF_EDDSA_448_SIGNATURE_BYTES],
  */
 decaf_error_t decaf_ed448_verify(const uint8_t
                                  signature[DECAF_EDDSA_448_SIGNATURE_BYTES],
@@ -132,36 +127,36 @@ decaf_error_t decaf_ed448_verify(const uint8_t
                                  const uint8_t *message, size_t message_len,
                                  uint8_t prehashed, const uint8_t *context,
                                  uint8_t context_len)
                                  const uint8_t *message, size_t message_len,
                                  uint8_t prehashed, const uint8_t *context,
                                  uint8_t context_len)
-    __attribute__ ((nonnull(1, 2)));
+                                 __attribute__ ((nonnull(1, 2)));
 
 
-/**
- * @brief EdDSA signature verification.
+/*
+ * EdDSA signature verification.
  *
  * Uses the standard (i.e. less-strict) verification formula.
  *
  *
  * Uses the standard (i.e. less-strict) verification formula.
  *
- * @param [in] signature The signature.
- * @param [in] pubkey The public key.
- * @param [in] hash The hash of the message.  This object will not be modified by the call.
- * @param [in] context A "context" for this signature of up to 255 bytes.  Must be the same as what was used for the prehash.
- * @param [in] context_len Length of the context.
- *
- * @warning For Ed25519, it is unsafe to use the same key for both prehashed and non-prehashed
- * messages, at least without some very careful protocol-level disambiguation.  For Ed448 it is
- * safe.  The C++ wrapper is designed to make it harder to screw this up, but this C code gives
- * you no seat belt.
+ * signature (in): The signature.
+ * pubkey (in): The public key.
+ * hash (in): The hash of the message.  This object will not be modified by the
+ *            call.
+ * context (in): A "context" for this signature of up to 255 bytes.  Must be the
+ *               same as what was used for the prehash.
+ * context_len (in): Length of the context.
+ *
+ * For Ed25519, it is unsafe to use the same key for both prehashed and
+ * non-prehashed messages, at least without some very careful protocol-level
+ * disambiguation.  For Ed448 it is safe.  The C++ wrapper is designed to make
+ * it harder to screw this up, but this C code gives you no seat belt.
  */
  */
-decaf_error_t decaf_ed448_verify_prehash(const uint8_t
-                                         signature
-                                         [DECAF_EDDSA_448_SIGNATURE_BYTES],
-                                         const uint8_t
-                                         pubkey[DECAF_EDDSA_448_PUBLIC_BYTES],
-                                         const uint8_t hash[64],
-                                         const uint8_t *context,
-                                         uint8_t context_len)
-    __attribute__ ((nonnull(1, 2)));
-
-/**
- * @brief EdDSA point encoding.  Used internally, exposed externally.
+decaf_error_t decaf_ed448_verify_prehash(
+                    const uint8_t signature[DECAF_EDDSA_448_SIGNATURE_BYTES],
+                    const uint8_t pubkey[DECAF_EDDSA_448_PUBLIC_BYTES],
+                    const uint8_t hash[64],
+                    const uint8_t *context,
+                    uint8_t context_len)
+                    __attribute__ ((nonnull(1, 2)));
+
+/*
+ * EdDSA point encoding.  Used internally, exposed externally.
  * Multiplies by DECAF_448_EDDSA_ENCODE_RATIO first.
  *
  * The multiplication is required because the EdDSA encoding represents
  * Multiplies by DECAF_448_EDDSA_ENCODE_RATIO first.
  *
  * The multiplication is required because the EdDSA encoding represents
@@ -181,62 +176,52 @@ decaf_error_t decaf_ed448_verify_prehash(const uint8_t
  * this function, you will get DECAF_448_EDDSA_ENCODE_RATIO times the
  * EdDSA base point.
  *
  * this function, you will get DECAF_448_EDDSA_ENCODE_RATIO times the
  * EdDSA base point.
  *
- * @param [out] enc The encoded point.
- * @param [in] p The point.
+ * enc (out): The encoded point.
+ * p (in): The point.
  */
  */
-void curve448_point_mul_by_ratio_and_encode_like_eddsa(uint8_t
-                                                       enc
-                                                       [DECAF_EDDSA_448_PUBLIC_BYTES],
-                                                       const curve448_point_t
-                                                       p);
+void curve448_point_mul_by_ratio_and_encode_like_eddsa(
+                                    uint8_t enc [DECAF_EDDSA_448_PUBLIC_BYTES],
+                                    const curve448_point_t p);
 
 
-/**
- * @brief EdDSA point decoding.  Multiplies by DECAF_448_EDDSA_DECODE_RATIO,
- * and ignores cofactor information.
+/*
+ * EdDSA point decoding.  Multiplies by DECAF_448_EDDSA_DECODE_RATIO, and
+ * ignores cofactor information.
  *
  * See notes on curve448_point_mul_by_ratio_and_encode_like_eddsa
  *
  *
  * See notes on curve448_point_mul_by_ratio_and_encode_like_eddsa
  *
- * @param [out] enc The encoded point.
- * @param [in] p The point.
+ * enc (out): The encoded point.
+ * p (in): The point.
  */
  */
-decaf_error_t curve448_point_decode_like_eddsa_and_mul_by_ratio(curve448_point_t
-                                                                p,
-                                                                const uint8_t
-                                                                enc
-                                                                [DECAF_EDDSA_448_PUBLIC_BYTES]
-    );
-
-/**
- * @brief EdDSA to ECDH public key conversion
+decaf_error_t curve448_point_decode_like_eddsa_and_mul_by_ratio(
+                            curve448_point_t p,
+                            const uint8_t enc[DECAF_EDDSA_448_PUBLIC_BYTES]);
+
+/*
+ * EdDSA to ECDH public key conversion
  * Deserialize the point to get y on Edwards curve,
  * Convert it to u coordinate on Montgomery curve.
  *
  * Deserialize the point to get y on Edwards curve,
  * Convert it to u coordinate on Montgomery curve.
  *
- * @warning This function does not check that the public key being converted
- * is a valid EdDSA public key (FUTURE?)
+ * This function does not check that the public key being converted is a valid
+ * EdDSA public key (FUTURE?)
  *
  *
- * @param[out] x The ECDH public key as in RFC7748(point on Montgomery curve)
- * @param[in] ed The EdDSA public key(point on Edwards curve)
+ * x (out): The ECDH public key as in RFC7748(point on Montgomery curve)
+ * ed (in): The EdDSA public key(point on Edwards curve)
  */
  */
-void decaf_ed448_convert_public_key_to_x448(uint8_t x[DECAF_X448_PUBLIC_BYTES],
-                                            const uint8_t
-                                            ed[DECAF_EDDSA_448_PUBLIC_BYTES]
-    );
+void decaf_ed448_convert_public_key_to_x448(
+                                uint8_t x[DECAF_X448_PUBLIC_BYTES],
+                                const uint8_t ed[DECAF_EDDSA_448_PUBLIC_BYTES]);
 
 
-/**
- * @brief EdDSA to ECDH private key conversion
+/*
+ * EdDSA to ECDH private key conversion
  * Using the appropriate hash function, hash the EdDSA private key
  * and keep only the lower bytes to get the ECDH private key
  *
  * Using the appropriate hash function, hash the EdDSA private key
  * and keep only the lower bytes to get the ECDH private key
  *
- * @param[out] x The ECDH private key as in RFC7748
- * @param[in] ed The EdDSA private key
+ * x (out): The ECDH private key as in RFC7748
+ * ed (in): The EdDSA private key
  */
  */
-decaf_error_t decaf_ed448_convert_private_key_to_x448(uint8_t
-                                                      x
-                                                      [DECAF_X448_PRIVATE_BYTES],
-                                                      const uint8_t
-                                                      ed
-                                                      [DECAF_EDDSA_448_PRIVATE_BYTES]
-    );
+decaf_error_t decaf_ed448_convert_private_key_to_x448(
+                            uint8_t x[DECAF_X448_PRIVATE_BYTES],
+                            const uint8_t ed[DECAF_EDDSA_448_PRIVATE_BYTES]);
 
 #ifdef __cplusplus
 } /* extern "C" */
 
 #ifdef __cplusplus
 } /* extern "C" */