asn1_item_embed_new(): don't free an embedded item
[openssl.git] / crypto / ecdh / ecdh.h
index 1a62a214b3d4bc3403168851668aec63050e7e05..25348b30fe7cf48f9e5a4f1849f5ec960fff18b9 100644 (file)
@@ -21,7 +21,7 @@
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
+ *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
  *
  */
 #ifndef HEADER_ECDH_H
-#define HEADER_ECDH_H
+# define HEADER_ECDH_H
 
-#include <openssl/opensslconf.h>
+# include <openssl/opensslconf.h>
 
-#ifdef OPENSSL_NO_ECDH
-#error ECDH is disabled.
-#endif
+# ifdef OPENSSL_NO_ECDH
+#  error ECDH is disabled.
+# endif
 
-#include <openssl/bn.h>
-#include <openssl/ec.h>
-#include <openssl/ossl_typ.h>
+# include <openssl/ec.h>
+# include <openssl/ossl_typ.h>
+# ifndef OPENSSL_NO_DEPRECATED
+#  include <openssl/bn.h>
+# endif
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-/* Already defined in ossl_typ.h */
-/* typedef struct ecdh_method ECDH_METHOD; */
-
-struct ecdh_method 
-       {
-       const char *name;
-       int (*compute_key)(void *key, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,
-                          void *(*KDF)(void *in, size_t inlen, void *out, size_t outlen));
-#if 0
-       int (*init)(EC_KEY *eckey);
-       int (*finish)(EC_KEY *eckey);
-#endif
-       int flags;
-       char *app_data;
-       };
-
-typedef struct ecdh_data_st {
-       /* EC_KEY_METH_DATA part */
-       int (*init)(EC_KEY *);
-       void (*finish)(EC_KEY *);
-       /* method specific part */
-       ENGINE  *engine;
-       int     flags;
-       const ECDH_METHOD *meth;
-       CRYPTO_EX_DATA ex_data;
-} ECDH_DATA; 
-
-/* ECDH_DATA functions */
-ECDH_DATA *ECDH_DATA_new(void);
-ECDH_DATA *ECDH_DATA_new_method(ENGINE *);
-void ECDH_DATA_free(ECDH_DATA *);
-
-ECDH_DATA *ecdh_check(EC_KEY *);
-
+# define EC_FLAG_COFACTOR_ECDH   0x1000
 
 const ECDH_METHOD *ECDH_OpenSSL(void);
 
-void     ECDH_set_default_method(const ECDH_METHOD *);
+void ECDH_set_default_method(const ECDH_METHOD *);
 const ECDH_METHOD *ECDH_get_default_method(void);
-int      ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
+int ECDH_set_method(EC_KEY *, const ECDH_METHOD *);
 
-int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,
-                     void *(*KDF)(void *in, size_t inlen, void *out, size_t outlen));
+int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
+                     EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen,
+                                                 void *out, size_t *outlen));
 
-int      ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new 
-               *new_func, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func);
-int      ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
-void     *ECDH_get_ex_data(EC_KEY *d, int idx);
+int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new
+                          *new_func, CRYPTO_EX_dup *dup_func,
+                          CRYPTO_EX_free *free_func);
+int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg);
+void *ECDH_get_ex_data(EC_KEY *d, int idx);
 
+int ECDH_KDF_X9_62(unsigned char *out, size_t outlen,
+                   const unsigned char *Z, size_t Zlen,
+                   const unsigned char *sinfo, size_t sinfolen,
+                   const EVP_MD *md);
 
 /* BEGIN ERROR CODES */
-/* The following lines are auto generated by the script mkerr.pl. Any changes
+/*
+ * The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.
  */
 void ERR_load_ECDH_strings(void);
@@ -142,13 +118,15 @@ void ERR_load_ECDH_strings(void);
 /* Error codes for the ECDH functions. */
 
 /* Function codes. */
-#define ECDH_F_ECDH_COMPUTE_KEY                                 100
-#define ECDH_F_ECDH_DATA_NEW                            101
+# define ECDH_F_ECDH_CHECK                                102
+# define ECDH_F_ECDH_COMPUTE_KEY                          100
+# define ECDH_F_ECDH_DATA_NEW_METHOD                      101
 
 /* Reason codes. */
-#define ECDH_R_KDF_FAILED                               102
-#define ECDH_R_NO_PRIVATE_VALUE                                 100
-#define ECDH_R_POINT_ARITHMETIC_FAILURE                         101
+# define ECDH_R_KDF_FAILED                                102
+# define ECDH_R_NON_FIPS_METHOD                           103
+# define ECDH_R_NO_PRIVATE_VALUE                          100
+# define ECDH_R_POINT_ARITHMETIC_FAILURE                  101
 
 #ifdef  __cplusplus
 }