diff options
author | Juan Linietsky <reduzio@gmail.com> | 2016-03-12 10:44:12 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2016-03-12 10:46:38 -0300 |
commit | 8b1dcbfe4d92f9d7273bbd2f1eb805e5c508961a (patch) | |
tree | 77bd972e494e7deeef49bfa271c94d03ef2af749 /drivers/openssl | |
parent | d85f06c42d54971af5da826581c75d1ed001475e (diff) |
-Made editor support SSL certs by default (embedded them)
-Made asset sharing support https
-Many fixes to HTTPRequest
-Added an asset installer dialog
-Visual cleanups to asset sharing tab
-Fixed some issues in ScrollContainer, hope it does not break things
-Asset sharing tab is not visible (hidden on purpose) for now.
Diffstat (limited to 'drivers/openssl')
-rw-r--r-- | drivers/openssl/stream_peer_openssl.cpp | 46 | ||||
-rw-r--r-- | drivers/openssl/stream_peer_openssl.h | 1 |
2 files changed, 35 insertions, 12 deletions
diff --git a/drivers/openssl/stream_peer_openssl.cpp b/drivers/openssl/stream_peer_openssl.cpp index 81795fdc60..aad3a11b7e 100644 --- a/drivers/openssl/stream_peer_openssl.cpp +++ b/drivers/openssl/stream_peer_openssl.cpp @@ -532,8 +532,26 @@ StreamPeerSSL* StreamPeerOpenSSL::_create_func() { Vector<X509*> StreamPeerOpenSSL::certs; +void StreamPeerOpenSSL::_load_certs(const ByteArray& p_array) { + + ByteArray::Read r = p_array.read(); + BIO* mem = BIO_new(BIO_s_mem()); + BIO_puts(mem,(const char*)r.ptr()); + while(true) { + X509*cert = PEM_read_bio_X509(mem, NULL, 0, NULL); + if (!cert) + break; + certs.push_back(cert); + } + BIO_free(mem); +} + void StreamPeerOpenSSL::initialize_ssl() { + available=true; + + load_certs_func=_load_certs; + _create=_create_func; CRYPTO_malloc_init(); // Initialize malloc, free, etc for OpenSSL's use SSL_library_init(); // Initialize OpenSSL's SSL libraries @@ -544,20 +562,24 @@ void StreamPeerOpenSSL::initialize_ssl() { Globals::get_singleton()->set_custom_property_info("ssl/certificates",PropertyInfo(Variant::STRING,"ssl/certificates",PROPERTY_HINT_FILE,"*.crt")); if (certs_path!="") { - Vector<uint8_t> data = FileAccess::get_file_as_array(certs_path);; - if (data.size()) { - data.push_back(0); - BIO* mem = BIO_new(BIO_s_mem()); - BIO_puts(mem,(const char*) data.ptr()); - while(true) { - X509*cert = PEM_read_bio_X509(mem, NULL, 0, NULL); - if (!cert) - break; - certs.push_back(cert); + + + FileAccess *f=FileAccess::open(certs_path,FileAccess::READ); + if (f) { + ByteArray arr; + int flen = f->get_len(); + arr.resize(flen+1); + { + ByteArray::Write w = arr.write(); + f->get_buffer(w.ptr(),flen); + w[flen]=0; //end f string } - BIO_free(mem); + + memdelete(f); + + _load_certs(arr); + print_line("Loaded certs from '"+certs_path+"': "+itos(certs.size())); } - print_line("Loaded certs from '"+certs_path+"': "+itos(certs.size())); } String config_path =GLOBAL_DEF("ssl/config",""); Globals::get_singleton()->set_custom_property_info("ssl/config",PropertyInfo(Variant::STRING,"ssl/config",PROPERTY_HINT_FILE,"*.cnf")); diff --git a/drivers/openssl/stream_peer_openssl.h b/drivers/openssl/stream_peer_openssl.h index 64f5a1d7ac..20266ee584 100644 --- a/drivers/openssl/stream_peer_openssl.h +++ b/drivers/openssl/stream_peer_openssl.h @@ -54,6 +54,7 @@ private: static Vector<X509*> certs; + static void _load_certs(const ByteArray& p_array); protected: static void _bind_methods(); public: |