void Init_mini_ssl()

in ext/puma_http11/mini_ssl.c [469:536]


void Init_mini_ssl(VALUE puma) {
  VALUE mod, eng;

/* Fake operation for documentation (RDoc, YARD) */
#if 0 == 1
  puma = rb_define_module("Puma");
#endif

  SSL_library_init();
  OpenSSL_add_ssl_algorithms();
  SSL_load_error_strings();
  ERR_load_crypto_strings();

  mod = rb_define_module_under(puma, "MiniSSL");
  eng = rb_define_class_under(mod, "Engine", rb_cObject);

  // OpenSSL Build / Runtime/Load versions

  /* Version of OpenSSL that Puma was compiled with */
  rb_define_const(mod, "OPENSSL_VERSION", rb_str_new2(OPENSSL_VERSION_TEXT));

#if !defined(LIBRESSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000
  /* Version of OpenSSL that Puma loaded with */
  rb_define_const(mod, "OPENSSL_LIBRARY_VERSION", rb_str_new2(OpenSSL_version(OPENSSL_VERSION)));
#else
  rb_define_const(mod, "OPENSSL_LIBRARY_VERSION", rb_str_new2(SSLeay_version(SSLEAY_VERSION)));
#endif
 
#if defined(OPENSSL_NO_SSL3) || defined(OPENSSL_NO_SSL3_METHOD) 
  /* True if SSL3 is not available */ 
  rb_define_const(mod, "OPENSSL_NO_SSL3", Qtrue); 
#else 
  rb_define_const(mod, "OPENSSL_NO_SSL3", Qfalse); 
#endif 

#if defined(OPENSSL_NO_TLS1) || defined(OPENSSL_NO_TLS1_METHOD) 
  /* True if TLS1 is not available */ 
  rb_define_const(mod, "OPENSSL_NO_TLS1", Qtrue); 
#else 
  rb_define_const(mod, "OPENSSL_NO_TLS1", Qfalse); 
#endif 

#if defined(OPENSSL_NO_TLS1_1) || defined(OPENSSL_NO_TLS1_1_METHOD) 
  /* True if TLS1_1 is not available */ 
  rb_define_const(mod, "OPENSSL_NO_TLS1_1", Qtrue); 
#else 
  rb_define_const(mod, "OPENSSL_NO_TLS1_1", Qfalse); 
#endif 

  rb_define_singleton_method(mod, "check", noop, 0);

  eError = rb_define_class_under(mod, "SSLError", rb_eStandardError);

  rb_define_singleton_method(eng, "server", engine_init_server, 1);
  rb_define_singleton_method(eng, "client", engine_init_client, 0);

  rb_define_method(eng, "inject", engine_inject, 1);
  rb_define_method(eng, "read",  engine_read, 0);

  rb_define_method(eng, "write",  engine_write, 1);
  rb_define_method(eng, "extract", engine_extract, 0);

  rb_define_method(eng, "shutdown", engine_shutdown, 0);

  rb_define_method(eng, "init?", engine_init, 0);

  rb_define_method(eng, "peercert", engine_peercert, 0);
}