int ENGINE_set_default(ENGINE *e, unsigned int flags) { if((flags & ENGINE_METHOD_CIPHERS) && !ENGINE_set_default_ciphers(e)) return 0; if((flags & ENGINE_METHOD_DIGESTS) && !ENGINE_set_default_digests(e)) return 0; #ifndef OPENSSL_NO_RSA if((flags & ENGINE_METHOD_RSA) && !ENGINE_set_default_RSA(e)) return 0; #endif #ifndef OPENSSL_NO_DSA if((flags & ENGINE_METHOD_DSA) && !ENGINE_set_default_DSA(e)) return 0; #endif #ifndef OPENSSL_NO_DH if((flags & ENGINE_METHOD_DH) && !ENGINE_set_default_DH(e)) return 0; #endif #ifndef OPENSSL_NO_ECDH if((flags & ENGINE_METHOD_ECDH) && !ENGINE_set_default_ECDH(e)) return 0; #endif #ifndef OPENSSL_NO_ECDSA if((flags & ENGINE_METHOD_ECDSA) && !ENGINE_set_default_ECDSA(e)) return 0; #endif if((flags & ENGINE_METHOD_RAND) && !ENGINE_set_default_RAND(e)) return 0; return 1; }
static int openssl_engine_set_default(lua_State*L){ ENGINE* eng = CHECK_OBJECT(1,ENGINE,"openssl.engine"); int ret = 0; int first = 3; int top = lua_gettop(L); if(top==2){ if(lua_isnumber(L, 2)) { int methods = luaL_checkint(L, 2); ret = ENGINE_set_default(eng, methods); }else if(lua_isstring(L,2)){ const char* s = luaL_checkstring(L, 2); ret = ENGINE_set_default_string(eng, s); }else luaL_error(L, "#2 must be a number or string"); lua_pushboolean(L, ret); return 1; } while(first<=top){ int c = luaL_checkoption(L, first, "RSA",list); switch(c){ case 0: ret = ENGINE_set_default_RSA(eng); break; case 1: ret = ENGINE_set_default_DSA(eng); break; case 2: ret = ENGINE_set_default_ECDH(eng); break; case 3: ret = ENGINE_set_default_ECDSA(eng); break; case 4: ret = ENGINE_set_default_DH(eng); break; case 5: ret = ENGINE_set_default_RAND(eng); break; case 7: ret = ENGINE_set_default_ciphers(eng); break; case 8: ret = ENGINE_set_default_digests(eng); break; case 6: default: luaL_error(L,"not support %d for %s",c, list[c]); break; } first++; if(ret!=1){ lua_pushboolean(L, 0); return 1; } } lua_pushboolean(L, ret); return 1; };
CryptoDevEngine::CryptoDevEngine( int /* dummy */ ) { DEBUG( "cryptodev: ctor: loading and configuring" ); ENGINE_load_cryptodev(); ENGINE * cde = ENGINE_by_id( "cryptodev" ); if ( ! cde ) throw Exception( "cryptodev: load failed" ); m_pEngine = cde; DEBUG( "cryptodev: ctor: initializing " << m_pEngine ); if ( 1 != ENGINE_init( cde ) ) throw Exception( "cryptodev: init failed" ); #if USE_CRYPTODEV_RSA DEBUG( "cryptodev: ctor: setting as rsa default" ); if ( 1 != ENGINE_set_default_RSA( cde ) ) throw Exception( "cryptodev: could not use for RSA" ); #endif // USE_CRYPTODEV_RSA #if USE_CRYPTODEV_CIPHERS DEBUG( "cryptodev: ctor: setting as cipher default" ); if ( 1 != ENGINE_set_default_ciphers( cde ) ) throw Exception( "cryptodev: could not use for ciphers" ); #endif // USE_CRYPTODEV_CIPHERS #if USE_CRYPTODEV_DIGESTS DEBUG( "cryptodev: ctor: setting as digest default" ); if ( 1 != ENGINE_set_default_digests( cde ) ) throw Exception( "cryptodev: could not use for digests" ); #endif // USE_CRYPTODEV_DIGESTS DEBUG( "cryptodev: ctor: done" ); }