=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/ssh-pkcs11.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- src/usr.bin/ssh/ssh-pkcs11.c 2019/01/21 00:47:34 1.37 +++ src/usr.bin/ssh/ssh-pkcs11.c 2019/01/21 02:01:03 1.38 @@ -1,4 +1,4 @@ -/* $OpenBSD: ssh-pkcs11.c,v 1.37 2019/01/21 00:47:34 djm Exp $ */ +/* $OpenBSD: ssh-pkcs11.c,v 1.38 2019/01/21 02:01:03 djm Exp $ */ /* * Copyright (c) 2010 Markus Friedl. All rights reserved. * Copyright (c) 2014 Pedro Martelletto. All rights reserved. @@ -180,6 +180,11 @@ } #ifdef HAVE_DLOPEN +static RSA_METHOD *rsa_method; +static int rsa_idx = 0; +static EC_KEY_METHOD *ec_key_method; +static int ec_key_idx = 0; + /* release a wrapped object */ static void pkcs11_k11_free(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int idx, @@ -321,7 +326,7 @@ CK_RV rv; int rval = -1; - if ((k11 = RSA_get_ex_data(rsa, 0)) == NULL) { + if ((k11 = RSA_get_ex_data(rsa, rsa_idx)) == NULL) { error("RSA_get_ex_data failed for rsa %p", rsa); return (-1); } @@ -352,9 +357,6 @@ return (-1); } -static RSA_METHOD *rsa_method; -static int rsa_idx = 0; - static int pkcs11_rsa_start_wrapper(void) { @@ -416,7 +418,7 @@ u_char *sig; BIGNUM *r = NULL, *s = NULL; - if ((k11 = EC_KEY_get_ex_data(ec, 0)) == NULL) { + if ((k11 = EC_KEY_get_ex_data(ec, ec_key_idx)) == NULL) { ossl_error("EC_KEY_get_key_method_data failed for ec"); return (NULL); } @@ -469,9 +471,6 @@ return (ret); } - -static EC_KEY_METHOD *ec_key_method; -static int ec_key_idx = 0; static int pkcs11_ecdsa_start_wrapper(void)