123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package python.net;
- import python.lib.Ssl;
- import python.lib.ssl.Purpose;
- import python.lib.socket.Socket as PSocket;
- import sys.net.Host;
- class SslSocket extends sys.net.Socket {
- var hostName:String;
- override function __initSocket ():Void {
- #if (python_version >= 3.4)
- var context = Ssl.create_default_context(Purpose.SERVER_AUTH);
- #else
- // hopefully these options are good enough
- var context = new python.lib.ssl.SSLContext(Ssl.PROTOCOL_SSLv23);
- context.verify_mode = Ssl.CERT_REQUIRED;
- context.set_default_verify_paths();
- context.options |= Ssl.OP_NO_SSLv2;
- context.options |= Ssl.OP_NO_SSLv3;
- context.options |= Ssl.OP_NO_COMPRESSION;
- #end
- context.options |= Ssl.OP_NO_TLSv1 #if (python_version >= 3.4) | Ssl.OP_NO_TLSv1_1 #end; // python 3.4 | Ssl.OP_NO_TLSv1_1;
- __s = new PSocket();
- __s = context.wrap_socket(__s,
- false,
- true,
- true,
- this.hostName
- );
- }
- public override function connect( host : Host, port : Int ) : Void {
- this.hostName = host.host;
- super.connect(host, port);
- }
- public override function bind( host : Host, port : Int ) : Void {
- throw "not implemented";
- }
- }
|