1 /* $OpenBSD: dsa_meth.c,v 1.1 2018/03/17 15:19:12 tb Exp $ */
3 * Copyright (c) 2018 Theo Buehler <tb@openbsd.org>
5 * Permission to use, copy, modify, and distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
21 #include <openssl/dsa.h>
22 #include <openssl/err.h>
25 DSA_meth_new(const char *name
, int flags
)
29 if ((meth
= calloc(1, sizeof(*meth
))) == NULL
)
31 if ((meth
->name
= strdup(name
)) == NULL
) {
41 DSA_meth_free(DSA_METHOD
*meth
)
44 free((char *)meth
->name
);
50 DSA_meth_dup(const DSA_METHOD
*meth
)
54 if ((copy
= calloc(1, sizeof(*copy
))) == NULL
)
56 memcpy(copy
, meth
, sizeof(*copy
));
57 if ((copy
->name
= strdup(meth
->name
)) == NULL
) {
66 DSA_meth_set_sign(DSA_METHOD
*meth
,
67 DSA_SIG
*(*sign
)(const unsigned char *, int, DSA
*))
69 meth
->dsa_do_sign
= sign
;
74 DSA_meth_set_finish(DSA_METHOD
*meth
, int (*finish
)(DSA
*))
76 meth
->finish
= finish
;