/* Main Entry */ int main(int argc, char **argv) { // init connection object Connection conn; memset(&conn, 0, sizeof(conn)); conn.port = PORT; // assign default port conn.host = HOST; // Parse arguments parseArguments(argc, argv, &conn); // init SSL library conn.sslContext = initSSLContext(CLIENT_CERTIFICATE, CA_CERTIFICATE); SSL_CTX_set_options(conn.sslContext, SSL_OP_NO_SSLv2); SSL_CTX_set_cipher_list(conn.sslContext, "SHA1"); // Connect if (tcpConnect(&conn) < 0){ tcpDisconnect(&conn); exit(0); } SSL * ssl = SSL_new(conn.sslContext); BIO * sbio = BIO_new_socket(conn.socket, BIO_NOCLOSE); SSL_set_bio(ssl, sbio, sbio); int ret; ret = SSL_connect(ssl); if (ret <= 0){ printf(FMT_CONNECT_ERR); handleError(ssl, ret); } else{ // Process Message if (checkServerCertification(ssl) == OK){ processMessage(ssl); } } // close ssl connection if (!SSL_shutdown(ssl)){ tcpDisconnect(&conn); SSL_shutdown(ssl); } SSL_free(ssl); // Disconnect tcpDisconnect(&conn); destroySSLContext(conn.sslContext); return 1; }
SSLListener::SSLListener(const Module* module, uint16_t pPort) : Listener(module, pPort) { ssl_ctx = initSSLContext(); };
extern "C" LUAMBEDTLS_DLL_EXPORTED int luaopen_luambedtls(lua_State * L){ State * state = new State(L); Stack * stack = state->stack; Module luambedtls_module; stack->newTable(); initMPI(state, luambedtls_module); initASN1buf(state, luambedtls_module); initASN1named(state, luambedtls_module); initASN1sequence(state, luambedtls_module); //key-pairs initPKContext(state, luambedtls_module); initPKinfo(state, luambedtls_module); initCTRDRBGContext(state, luambedtls_module); initDHMContext(state, luambedtls_module); initEntropyContext(state, luambedtls_module); initSSLConfig(state, luambedtls_module); initSSLContext(state, luambedtls_module); initSSLCookieContext(state, luambedtls_module); initSSLSession(state, luambedtls_module); initx509crt(state, luambedtls_module); initx509crl(state, luambedtls_module); initx509crlEntry(state, luambedtls_module); initx509crtProfile(state, luambedtls_module); initx509csr(state, luambedtls_module); initx509writeCert(state, luambedtls_module); initx509writeCSR(state, luambedtls_module); initTimingDelayContext(state, luambedtls_module); initAESContext(state, luambedtls_module); //symmetric-encryption initARC4Context(state, luambedtls_module); initBlowfishContext(state, luambedtls_module); initCamelliaContext(state, luambedtls_module); initDESContext(state, luambedtls_module); initDES3Context(state, luambedtls_module); initGCMContext(state, luambedtls_module); initXTEAContext(state, luambedtls_module); //asymmetric-ecnryption initDHMContext(state, luambedtls_module); initRSAContext(state, luambedtls_module); //EC initECPCurveInfo(state, luambedtls_module); initECPPoint(state, luambedtls_module); initECPGroup(state, luambedtls_module); initECPKeyPair(state, luambedtls_module); initECDHContext(state, luambedtls_module); initECSDAContext(state, luambedtls_module); //message-digest initMDContext(state, luambedtls_module); initMDinfo(state, luambedtls_module); //cipher initCipherContext(state, luambedtls_module); initCipherInfo(state, luambedtls_module); //utils initUtils(state, luambedtls_module); luambedtls_module["init"] = init; initConstants(state, luambedtls_module); luambedtls_module["strError"] = strError; luambedtls_module["debugTreshhold"] = debugTreshhold; luambedtls_module["MPIlen"] = MPIlen; luambedtls_module["pushOIDAttrShortName"] = pushOIDAttrShortName; luambedtls_module["pushOIDNumericString"] = pushOIDNumericString; luambedtls_module["pushOIDExtType"] = pushOIDExtType; luambedtls_module["pushOIDPkAlg"] = pushOIDPkAlg; state->registerLib(luambedtls_module); return 1; }