summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/ec
diff options
context:
space:
mode:
authortb <>2023-07-28 09:16:17 +0000
committertb <>2023-07-28 09:16:17 +0000
commite6ec7919f70f22021fc29a98f165fd18d5a7ccd0 (patch)
treea83e66610995e8159b7ddb9a9fef83087d8709a4 /src/lib/libcrypto/ec
parent5fdc6aff8969f405877cb212f681afded1f948e6 (diff)
downloadopenbsd-e6ec7919f70f22021fc29a98f165fd18d5a7ccd0.tar.gz
openbsd-e6ec7919f70f22021fc29a98f165fd18d5a7ccd0.tar.bz2
openbsd-e6ec7919f70f22021fc29a98f165fd18d5a7ccd0.zip
Merge ecdsa.h into ec.h
Move the remaining ECDSA API into ec.h to match OpenSSL 1.1's interface better. In particular, the EC_KEY sign and verify method accessors are moved to the right header. Whether the rest of the ECDSA stuff belongs there is debatable, but that was upstream's choice. ok jsing
Diffstat (limited to 'src/lib/libcrypto/ec')
-rw-r--r--src/lib/libcrypto/ec/ec.h51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/lib/libcrypto/ec/ec.h b/src/lib/libcrypto/ec/ec.h
index f711d55050..aac3537655 100644
--- a/src/lib/libcrypto/ec/ec.h
+++ b/src/lib/libcrypto/ec/ec.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ec.h,v 1.42 2023/07/05 17:10:10 tb Exp $ */ 1/* $OpenBSD: ec.h,v 1.43 2023/07/28 09:16:17 tb Exp $ */
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
@@ -326,6 +326,31 @@ void EC_KEY_set_default_method(const EC_KEY_METHOD *meth);
326const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); 326const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key);
327int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); 327int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth);
328EC_KEY *EC_KEY_new_method(ENGINE *engine); 328EC_KEY *EC_KEY_new_method(ENGINE *engine);
329
330typedef struct ECDSA_SIG_st ECDSA_SIG;
331
332ECDSA_SIG *ECDSA_SIG_new(void);
333void ECDSA_SIG_free(ECDSA_SIG *sig);
334int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp);
335ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len);
336
337const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig);
338const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig);
339void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps);
340int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s);
341
342int ECDSA_size(const EC_KEY *eckey);
343
344ECDSA_SIG *ECDSA_do_sign(const unsigned char *digest, int digest_len,
345 EC_KEY *eckey);
346int ECDSA_do_verify(const unsigned char *digest, int digest_len,
347 const ECDSA_SIG *sig, EC_KEY *eckey);
348
349int ECDSA_sign(int type, const unsigned char *digest, int digest_len,
350 unsigned char *signature, unsigned int *signature_len, EC_KEY *eckey);
351int ECDSA_verify(int type, const unsigned char *digest, int digest_len,
352 const unsigned char *signature, int signature_len, EC_KEY *eckey);
353
329EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); 354EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth);
330void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); 355void EC_KEY_METHOD_free(EC_KEY_METHOD *meth);
331void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, 356void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth,
@@ -340,6 +365,18 @@ void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth,
340void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, 365void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth,
341 int (*ckey)(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh, 366 int (*ckey)(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,
342 void *(*KDF) (const void *in, size_t inlen, void *out, size_t *outlen))); 367 void *(*KDF) (const void *in, size_t inlen, void *out, size_t *outlen)));
368void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth,
369 int (*sign)(int type, const unsigned char *digest, int digest_len,
370 unsigned char *signature, unsigned int *signature_len,
371 const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey),
372 int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp),
373 ECDSA_SIG *(*sign_sig)(const unsigned char *digest, int digest_len,
374 const BIGNUM *in_kinv, const BIGNUM *in_r, EC_KEY *eckey));
375void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth,
376 int (*verify)(int type, const unsigned char *digest, int digest_len,
377 const unsigned char *signature, int signature_len, EC_KEY *eckey),
378 int (*verify_sig)(const unsigned char *digest, int digest_len,
379 const ECDSA_SIG *sig, EC_KEY *eckey));
343void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, 380void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth,
344 int (**pinit)(EC_KEY *key), 381 int (**pinit)(EC_KEY *key),
345 void (**pfinish)(EC_KEY *key), 382 void (**pfinish)(EC_KEY *key),
@@ -352,6 +389,18 @@ void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth,
352void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, 389void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth,
353 int (**pck)(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh, 390 int (**pck)(void *out, size_t outlen, const EC_POINT *pub_key, EC_KEY *ecdh,
354 void *(*KDF) (const void *in, size_t inlen, void *out, size_t *outlen))); 391 void *(*KDF) (const void *in, size_t inlen, void *out, size_t *outlen)));
392void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth,
393 int (**psign)(int type, const unsigned char *digest, int digest_len,
394 unsigned char *signature, unsigned int *signature_len,
395 const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey),
396 int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp),
397 ECDSA_SIG *(**psign_sig)(const unsigned char *digest, int digest_len,
398 const BIGNUM *in_kinv, const BIGNUM *in_r, EC_KEY *eckey));
399void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth,
400 int (**pverify)(int type, const unsigned char *digest, int digest_len,
401 const unsigned char *signature, int signature_len, EC_KEY *eckey),
402 int (**pverify_sig)(const unsigned char *digest, int digest_len,
403 const ECDSA_SIG *sig, EC_KEY *eckey));
355 404
356EC_KEY *ECParameters_dup(EC_KEY *key); 405EC_KEY *ECParameters_dup(EC_KEY *key);
357 406