diff options
Diffstat (limited to 'src/util/crypto/nss/nss_util.c')
-rw-r--r-- | src/util/crypto/nss/nss_util.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/util/crypto/nss/nss_util.c b/src/util/crypto/nss/nss_util.c new file mode 100644 index 000000000..59390eb96 --- /dev/null +++ b/src/util/crypto/nss/nss_util.c @@ -0,0 +1,74 @@ +/* + SSSD + + NSS crypto wrappers + + Authors: + Sumit Bose <sbose@redhat.com> + Jakub Hrozek <jhrozek@redhat.com> + + Copyright (C) Red Hat, Inc 2010 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#include "config.h" + +#include <prinit.h> +#include <prerror.h> +#include <nss.h> +#include <pk11func.h> + +#include "util/util.h" + +static int nspr_nss_init_done = 0; + +int nspr_nss_init(void) +{ + SECStatus sret; + + /* nothing to do */ + if (nspr_nss_init_done == 1) return SECSuccess; + + PR_Init(PR_USER_THREAD, PR_PRIORITY_NORMAL, 0); + + sret = NSS_NoDB_Init(NULL); + if (sret != SECSuccess) { + DEBUG(1, ("Error initializing connection to NSS [%d]\n", + PR_GetError())); + return EIO; + } + + nspr_nss_init_done = 1; + return EOK; +} + +int nspr_nss_cleanup(void) +{ + SECStatus sret; + + /* nothing to do */ + if (nspr_nss_init_done == 0) return SECSuccess; + + sret = NSS_Shutdown(); + if (sret != SECSuccess) { + DEBUG(1, ("Error shutting down connection to NSS [%d]\n", + PR_GetError())); + return EIO; + } + + PR_Cleanup(); + nspr_nss_init_done = 0; + return EOK; +} |