| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | package sys.ssl;import eval.vm.NativeSocket;import mbedtls.Ssl;import mbedtls.Entropy;import mbedtls.CtrDrbg;import mbedtls.X509Crt;class Mbedtls {	static var entropy:Null<Entropy>;	static var ctr:Null<CtrDrbg>;	static public function getDefaultEntropy() {		if (entropy == null) {			entropy = new Entropy();		}		return entropy;	}	static public function getDefaultCtrDrbg() {		if (ctr == null) {			ctr = new CtrDrbg();			ctr.seed(getDefaultEntropy());		}		return ctr;	}	static public function loadDefaultCertificates(certificate:X509Crt) {		if (loadDefaults(certificate) == 0) {			return;		}		var defPaths = switch (Sys.systemName()) {			case "Linux":				[					"/etc/ssl/certs/ca-certificates.crt", // Debian/Ubuntu/Gentoo etc.					"/etc/pki/tls/certs/ca-bundle.crt", // Fedora/RHEL					"/etc/ssl/ca-bundle.pem", // OpenSUSE					"/etc/pki/tls/cacert.pem", // OpenELEC					"/etc/ssl/certs", // SLES10/SLES11					"/system/etc/security/cacerts" // Android				];			case "BSD":				[					"/usr/local/share/certs/ca-root-nss.crt", // FreeBSD/DragonFly					"/etc/ssl/cert.pem", // OpenBSD					"/etc/openssl/certs/ca-certificates.crt", // NetBSD				];			case "Android":				["/system/etc/security/cacerts"];			default:				[];		}		for (path in defPaths) {			if (sys.FileSystem.exists(path)) {				if (sys.FileSystem.isDirectory(path))					certificate.parse_path(path);				else					certificate.parse_file(path);			}		}	}	extern static public function setSocket(ssl:Ssl, socket:NativeSocket):Int;	extern static function loadDefaults(certificate:X509Crt):Int;}
 |