Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday 1 June 2021

EU’s COVID-19 ‘digital pass’ gateway system goes live

A technical system underpinning the European Union’s plan for a pan-EU ‘digital pass’ for verifying COVID-19 vaccination or test status across the region has gone live today, with a handful of EU Member States connected to the gateway and more expected to follow ahead of a July 1 full launch.

The idea for the EU’s COVID-19 digital certificate is to offer a single system for securely verifying EU citizens’ COVID-19 status — whether vaccination; a recent negative test; or proof of recovery from the virus — as they cross borders within the bloc to help facilitate safer travel.

The digital pass relies upon QR codes and digital signatures — verified using public key cryptography — to prevent falsification. Paper-based certificates can also be used by those who do have access to a device.

Member States that have passed technical tests and are ready to do so can start issuing and verifying certificates on a voluntary basis, the Commission said today — with seven countries (Bulgaria, Czechia, Denmark, Germany, Greece, Croatia and Poland) intending to do so at this point.

Other countries have decided to launch the EU Digital COVID Certificate only when all functions are deployed nationwide, it added. Further details about Member States’ status on activating the system are available via this webpage.

Since 10 May, 22 EU countries have tested the gateway successfully, according to the Commission, which wants maximum update of the system by 1 July — when the associated regulation will apply.

Although it’s allowed a “phasing-in period” of six weeks for the issuance of certificates for Member States that need additional time to get everything hooked up. That means it’s possible the tardiest implementations could happen when summer is all but over. (An earlier goal of EU lawmakers that everything would be up and running everywhere by June always looked ambitious.)

The Commission says no personal data is “exchanged or retained” during the COVID-19 digital certificate verification process, noting that the signature keys for the verification are stored on servers at a national level. These keys can be accessed — via the gateway — by national verification apps or systems all across the EU.

The Commission has also developed reference software and apps for the issuance, storage and verification of certificates — which it’s published on GitHub — to support the rollout by EU Member States. The Commission said 12 Member States have made use of this code so far.

National authorities in respective EU countries are in charge of issuing the COVID-19 digital certificate to individuals — with various potential routes for citizens to obtain one, such as from a COVID-19 test centre or from their local health authority or directly via a national eHealth portal.

Commenting on the gateway launch in a statement, Stella Kyriakides, the EU’s commissioner for health and food safety, urged Member States to get on and complete their implementations.

“The EU Digital COVID Certificate shows the value added of effective e-health solutions for our citizens,” she said. “It is important that during the coming weeks, all Member States fully finalise their national systems to issue, store and verify certificates, so the system is functioning in time for the holiday season. EU citizens are looking forward to travelling again, and they want to do so safely. Having an EU certificate is a crucial step on the way.”

Also touching on the COVID-19 digital certification launch today, Commission president, Ursula von der Leyen, said the system will only be in place for one year — presumably that’s assuming the pandemic is actually over by summer 2022.

“The EU certificate is a prime example of digital tools that represent our values,” she said, in a speech addressing the 2021 Digital Assembly. “The EU values privacy. No personal data will be exchanged or retained. The EU is inclusive. Whoever is not vaccinated, can get a digital certificate for test or recovery. Whoever does not have a smartphone, can get it on paper. With the certificate, we want to help people to move freely in times of pandemic. This is why it will only be in place for one year. Europe is a front-runner here and can set standards at the global level.”

In the speech, the Commission’s president also trailed another incoming digital proposal which she said would provide Europeans with a trusted online ID they could use to interact with regional governments and businesses without being forced to hand over more data than is strictly necessary.

“We want to offer to Europeans a new digital identity. An identity that ensures trust and protects users online. We are about to present our proposal,” she said. “It will allow everyone to control their identity online, and to interact with governments and businesses, across the EU. Nobody should be forced to give more data away, than is necessary for the purpose at hand. To book a hotel room online, no-one needs to know where I am from and who my friends are. With our proposal, we are offering an alternative to the models of big online platforms. We believe in a human-centred digital transition.”



from TechCrunch https://ift.tt/2R9ouvk
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support