handle>> EVP_MD_CTX_destroy ;
: with-evp-md-context ( quot -- )
- [ <evp-md-context> ] dip with-disposal ; inline
+ maybe-init-ssl [ <evp-md-context> ] dip with-disposal ; inline
: digest-named ( name -- md )
dup EVP_get_digestbyname
! Copyright (C) 2007, 2008, Slava Pestov, Elie CHAFTARI.
! See http://factorcode.org/license.txt for BSD license.
-USING: init kernel openssl.libcrypto openssl.libssl sequences ;
+USING: init kernel namespaces openssl.libcrypto openssl.libssl
+sequences ;
IN: openssl
! This code is based on http://www.rtfm.com/openssl-examples/
OpenSSL_add_all_digests
OpenSSL_add_all_ciphers ;
-[ init-ssl ] "openssl" add-startup-hook
+SYMBOL: ssl-initialized?
+
+: maybe-init-ssl ( -- )
+ ssl-initialized? get-global [
+ init-ssl
+ t ssl-initialized? set-global
+ ] unless ;
+
+[ f ssl-initialized? set-global ] "openssl" add-startup-hook