public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
[Web] Update libs
ee6989bd
.../inc/lib/WebAuthn/Attestation/Format/U2f.php | 1561 ++++++++++++++++++--
data/web/inc/lib/composer.lock | 134 +-
data/web/inc/lib/vendor/composer/ClassLoader.php | 6 +-
.../inc/lib/vendor/composer/InstalledVersions.php | 332 +++++
.../inc/lib/vendor/composer/autoload_classmap.php | 1 +
data/web/inc/lib/vendor/composer/autoload_real.php | 4 +-
.../inc/lib/vendor/composer/autoload_static.php | 1 +
data/web/inc/lib/vendor/composer/installed.json | 1328 +++++++++--------
data/web/inc/lib/vendor/composer/installed.php | 137 ++
.../web/inc/lib/vendor/composer/platform_check.php | 26 +
data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md | 41 +
data/web/inc/lib/vendor/ddeboer/imap/README.md | 11 +-
data/web/inc/lib/vendor/ddeboer/imap/composer.json | 19 +-
.../inc/lib/vendor/ddeboer/imap/src/Connection.php | 1 +
.../inc/lib/vendor/ddeboer/imap/src/Mailbox.php | 27 +-
.../inc/lib/vendor/ddeboer/imap/src/Message.php | 12 +-
.../ddeboer/imap/src/Message/AbstractMessage.php | 1 +
.../ddeboer/imap/src/Message/AbstractPart.php | 6 +-
.../vendor/ddeboer/imap/src/Message/Transcoder.php | 8 +-
.../matthiasmullie/minify/.github/FUNDING.yml | 12 +
.../lib/vendor/matthiasmullie/minify/Dockerfile | 2 +-
.../matthiasmullie/minify/docker-compose.yml | 15 +
.../lib/vendor/matthiasmullie/minify/src/CSS.php | 60 +-
.../vendor/paragonie/random_compat/composer.json | 2 +-
.../inc/lib/vendor/phpmailer/phpmailer/README.md | 10 +-
.../web/inc/lib/vendor/phpmailer/phpmailer/VERSION | 2 +-
.../lib/vendor/phpmailer/phpmailer/composer.json | 20 +-
.../vendor/phpmailer/phpmailer/get_oauth_token.php | 10 +-
.../phpmailer/language/phpmailer.lang-af.php | 1 +
.../phpmailer/language/phpmailer.lang-ar.php | 1 +
.../phpmailer/language/phpmailer.lang-az.php | 1 +
.../phpmailer/language/phpmailer.lang-ba.php | 3 +-
.../phpmailer/language/phpmailer.lang-be.php | 1 +
.../phpmailer/language/phpmailer.lang-bg.php | 1 +
.../phpmailer/language/phpmailer.lang-ca.php | 1 +
.../phpmailer/language/phpmailer.lang-ch.php | 1 +
.../phpmailer/language/phpmailer.lang-cs.php | 1 +
.../phpmailer/language/phpmailer.lang-da.php | 5 +-
.../phpmailer/language/phpmailer.lang-de.php | 3 +
.../phpmailer/language/phpmailer.lang-el.php | 1 +
.../phpmailer/language/phpmailer.lang-eo.php | 1 +
.../phpmailer/language/phpmailer.lang-es.php | 1 +
.../phpmailer/language/phpmailer.lang-et.php | 1 +
.../phpmailer/language/phpmailer.lang-fa.php | 1 +
.../phpmailer/language/phpmailer.lang-fi.php | 1 +
.../phpmailer/language/phpmailer.lang-fo.php | 1 +
.../phpmailer/language/phpmailer.lang-fr.php | 3 +
.../phpmailer/language/phpmailer.lang-gl.php | 1 +
.../phpmailer/language/phpmailer.lang-he.php | 1 +
.../phpmailer/language/phpmailer.lang-hi.php | 3 +-
.../phpmailer/language/phpmailer.lang-hr.php | 1 +
.../phpmailer/language/phpmailer.lang-hu.php | 1 +
.../phpmailer/language/phpmailer.lang-hy.php | 3 +-
.../phpmailer/language/phpmailer.lang-id.php | 28 +-
.../phpmailer/language/phpmailer.lang-it.php | 1 +
.../phpmailer/language/phpmailer.lang-ja.php | 1 +
.../phpmailer/language/phpmailer.lang-ka.php | 1 +
.../phpmailer/language/phpmailer.lang-ko.php | 1 +
.../phpmailer/language/phpmailer.lang-lt.php | 1 +
.../phpmailer/language/phpmailer.lang-lv.php | 1 +
.../phpmailer/language/phpmailer.lang-mg.php | 2 +
.../phpmailer/language/phpmailer.lang-ms.php | 1 +
.../phpmailer/language/phpmailer.lang-nb.php | 1 +
.../phpmailer/language/phpmailer.lang-nl.php | 1 +
.../phpmailer/language/phpmailer.lang-pl.php | 3 +-
.../phpmailer/language/phpmailer.lang-pt.php | 1 +
.../phpmailer/language/phpmailer.lang-pt_br.php | 1 +
.../phpmailer/language/phpmailer.lang-ro.php | 1 +
.../phpmailer/language/phpmailer.lang-ru.php | 1 +
.../phpmailer/language/phpmailer.lang-sk.php | 1 +
.../phpmailer/language/phpmailer.lang-sl.php | 6 +-
.../phpmailer/language/phpmailer.lang-sr.php | 1 +
.../phpmailer/language/phpmailer.lang-sv.php | 5 +-
.../phpmailer/language/phpmailer.lang-tl.php | 25 +-
.../phpmailer/language/phpmailer.lang-tr.php | 1 +
.../phpmailer/language/phpmailer.lang-uk.php | 1 +
.../phpmailer/language/phpmailer.lang-vi.php | 1 +
.../phpmailer/language/phpmailer.lang-zh.php | 1 +
.../phpmailer/language/phpmailer.lang-zh_cn.php | 1 +
.../vendor/phpmailer/phpmailer/src/Exception.php | 3 +-
.../lib/vendor/phpmailer/phpmailer/src/OAuth.php | 3 +-
.../vendor/phpmailer/phpmailer/src/PHPMailer.php | 171 ++-
.../lib/vendor/phpmailer/phpmailer/src/POP3.php | 43 +-
.../lib/vendor/phpmailer/phpmailer/src/SMTP.php | 116 +-
84 files changed, 3293 insertions(+), 960 deletions(-)
create mode 100644 data/web/inc/lib/vendor/composer/InstalledVersions.php
create mode 100644 data/web/inc/lib/vendor/composer/installed.php
create mode 100644 data/web/inc/lib/vendor/composer/platform_check.php
create mode 100644 data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml
Diff
diff --git a/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php b/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php
index 630b1544..ddbd3d2b 100644
--- a/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php
+++ b/data/web/inc/lib/WebAuthn/Attestation/Format/U2f.php
@@ -1,93 +1,1468 @@
-<?php
-
-
-namespace WebAuthn\Attestation\Format;
-use WebAuthn\WebAuthnException;
-use WebAuthn\Binary\ByteBuffer;
-
-class U2f extends FormatBase {
- private $_alg;
- private $_signature;
- private $_x5c;
-
- public function __construct($AttestionObject, \WebAuthn\Attestation\AuthenticatorData $authenticatorData) {
- parent::__construct($AttestionObject, $authenticatorData);
-
- // check u2f data
- $attStmt = $this->_attestationObject['attStmt'];
-
- if (!\array_key_exists('alg', $attStmt) || $this->_getCoseAlgorithm($attStmt['alg']) === null) {
- throw new WebAuthnException('unsupported alg: ' . $attStmt['alg'], WebAuthnException::INVALID_DATA);
- }
-
- if (!\array_key_exists('sig', $attStmt) || !\is_object($attStmt['sig']) || !($attStmt['sig'] instanceof ByteBuffer)) {
- throw new WebAuthnException('no signature found', WebAuthnException::INVALID_DATA);
- }
-
- if (!\array_key_exists('x5c', $attStmt) || !\is_array($attStmt['x5c']) || \count($attStmt['x5c']) !== 1) {
- throw new WebAuthnException('invalid x5c certificate', WebAuthnException::INVALID_DATA);
- }
-
- if (!\is_object($attStmt['x5c'][0]) || !($attStmt['x5c'][0] instanceof ByteBuffer)) {
- throw new WebAuthnException('invalid x5c certificate', WebAuthnException::INVALID_DATA);
- }
-
- $this->_alg = $attStmt['alg'];
- $this->_signature = $attStmt['sig']->getBinaryString();
- $this->_x5c = $attStmt['x5c'][0]->getBinaryString();
- }
-
-
- /*
- * returns the key certificate in PEM format
- * @return string
- */
- public function getCertificatePem() {
- $pem = '-----BEGIN CERTIFICATE-----' . "\n";
- $pem .= \chunk_split(\base64_encode($this->_x5c), 64, "\n");
- $pem .= '-----END CERTIFICATE-----' . "\n";
- return $pem;
- }
-
- /**
- * @param string $clientDataHash
- */
- public function validateAttestation($clientDataHash) {
- $publicKey = \openssl_pkey_get_public($this->getCertificatePem());
-
- if ($publicKey === false) {
- throw new WebAuthnException('invalid public key: ' . \openssl_error_string(), WebAuthnException::INVALID_PUBLIC_KEY);
- }
-
- // Let verificationData be the concatenation of (0x00 || rpIdHash || clientDataHash || credentialId || publicKeyU2F)
- $dataToVerify = "\x00";
- $dataToVerify .= $this->_authenticatorData->getRpIdHash();
- $dataToVerify .= $clientDataHash;
- $dataToVerify .= $this->_authenticatorData->getCredentialId();
- $dataToVerify .= $this->_authenticatorData->getPublicKeyU2F();
-
- $coseAlgorithm = $this->_getCoseAlgorithm($this->_alg);
-
- // check certificate
- return \openssl_verify($dataToVerify, $this->_signature, $publicKey, $coseAlgorithm->openssl) === 1;
- }
-
- /**
- * validates the certificate against root certificates
- * @param array $rootCas
- * @return boolean
- * @throws WebAuthnException
- */
- public function validateRootCertificate($rootCas) {
- $chainC = $this->_createX5cChainFile();
- if ($chainC) {
- $rootCas[] = $chainC;
- }
-
- $v = \openssl_x509_checkpurpose($this->getCertificatePem(), -1, $rootCas);
- if ($v === -1) {
- throw new WebAuthnException('error on validating root certificate: ' . \openssl_error_string(), WebAuthnException::CERTIFICATE_NOT_TRUSTED);
- }
- return $v;
- }
-}
+
+
+
+
+
+
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <link rel="dns-prefetch" href="https://github.githubassets.com">
+ <link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
+ <link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
+ <link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
+ <link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
+ <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
+ <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
+
+
+
+ <link crossorigin="anonymous" media="all" integrity="sha512-BSy+E+S5PJuDWKcXiIXBoFJ7uJ+88y6hFdIhZpf7nf9MVNVvnJDPUaotaxFUQi8UXCLJOcGv1uifxVMc9o5DYQ==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-052cbe13e4b93c9b8358a7178885c1a0.css" />
+ <link crossorigin="anonymous" media="all" integrity="sha512-tuayzhY7bkBEq/qU4J930ofI//FEC8Na42y8grGUvaSDLLvJi8/hbKbZ7zxph9o0cZecDALcD+Ks9ppE9YmS5w==" rel="stylesheet" href="https://github.githubassets.com/assets/site-b6e6b2ce163b6e4044abfa94e09f77d2.css" />
+ <link crossorigin="anonymous" media="all" integrity="sha512-zZEYWrT2WyrAqN2Nm29ttIz36AXxSxE+Mf4ARvtJCQrVVOFpnh0nRYu5fbAjtXXTRBDytc8BGLPA7sCsjvGQLw==" rel="stylesheet" href="https://github.githubassets.com/assets/github-cd91185ab4f65b2ac0a8dd8d9b6f6db4.css" />
+
+
+
+
+
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-8K2vvwbW+6H27Nad5ydg8PA2/aMD/LKq+EiK9s0U0hhVZxCI2tWBsYk9beAtisRw2j+Or5k2/F+6dk02nmj/PA==" type="application/javascript" src="https://github.githubassets.com/assets/environment-f0adafbf.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-bf3k8Y60Hljk6JoJikJwUktgpWsNM3NEnNgmlScAD6u57WAUEgCSZh5BsU5ls8YxsL8cZUaKGHC5fsf143pfaw==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-frameworks-6dfde4f1.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-TZfq2T+XE31Mcp17bGlABjjeQ/69IH2f/sBvS31c4Jua0e1O/NE+aVbQtItMM2GFlmeEm13p/zyyWGIx10jVKQ==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-vendor-4d97ead9.js"></script>
+
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-gkZCpFyYrX7ycwoeUW7Wyk7sg8OBhVVIA5gFuJfzX3jZcu1jiTPWWM749XEjX9pILro9F5+l+WUfz/MUpAwI0w==" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-824642a4.js"></script>
+
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-F/8sNCLF603gJL0egQeZwFTYP9dfZAVEWHdjMssZ2opLZXRK08vgowBRzKyra6u9zU/rGVxe+igfJsSWzfO2lg==" type="application/javascript" data-module-id="./chunk-contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/chunk-contributions-spider-graph-17ff2c34.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-obMR8mPKx8OvqRe34LgnUcxeJ1qujiA4ND3H6UX13ExMlA/WfHLjEzXRmgGRcRvN/8J1nzc+Z+jgz/PLTFy6zg==" type="application/javascript" data-module-id="./chunk-drag-drop.js" data-src="https://github.githubassets.com/assets/chunk-drag-drop-a1b311f2.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-AVtc/43rg+h7XgMPOa+baO1Fj+uiMUrLHd16U6+c6Tk7atk70Ux4IcGRPOHqMv422QIJD7l7BhG2PL4G/tUVKg==" type="application/javascript" data-module-id="./chunk-jump-to.js" data-src="https://github.githubassets.com/assets/chunk-jump-to-015b5cff.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-biWH4OAQPiDiTkaeyDnXf6hHF3u3Mv3eaDEvt8AdT/QvWDpLbnusALT4ZO+f+DgYp07UiHxNRAB6/J7IwPW6TQ==" type="application/javascript" data-module-id="./chunk-lib.dev.js" data-src="https://github.githubassets.com/assets/chunk-lib.dev-6e2587e0.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-tcH4xCRuMBAh1PruDaiwGnRIbHlF6bGLhxyCQ16uqok1cV5QFMguVPWJtN9KI0jGQOgN+Pha3+uOUXhXdfK/qw==" type="application/javascript" data-module-id="./chunk-profile-pins-element.js" data-src="https://github.githubassets.com/assets/chunk-profile-pins-element-b5c1f8c4.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-E+H+wAtjiqutBvn2cnXzDIvmasIhYiS7i7JzOfFUwo+Ej8zT54OrJtP//RhwixnypgOpCF4JvqzYy6zOtORDmg==" type="application/javascript" data-module-id="./chunk-runner-groups.js" data-src="https://github.githubassets.com/assets/chunk-runner-groups-13e1fec0.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-rIWotuwsYxV+jXNuevOVsulW2zsw98Gi4j7KXrJZq+bWFV86Y/R75+1jMjt5k1MPgabdTPpWPI/IoESZhah9ng==" type="application/javascript" data-module-id="./chunk-sortable-behavior.js" data-src="https://github.githubassets.com/assets/chunk-sortable-behavior-ac85a8b6.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-ZBICwPA18KYIgHbafqdjnTkxoCSNf/39rTlupkrtdpIWizECoux0ROzjAgyAx20Bf27VfshuBqrYwDqOVftyag==" type="application/javascript" data-module-id="./chunk-tweetsodium.js" data-src="https://github.githubassets.com/assets/chunk-tweetsodium-641202c0.js"></script>
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-QUtHMb3mxbE2DQSQZb9+tK8ZC2m05FFqZOa5ju2Sj0GdiQV+ce/bnIK/YwoMdty44NEhEIkZUIyh9DqLMsRedg==" type="application/javascript" data-module-id="./chunk-user-status-submit.js" data-src="https://github.githubassets.com/assets/chunk-user-status-submit-414b4731.js"></script>
+
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-B+TgAy+wlZmUjsDcWKt55BrTpxxZDolcD9v47x25Ue46lVb9c0n1tRz+BjjSeC4CuN9M3psDUpBhsr1aFKpFCw==" type="application/javascript" src="https://github.githubassets.com/assets/repositories-07e4e003.js"></script>
+<script crossorigin="anonymous" defer="defer" integrity="sha512-Dl4JXoI2igFuQLn6MCPPgiS7TVx3c0/G8iaIZCNzgGi4Iwg8TC0y4LPT584yJ+r6ZsF5QIFL9uo+nhHdBvfLNQ==" type="application/javascript" src="https://github.githubassets.com/assets/diffs-0e5e095e.js"></script>
+
+ <meta name="viewport" content="width=device-width">
+
+ <title>WebAuthn/U2f.php at master · lbuchs/WebAuthn · GitHub</title>
+ <meta name="description" content="A simple PHP WebAuthn (FIDO2) server library. Contribute to lbuchs/WebAuthn development by creating an account on GitHub.">
+ <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
+ <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
+ <meta property="fb:app_id" content="1401488693436528">
+ <meta name="apple-itunes-app" content="app-id=1477376905" />
+ <meta name="twitter:image:src" content="https://avatars1.githubusercontent.com/u/37619779?s=400&v=4" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary" /><meta name="twitter:title" content="lbuchs/WebAuthn" /><meta name="twitter:description" content="A simple PHP WebAuthn (FIDO2) server library. Contribute to lbuchs/WebAuthn development by creating an account on GitHub." />
+ <meta property="og:image" content="https://avatars1.githubusercontent.com/u/37619779?s=400&v=4" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="lbuchs/WebAuthn" /><meta property="og:url" content="https://github.com/lbuchs/WebAuthn" /><meta property="og:description" content="A simple PHP WebAuthn (FIDO2) server library. Contribute to lbuchs/WebAuthn development by creating an account on GitHub." />
+
+
+
+
+
+ <link rel="assets" href="https://github.githubassets.com/">
+
+
+ <meta name="request-id" content="9E92:4939:66CE6B4:927EDD8:5FF2E997" data-pjax-transient="true"/><meta name="html-safe-nonce" content="7542a9b892db023c2b9745385a8d153039033cedf47b1573318c1c5f43430e1a" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5RTkyOjQ5Mzk6NjZDRTZCNDo5MjdFREQ4OjVGRjJFOTk3IiwidmlzaXRvcl9pZCI6IjE1NTE1NTUxMzM0MDM0OTA3MTEiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="d552c3c83a273d68ee0537231b5365a51683433d08c4275be5df83b0c7f39fa6" data-pjax-transient="true"/>
+
+ <meta name="hovercard-subject-tag" content="repository:149437753" data-pjax-transient>
+
+
+ <meta name="github-keyboard-shortcuts" content="repository,source-code" data-pjax-transient="true" />
+
+
+
+ <meta name="selected-link" value="repo_source" data-pjax-transient>
+
+ <meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
+ <meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
+ <meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
+ <meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">
+
+ <meta name="octolytics-host" content="collector.githubapp.com" /><meta name="octolytics-app-id" content="github" /><meta name="octolytics-event-url" content="https://collector.githubapp.com/github-external/browser_event" />
+
+ <meta name="analytics-location" content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" />
+
+
+
+
+
+ <meta name="optimizely-datafile" content="{"version": "4", "rollouts": [], "typedAudiences": [], "anonymizeIP": true, "projectId": "16737760170", "variables": [], "featureFlags": [], "experiments": [{"status": "Running", "audienceIds": [], "variations": [{"variables": [], "id": "19512260014", "key": "separate_plans_and_usage"}, {"variables": [], "id": "19509770036", "key": "control"}], "id": "19536000020", "key": "account_billing_plans_and_usage", "layerId": "19545220022", "trafficAllocation": [{"entityId": "19509770036", "endOfRange": 2500}, {"entityId": "", "endOfRange": 5000}, {"entityId": "19512260014", "endOfRange": 7500}, {"entityId": "", "endOfRange": 10000}], "forcedVariations": {"1238720267648ea2c88a74b410aa3c5c": "separate_plans_and_usage"}}], "audiences": [{"conditions": "[\"or\", {\"match\": \"exact\", \"name\": \"$opt_dummy_attribute\", \"type\": \"custom_attribute\", \"value\": \"$opt_dummy_value\"}]", "id": "$opt_dummy_audience", "name": "Optimizely-Generated Audience for Backwards Compatibility"}], "groups": [], "attributes": [{"id": "16822470375", "key": "user_id"}, {"id": "17143601254", "key": "spammy"}, {"id": "18175660309", "key": "organization_plan"}, {"id": "18813001570", "key": "is_logged_in"}, {"id": "19073851829", "key": "geo"}], "botFiltering": false, "accountId": "16737760170", "events": [{"experimentIds": [], "id": "17911811441", "key": "hydro_click.dashboard.teacher_toolbox_cta"}, {"experimentIds": [], "id": "18124116703", "key": "submit.organizations.complete_sign_up"}, {"experimentIds": [], "id": "18145892387", "key": "no_metric.tracked_outside_of_optimizely"}, {"experimentIds": [], "id": "18178755568", "key": "click.org_onboarding_checklist.add_repo"}, {"experimentIds": [], "id": "18180553241", "key": "submit.repository_imports.create"}, {"experimentIds": [], "id": "18186103728", "key": "click.help.learn_more_about_repository_creation"}, {"experimentIds": [], "id": "18188530140", "key": "test_event.do_not_use_in_production"}, {"experimentIds": [], "id": "18191963644", "key": "click.empty_org_repo_cta.transfer_repository"}, {"experimentIds": [], "id": "18195612788", "key": "click.empty_org_repo_cta.import_repository"}, {"experimentIds": [], "id": "18210945499", "key": "click.org_onboarding_checklist.invite_members"}, {"experimentIds": [], "id": "18211063248", "key": "click.empty_org_repo_cta.create_repository"}, {"experimentIds": [], "id": "18215721889", "key": "click.org_onboarding_checklist.update_profile"}, {"experimentIds": [], "id": "18224360785", "key": "click.org_onboarding_checklist.dismiss"}, {"experimentIds": [], "id": "18234832286", "key": "submit.organization_activation.complete"}, {"experimentIds": [], "id": "18252392383", "key": "submit.org_repository.create"}, {"experimentIds": [], "id": "18257551537", "key": "submit.org_member_invitation.create"}, {"experimentIds": [], "id": "18259522260", "key": "submit.organization_profile.update"}, {"experimentIds": [], "id": "18564603625", "key": "view.classroom_select_organization"}, {"experimentIds": [], "id": "18568612016", "key": "click.classroom_sign_in_click"}, {"experimentIds": [], "id": "18572592540", "key": "view.classroom_name"}, {"experimentIds": [], "id": "18574203855", "key": "click.classroom_create_organization"}, {"experimentIds": [], "id": "18582053415", "key": "click.classroom_select_organization"}, {"experimentIds": [], "id": "18589463420", "key": "click.classroom_create_classroom"}, {"experimentIds": [], "id": "18591323364", "key": "click.classroom_create_first_classroom"}, {"experimentIds": [], "id": "18591652321", "key": "click.classroom_grant_access"}, {"experimentIds": [], "id": "18607131425", "key": "view.classroom_creation"}, {"experimentIds": [], "id": "18831680583", "key": "upgrade_account_plan"}, {"experimentIds": [], "id": "19064064515", "key": "click.signup"}, {"experimentIds": [], "id": "19075373687", "key": "click.view_account_billing_page"}, {"experimentIds": [], "id": "19077355841", "key": "click.dismiss_signup_prompt"}, {"experimentIds": [], "id": "19079713938", "key": "click.contact_sales"}, {"experimentIds": ["19536000020"], "id": "19120963070", "key": "click.compare_account_plans"}, {"experimentIds": ["19536000020"], "id": "19151690317", "key": "click.upgrade_account_cta"}, {"experimentIds": [], "id": "19424193129", "key": "click.open_account_switcher"}, {"experimentIds": [], "id": "19520330825", "key": "click.visit_account_profile"}, {"experimentIds": [], "id": "19540970635", "key": "click.switch_account_context"}], "revision": "380"}" />
+ <!-- To prevent page flashing, the optimizely JS needs to be loaded in the
+ <head> tag before the DOM renders -->
+ <script crossorigin="anonymous" defer="defer" integrity="sha512-VJrqSK702Mzl9EQxm2OvFxKaumGptgVdeJS2rsaLvVlOdR4HEu3ZFjtV83kMKdYRelUnxxaAFw0wthkpdEUafw==" type="application/javascript" src="https://github.githubassets.com/assets/optimizely-549aea48.js"></script>
+
+
+
+
+
+ <meta name="hostname" content="github.com">
+ <meta name="user-login" content="">
+
+
+ <meta name="expected-hostname" content="github.com">
+
+
+ <meta name="enabled-features" content="MARKETPLACE_PENDING_INSTALLATIONS,ACTIONS_ENVIRONMENTS,ACTIONS_ENVIRONMENTS">
+
+ <meta http-equiv="x-pjax-version" content="b9519ee0f1a36ea318a50dfe223f5168c887f949c28be1eb4abf8a9c37367fa6">
+
+
+ <link href="https://github.com/lbuchs/WebAuthn/commits/master.atom" rel="alternate" title="Recent Commits to WebAuthn:master" type="application/atom+xml">
+
+ <meta name="go-import" content="github.com/lbuchs/WebAuthn git https://github.com/lbuchs/WebAuthn.git">
+
+ <meta name="octolytics-dimension-user_id" content="37619779" /><meta name="octolytics-dimension-user_login" content="lbuchs" /><meta name="octolytics-dimension-repository_id" content="149437753" /><meta name="octolytics-dimension-repository_nwo" content="lbuchs/WebAuthn" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="149437753" /><meta name="octolytics-dimension-repository_network_root_nwo" content="lbuchs/WebAuthn" /><meta name="octolytics-dimension-repository_explore_github_marketplace_ci_cta_shown" content="false" />
+
+
+
+ <link rel="canonical" href="https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php" data-pjax-transient>
+
+
+ <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
+
+ <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
+
+ <meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">
+
+ <link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
+ <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
+ <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">
+
+<meta name="theme-color" content="#1e2327">
+ <meta name="color-scheme" content="light dark">
+
+
+ <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">
+
+ </head>
+
+ <body class="logged-out env-production page-responsive page-blob">
+
+
+ <div class="position-relative js-header-wrapper ">
+ <a href="#start-of-content" class="px-2 py-4 bg-blue text-white show-on-focus js-skip-to-content">Skip to content</a>
+ <span class="progress-pjax-loader width-full js-pjax-loader-bar Progress position-fixed">
+ <span style="background-color: #79b8ff;width: 0%;" class="Progress-item progress-pjax-loader-bar "></span>
+</span>
+
+
+
+ <header class="Header-old header-logged-out js-details-container Details position-relative f4 py-2" role="banner">
+ <div class="container-xl d-lg-flex flex-items-center p-responsive">
+ <div class="d-flex flex-justify-between flex-items-center">
+ <a class="mr-4" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
+ <svg height="32" class="octicon octicon-mark-github text-white" viewBox="0 0 16 16" version="1.1" width="32" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
+ </a>
+
+ <div class="d-lg-none css-truncate css-truncate-target width-fit p-2">
+
+
+ </div>
+
+ <div class="d-flex flex-items-center">
+ <a href="/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&source=header-repo"
+ class="d-inline-block d-lg-none f5 text-white no-underline border border-gray-dark rounded-2 px-2 py-1 mr-3 mr-sm-5"
+ data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="1fa73645d79e7339fa56f9c3fdc149417fb1e8add226b07afc3dee86ae9c1d63"
+ data-ga-click="Sign up, click to sign up for account, ref_page:/<user-name>/<repo-name>/blob/show;ref_cta:Sign up;ref_loc:header logged out">
+ Sign up
+ </a>
+
+ <button class="btn-link d-lg-none mt-1 js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
+ <svg height="24" class="octicon octicon-three-bars text-white" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path></svg>
+ </button>
+ </div>
+ </div>
+
+ <div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto">
+ <div class="d-flex d-lg-none flex-justify-end border-bottom bg-gray-light p-3">
+ <button class="btn-link js-details-target" type="button" aria-label="Toggle navigation" aria-expanded="false">
+ <svg height="24" class="octicon octicon-x text-gray" viewBox="0 0 24 24" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M5.72 5.72a.75.75 0 011.06 0L12 10.94l5.22-5.22a.75.75 0 111.06 1.06L13.06 12l5.22 5.22a.75.75 0 11-1.06 1.06L12 13.06l-5.22 5.22a.75.75 0 01-1.06-1.06L10.94 12 5.72 6.78a.75.75 0 010-1.06z"></path></svg>
+ </button>
+ </div>
+
+ <nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global">
+ <ul class="d-lg-flex list-style-none">
+ <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
+ <details class="HeaderMenu-details details-overlay details-reset width-full">
+ <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
+ Why GitHub?
+ <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
+ <path d="M1,1l6.2,6L13,1"></path>
+ </svg>
+ </summary>
+ <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
+ <a href="/features" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Features">Features <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a>
+ <ul class="list-style-none f5 pb-3">
+ <li class="edge-item-fix"><a href="/features/code-review/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code review">Code review</a></li>
+ <li class="edge-item-fix"><a href="/features/project-management/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Project management">Project management</a></li>
+ <li class="edge-item-fix"><a href="/features/integrations" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Integrations">Integrations</a></li>
+ <li class="edge-item-fix"><a href="/features/actions" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Actions">Actions</a></li>
+ <li class="edge-item-fix"><a href="/features/packages" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Packages">Packages</a></li>
+ <li class="edge-item-fix"><a href="/features/security" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Security">Security</a></li>
+ <li class="edge-item-fix"><a href="/features#team-management" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Team management">Team management</a></li>
+ <li class="edge-item-fix"><a href="/features#hosting" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Code hosting">Hosting</a></li>
+ <li class="edge-item-fix hide-xl"><a href="/mobile" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Mobile">Mobile</a></li>
+ </ul>
+
+ <ul class="list-style-none mb-0 border-lg-top pt-lg-3">
+ <li class="edge-item-fix"><a href="/customer-stories" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Customer stories">Customer stories <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
+ <li class="edge-item-fix"><a href="/security" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Security">Security <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
+ </ul>
+ </div>
+ </details>
+ </li>
+ <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
+ <a href="/team" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Team">Team</a>
+ </li>
+ <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
+ <a href="/enterprise" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Enterprise">Enterprise</a>
+ </li>
+
+ <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
+ <details class="HeaderMenu-details details-overlay details-reset width-full">
+ <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
+ Explore
+ <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
+ <path d="M1,1l6.2,6L13,1"></path>
+ </svg>
+ </summary>
+
+ <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
+ <ul class="list-style-none mb-3">
+ <li class="edge-item-fix"><a href="/explore" class="py-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Explore">Explore GitHub <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
+ </ul>
+
+ <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Learn & contribute</h4>
+ <ul class="list-style-none mb-3">
+ <li class="edge-item-fix"><a href="/topics" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Topics">Topics</a></li>
+ <li class="edge-item-fix"><a href="/collections" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Collections">Collections</a></li>
+ <li class="edge-item-fix"><a href="/trending" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Trending">Trending</a></li>
+ <li class="edge-item-fix"><a href="https://lab.github.com/" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Learning lab">Learning Lab</a></li>
+ <li class="edge-item-fix"><a href="https://opensource.guide" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Open source guides">Open source guides</a></li>
+ </ul>
+
+ <h4 class="text-gray-light text-normal text-mono f5 mb-2 border-lg-top pt-lg-3">Connect with others</h4>
+ <ul class="list-style-none mb-0">
+ <li class="edge-item-fix"><a href="https://github.com/events" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Events">Events</a></li>
+ <li class="edge-item-fix"><a href="https://github.community" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Community forum">Community forum</a></li>
+ <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Education">GitHub Education</a></li>
+ <li class="edge-item-fix"><a href="https://stars.github.com" class="py-2 pb-0 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to GitHub Stars Program">GitHub Stars program</a></li>
+ </ul>
+ </div>
+ </details>
+ </li>
+
+ <li class="border-bottom border-lg-bottom-0 mr-0 mr-lg-3">
+ <a href="/marketplace" class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-ga-click="(Logged out) Header, go to Marketplace">Marketplace</a>
+ </li>
+
+ <li class="d-block d-lg-flex flex-lg-nowrap flex-lg-items-center border-bottom border-lg-bottom-0 mr-0 mr-lg-3 edge-item-fix position-relative flex-wrap flex-justify-between d-flex flex-items-center ">
+ <details class="HeaderMenu-details details-overlay details-reset width-full">
+ <summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
+ Pricing
+ <svg x="0px" y="0px" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative">
+ <path d="M1,1l6.2,6L13,1"></path>
+ </svg>
+ </summary>
+
+ <div class="dropdown-menu flex-auto rounded-1 bg-white px-0 pt-2 pb-4 mt-0 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
+ <a href="/pricing" class="pb-2 lh-condensed-ultra d-block link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Pricing">Plans <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a>
+
+ <ul class="list-style-none mb-3">
+ <li class="edge-item-fix"><a href="/pricing#feature-comparison" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Compare plans">Compare plans</a></li>
+ <li class="edge-item-fix"><a href="https://enterprise.github.com/contact" class="py-2 lh-condensed-ultra d-block link-gray no-underline f5" data-ga-click="(Logged out) Header, go to Contact Sales">Contact Sales</a></li>
+ </ul>
+
+ <ul class="list-style-none mb-0 border-lg-top pt-lg-3">
+ <li class="edge-item-fix"><a href="/nonprofit" class="py-2 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Nonprofits">Nonprofit <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
+ <li class="edge-item-fix"><a href="https://education.github.com" class="py-2 pb-0 lh-condensed-ultra d-block no-underline link-gray-dark no-underline h5 Bump-link--hover" data-ga-click="(Logged out) Header, go to Education">Education <span class="Bump-link-symbol float-right text-normal text-gray-light">→</span></a></li>
+ </ul>
+ </div>
+ </details>
+ </li>
+ </ul>
+ </nav>
+
+ <div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left">
+ <div class="d-lg-flex mb-3 mb-lg-0">
+ <div class="header-search flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to"
+ role="combobox"
+ aria-owns="jump-to-results"
+ aria-label="Search or jump to"
+ aria-haspopup="listbox"
+ aria-expanded="false"
+>
+ <div class="position-relative">
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-flagged-in="false" data-scope-type="Repository" data-scope-id="149437753" data-scoped-search-url="/lbuchs/WebAuthn/search" data-owner-scoped-search-url="/users/lbuchs/search" data-unscoped-search-url="/search" action="/lbuchs/WebAuthn/search" accept-charset="UTF-8" method="get">
+ <label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
+ <input type="text"
+ class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
+ data-hotkey="s,/"
+ name="q"
+ value=""
+ placeholder="Search"
+ data-unscoped-placeholder="Search GitHub"
+ data-scoped-placeholder="Search"
+ autocapitalize="off"
+ aria-autocomplete="list"
+ aria-controls="jump-to-results"
+ aria-label="Search"
+ data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
+ spellcheck="false"
+ autocomplete="off"
+ >
+ <input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="zUjaiZOouHy7sVPjvd6AoASla0iHuBSr0e3yU0K5eRH4kPloSavD1Kkyv/CvwhwcB5ZV/96AkuUeozlrZh2nYQ==" />
+ <input type="hidden" class="js-site-search-type-field" name="type" >
+ <img src="https://github.githubassets.com/images/search-key-slash.svg" alt="" class="mr-2 header-search-key-slash">
+
+ <div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">
+
+<ul class="d-none js-jump-to-suggestions-template-container">
+
+
+<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
+ <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
+ <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
+ <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
+ <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
+ <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
+ </div>
+
+ <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
+
+ <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
+ </div>
+
+ <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
+ <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
+ In this repository
+ </span>
+ <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
+ All GitHub
+ </span>
+ <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
+ </div>
+
+ <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
+ Jump to
+ <span class="d-inline-block ml-1 v-align-middle">↵</span>
+ </div>
+ </a>
+</li>
+
+</ul>
+
+<ul class="d-none js-jump-to-no-results-template-container">
+ <li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
+ <span class="text-gray">No suggested jump to results</span>
+ </li>
+</ul>
+
+<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">
+
+
+<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
+ <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
+ <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
+ <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
+ <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
+ <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
+ </div>
+
+ <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
+
+ <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
+ </div>
+
+ <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
+ <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
+ In this repository
+ </span>
+ <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
+ All GitHub
+ </span>
+ <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
+ </div>
+
+ <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
+ Jump to
+ <span class="d-inline-block ml-1 v-align-middle">↵</span>
+ </div>
+ </a>
+</li>
+
+
+
+<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
+ <a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
+ <div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
+ <svg height="16" width="16" class="octicon octicon-repo flex-shrink-0 js-jump-to-octicon-repo d-none" title="Repository" aria-label="Repository" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
+ <svg height="16" width="16" class="octicon octicon-project flex-shrink-0 js-jump-to-octicon-project d-none" title="Project" aria-label="Project" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
+ <svg height="16" width="16" class="octicon octicon-search flex-shrink-0 js-jump-to-octicon-search d-none" title="Search" aria-label="Search" viewBox="0 0 16 16" version="1.1" role="img"><path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path></svg>
+ </div>
+
+ <img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">
+
+ <div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
+ </div>
+
+ <div class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none js-jump-to-badge-search">
+ <span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
+ In this repository
+ </span>
+ <span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
+ All GitHub
+ </span>
+ <span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
+ </div>
+
+ <div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
+ Jump to
+ <span class="d-inline-block ml-1 v-align-middle">↵</span>
+ </div>
+ </a>
+</li>
+
+
+</ul>
+
+ </div>
+ </label>
+</form> </div>
+</div>
+
+ </div>
+
+ <a href="/login?return_to=%2Flbuchs%2FWebAuthn%2Fblob%2Fmaster%2Fsrc%2FAttestation%2FFormat%2FU2f.php"
+ class="HeaderMenu-link no-underline mr-3"
+ data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="3cfd2894fb0d052d292731382a8442c1bef5d120299c4c1adcfef7574f6d3214"
+ data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">
+ Sign in
+ </a>
+ <a href="/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&source=header-repo&source_repo=lbuchs%2FWebAuthn"
+ class="HeaderMenu-link d-inline-block no-underline border border-gray-dark rounded-1 px-2 py-1"
+ data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"site header menu","repository_id":null,"auth_type":"SIGN_UP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="3cfd2894fb0d052d292731382a8442c1bef5d120299c4c1adcfef7574f6d3214"
+ data-ga-click="Sign up, click to sign up for account, ref_page:/<user-name>/<repo-name>/blob/show;ref_cta:Sign up;ref_loc:header logged out">
+ Sign up
+ </a>
+ </div>
+ </div>
+ </div>
+</header>
+
+ </div>
+
+ <div id="start-of-content" class="show-on-focus"></div>
+
+
+
+
+
+ <div data-pjax-replace id="js-flash-container">
+
+
+ <template class="js-flash-template">
+ <div class="flash flash-full {{ className }}">
+ <div class=" px-2" >
+ <button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
+ <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
+ </button>
+
+ <div>{{ message }}</div>
+
+ </div>
+</div>
+ </template>
+</div>
+
+
+
+
+ <include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>
+
+
+
+
+ <div
+ class="application-main "
+ data-commit-hovercards-enabled
+ data-discussion-hovercards-enabled
+ data-issue-and-pr-hovercards-enabled
+ >
+ <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
+ <main id="js-repo-pjax-container" data-pjax-container >
+
+
+
+
+
+
+
+
+
+
+
+
+ <div class="bg-gray-light pt-3 hide-full-screen mb-5">
+
+ <div class="d-flex mb-3 px-3 px-md-4 px-lg-5">
+
+ <div class="flex-auto min-width-0 width-fit mr-3">
+ <h1 class=" d-flex flex-wrap flex-items-center break-word f3 text-normal">
+ <svg class="octicon octicon-repo text-gray mr-2" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path></svg>
+ <span class="author flex-self-stretch" itemprop="author">
+ <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/lbuchs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/lbuchs">lbuchs</a>
+ </span>
+ <span class="mx-1 flex-self-stretch color-text-secondary">/</span>
+ <strong itemprop="name" class="mr-2 flex-self-stretch">
+ <a data-pjax="#js-repo-pjax-container" class="" href="/lbuchs/WebAuthn">WebAuthn</a>
+ </strong>
+
+</h1>
+
+
+ </div>
+
+ <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">
+
+ <li>
+ <a class="tooltipped tooltipped-s btn btn-sm btn-with-count" aria-label="You must be signed in to watch a repository" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"notification subscription menu watch","repository_id":null,"auth_type":"LOG_IN","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="598d5928985ed1f030381dfc3bb71ab863948ce6a1e9bd0b182df6eaf085d392" href="/login?return_to=%2Flbuchs%2FWebAuthn">
+ <svg class="octicon octicon-eye" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z"></path></svg>
+ Watch
+</a> <a class="social-count" href="/lbuchs/WebAuthn/watchers"
+ aria-label="19 users are watching this repository">
+ 19
+ </a>
+
+ </li>
+
+ <li>
+ <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to star a repository" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"star button","repository_id":149437753,"auth_type":"LOG_IN","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="a7420bb34426895414d50cee42729e8f317b98fd52602d3e35eb79262f2d0d1e" href="/login?return_to=%2Flbuchs%2FWebAuthn">
+ <svg class="octicon octicon-star v-align-text-bottom mr-1" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path></svg>
+ <span>
+ Star
+</span></a>
+ <a class="social-count js-social-count" href="/lbuchs/WebAuthn/stargazers"
+ aria-label="85 users starred this repository">
+ 85
+ </a>
+
+ </li>
+
+ <li>
+ <a class="btn btn-sm btn-with-count tooltipped tooltipped-s" aria-label="You must be signed in to fork a repository" rel="nofollow" data-hydro-click="{"event_type":"authentication.click","payload":{"location_in_page":"repo details fork button","repository_id":149437753,"auth_type":"LOG_IN","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="9c144c74f6c62b1b64fba74b857324d9e810ba028560e6ec736bf01ed5ded1f4" href="/login?return_to=%2Flbuchs%2FWebAuthn">
+ <svg class="octicon octicon-repo-forked" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path></svg>
+ Fork
+</a>
+ <a href="/lbuchs/WebAuthn/network/members" class="social-count"
+ aria-label="19 users forked this repository">
+ 19
+ </a>
+ </li>
+</ul>
+
+ </div>
+
+<nav aria-label="Repository" data-pjax="#js-repo-pjax-container" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5 bg-gray-light">
+ <ul class="UnderlineNav-body list-style-none ">
+ <li class="d-flex">
+ <a class="js-selected-navigation-item selected UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i0code-tab" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /lbuchs/WebAuthn" href="/lbuchs/WebAuthn">
+ <svg class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
+ <span data-content="Code">Code</span>
+ <span title="Not available" class="Counter "></span>
+</a>
+
+ </li>
+ <li class="d-flex">
+ <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i1issues-tab" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-selected-links="repo_issues repo_labels repo_milestones /lbuchs/WebAuthn/issues" href="/lbuchs/WebAuthn/issues">
+ <svg class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zm-.25-6.25a.75.75 0 00-1.5 0v3.5a.75.75 0 001.5 0v-3.5z"></path></svg>
+ <span data-content="Issues">Issues</span>
+ <span title="8" class="Counter ">8</span>
+</a>
+
+ </li>
+ <li class="d-flex">
+ <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i2pull-requests-tab" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-selected-links="repo_pulls checks /lbuchs/WebAuthn/pulls" href="/lbuchs/WebAuthn/pulls">
+ <svg class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path></svg>
+ <span data-content="Pull requests">Pull requests</span>
+ <span title="0" hidden="hidden" class="Counter ">0</span>
+</a>
+
+ </li>
+ <li class="d-flex">
+ <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i3actions-tab" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-selected-links="repo_actions /lbuchs/WebAuthn/actions" href="/lbuchs/WebAuthn/actions">
+ <svg class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path></svg>
+ <span data-content="Actions">Actions</span>
+ <span title="Not available" class="Counter "></span>
+</a>
+
+ </li>
+ <li class="d-flex">
+ <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i4projects-tab" data-hotkey="g b" data-ga-click="Repository, Navigation click, Projects tab" data-selected-links="repo_projects new_repo_project repo_project /lbuchs/WebAuthn/projects" href="/lbuchs/WebAuthn/projects">
+ <svg class="octicon octicon-project UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path></svg>
+ <span data-content="Projects">Projects</span>
+ <span title="0" hidden="hidden" class="Counter ">0</span>
+</a>
+
+ </li>
+ <li class="d-flex">
+ <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i5security-tab" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-selected-links="security overview alerts policy token_scanning code_scanning /lbuchs/WebAuthn/security" href="/lbuchs/WebAuthn/security">
+ <svg class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path></svg>
+ <span data-content="Security">Security</span>
+ <include-fragment src="/lbuchs/WebAuthn/security/overall-count" accept="text/fragment+html"></include-fragment>
+</a>
+
+ </li>
+ <li class="d-flex">
+ <a class="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item" data-tab-item="i6insights-tab" data-ga-click="Repository, Navigation click, Insights tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people /lbuchs/WebAuthn/pulse" href="/lbuchs/WebAuthn/pulse">
+ <svg class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path></svg>
+ <span data-content="Insights">Insights</span>
+ <span title="Not available" class="Counter "></span>
+</a>
+
+ </li>
+
+</ul> <div class="position-absolute right-0 pr-3 pr-md-4 pr-lg-5 js-responsive-underlinenav-overflow" style="visibility:hidden;">
+ <details class="details-overlay details-reset position-relative">
+ <summary role="button">
+ <div class="UnderlineNav-item mr-0 border-0">
+ <svg class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg>
+ <span class="sr-only">More</span>
+ </div>
+</summary> <div>
+ <details-menu role="menu" class="dropdown-menu dropdown-menu-sw ">
+
+ <ul>
+ <li data-menu-item="i0code-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn" href="/lbuchs/WebAuthn">
+ Code
+</a> </li>
+ <li data-menu-item="i1issues-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn/issues" href="/lbuchs/WebAuthn/issues">
+ Issues
+</a> </li>
+ <li data-menu-item="i2pull-requests-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn/pulls" href="/lbuchs/WebAuthn/pulls">
+ Pull requests
+</a> </li>
+ <li data-menu-item="i3actions-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn/actions" href="/lbuchs/WebAuthn/actions">
+ Actions
+</a> </li>
+ <li data-menu-item="i4projects-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn/projects" href="/lbuchs/WebAuthn/projects">
+ Projects
+</a> </li>
+ <li data-menu-item="i5security-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn/security" href="/lbuchs/WebAuthn/security">
+ Security
+</a> </li>
+ <li data-menu-item="i6insights-tab" hidden>
+ <a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links=" /lbuchs/WebAuthn/pulse" href="/lbuchs/WebAuthn/pulse">
+ Insights
+</a> </li>
+ </ul>
+
+</details-menu>
+</div></details> </div>
+
+</nav>
+ </div>
+
+
+<div class="container-xl clearfix new-discussion-timeline px-3 px-md-4 px-lg-5">
+ <div class="repository-content " >
+
+
+
+
+
+
+ <a class="d-none js-permalink-shortcut" data-hotkey="y" href="/lbuchs/WebAuthn/blob/e62a6615894daaf061f91bc274064c5773074f81/src/Attestation/Format/U2f.php">Permalink</a>
+
+ <!-- blob contrib key: blob_contributors:v22:362c2f001e0a021defec58b1d88f2bcc162f20859abcd28e71ea63851dfca542 -->
+
+ <div class="d-flex flex-items-start flex-shrink-0 pb-3 flex-wrap flex-md-nowrap flex-justify-between flex-md-justify-start">
+
+<div class="position-relative">
+ <details class="details-reset details-overlay mr-0 mb-0 " id="branch-select-menu">
+ <summary class="btn css-truncate"
+ data-hotkey="w"
+ title="Switch branches or tags">
+ <svg class="octicon octicon-git-branch text-gray" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path></svg>
+ <span class="css-truncate-target" data-menu-button>master</span>
+ <span class="dropdown-caret"></span>
+ </summary>
+
+ <details-menu class="SelectMenu SelectMenu--hasFilter" src="/lbuchs/WebAuthn/refs/master/src/Attestation/Format/U2f.php?source_action=show&source_controller=blob" preload>
+ <div class="SelectMenu-modal">
+ <include-fragment class="SelectMenu-loading" aria-label="Menu is loading">
+ <svg class="octicon octicon-octoface anim-pulse" height="32" viewBox="0 0 24 24" version="1.1" width="32" aria-hidden="true"><path d="M7.75 11c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5C9 11.56 8.44 11 7.75 11zm1.27 4.5a.469.469 0 01.48-.5h5a.47.47 0 01.48.5c-.116 1.316-.759 2.5-2.98 2.5s-2.864-1.184-2.98-2.5zm7.23-4.5c-.69 0-1.25.56-1.25 1.25v1.5a1.25 1.25 0 102.5 0v-1.5c0-.69-.56-1.25-1.25-1.25z"></path><path fill-rule="evenodd" d="M21.255 3.82a1.725 1.725 0 00-2.141-1.195c-.557.16-1.406.44-2.264.866-.78.386-1.647.93-2.293 1.677A18.442 18.442 0 0012 5c-.93 0-1.784.059-2.569.17-.645-.74-1.505-1.28-2.28-1.664a13.876 13.876 0 00-2.265-.866 1.725 1.725 0 00-2.141 1.196 23.645 23.645 0 00-.69 3.292c-.125.97-.191 2.07-.066 3.112C1.254 11.882 1 13.734 1 15.527 1 19.915 3.13 23 12 23c8.87 0 11-3.053 11-7.473 0-1.794-.255-3.647-.99-5.29.127-1.046.06-2.15-.066-3.125a23.652 23.652 0 00-.689-3.292zM20.5 14c.5 3.5-1.5 6.5-8.5 6.5s-9-3-8.5-6.5c.583-4 3-6 8.5-6s7.928 2 8.5 6z"></path></svg>
+ </include-fragment>
+ </div>
+ </details-menu>
+ </details>
+
+</div>
+
+ <h2 id="blob-path" class="breadcrumb flex-auto min-width-0 text-normal mx-0 mx-md-3 width-full width-md-auto flex-order-1 flex-md-order-none mt-3 mt-md-0">
+ <span class="js-repo-root text-bold"><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="true" href="/lbuchs/WebAuthn"><span>WebAuthn</span></a></span></span><span class="separator">/</span><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="true" href="/lbuchs/WebAuthn/tree/master/src"><span>src</span></a></span><span class="separator">/</span><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="true" href="/lbuchs/WebAuthn/tree/master/src/Attestation"><span>Attestation</span></a></span><span class="separator">/</span><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="true" href="/lbuchs/WebAuthn/tree/master/src/Attestation/Format"><span>Format</span></a></span><span class="separator">/</span><strong class="final-path">U2f.php</strong>
+ <span class="separator">/</span><details class="details-reset details-overlay d-inline" id="jumpto-symbol-select-menu">
+ <summary class="btn-link link-gray css-truncate" aria-haspopup="true" data-hotkey="r" data-hydro-click="{"event_type":"code_navigation.click_on_blob_definitions","payload":{"action":"click_on_blob_definitions","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="ee69c967beb835fc4d88a91ec7718da59239a1c95613365bbff302162d0d1a1f">
+ <svg class="octicon octicon-code" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path></svg>
+ <span data-menu-button>Jump to</span>
+ <span class="dropdown-caret"></span>
+ </summary>
+ <details-menu class="SelectMenu SelectMenu--hasFilter" role="menu">
+ <div class="SelectMenu-modal">
+ <header class="SelectMenu-header">
+ <span class="SelectMenu-title">Code definitions</span>
+ <button class="SelectMenu-closeButton" type="button" data-toggle-for="jumpto-symbol-select-menu">
+ <svg aria-label="Close menu" class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" role="img"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
+ </button>
+ </header>
+ <div class="SelectMenu-filter">
+ <input
+ class="SelectMenu-input form-control js-filterable-field"
+ id="jumpto-symbols-filter-field"
+ type="text"
+ autocomplete="off"
+ spellcheck="false"
+ autofocus
+ placeholder="Filter definitions"
+ aria-label="Filter definitions">
+ </div>
+ <div class="SelectMenu-list">
+ <div data-filterable-for="jumpto-symbols-filter-field" data-filterable-type="substring">
+ <a class="SelectMenu-item d-flex flex-justify-between css-truncate" role="menuitemradio" aria-checked="false" rel="nofollow" data-hydro-click="{"event_type":"code_navigation.navigate_to_blob_definition","payload":{"action":"navigate_to_blob_definition","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="09e4c2798380756490d8fe4e59d22d3ae7cb1c2ab57d684941467baf3ecbcc0e" href="/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php#L9">
+ <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
+ <span class="flex-auto css-truncate-target" data-menu-button-text>U2f</span>
+ <span class="flex-auto d-flex flex-justify-end">Class</span>
+</a> <a class="SelectMenu-item d-flex flex-justify-between css-truncate" role="menuitemradio" aria-checked="false" rel="nofollow" data-hydro-click="{"event_type":"code_navigation.navigate_to_blob_definition","payload":{"action":"navigate_to_blob_definition","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="09e4c2798380756490d8fe4e59d22d3ae7cb1c2ab57d684941467baf3ecbcc0e" href="/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php#L14">
+ <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
+ <span class="flex-auto css-truncate-target" data-menu-button-text>__construct</span>
+ <span class="flex-auto d-flex flex-justify-end">Function</span>
+</a> <a class="SelectMenu-item d-flex flex-justify-between css-truncate" role="menuitemradio" aria-checked="false" rel="nofollow" data-hydro-click="{"event_type":"code_navigation.navigate_to_blob_definition","payload":{"action":"navigate_to_blob_definition","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="09e4c2798380756490d8fe4e59d22d3ae7cb1c2ab57d684941467baf3ecbcc0e" href="/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php#L45">
+ <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
+ <span class="flex-auto css-truncate-target" data-menu-button-text>getCertificatePem</span>
+ <span class="flex-auto d-flex flex-justify-end">Function</span>
+</a> <a class="SelectMenu-item d-flex flex-justify-between css-truncate" role="menuitemradio" aria-checked="false" rel="nofollow" data-hydro-click="{"event_type":"code_navigation.navigate_to_blob_definition","payload":{"action":"navigate_to_blob_definition","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="09e4c2798380756490d8fe4e59d22d3ae7cb1c2ab57d684941467baf3ecbcc0e" href="/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php#L55">
+ <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
+ <span class="flex-auto css-truncate-target" data-menu-button-text>validateAttestation</span>
+ <span class="flex-auto d-flex flex-justify-end">Function</span>
+</a> <a class="SelectMenu-item d-flex flex-justify-between css-truncate" role="menuitemradio" aria-checked="false" rel="nofollow" data-hydro-click="{"event_type":"code_navigation.navigate_to_blob_definition","payload":{"action":"navigate_to_blob_definition","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="09e4c2798380756490d8fe4e59d22d3ae7cb1c2ab57d684941467baf3ecbcc0e" href="/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php#L81">
+ <svg class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path></svg>
+ <span class="flex-auto css-truncate-target" data-menu-button-text>validateRootCertificate</span>
+ <span class="flex-auto d-flex flex-justify-end">Function</span>
+</a> </div>
+ </div>
+ <footer class="SelectMenu-footer">
+ <div class="d-flex flex-justify-between">
+ Code navigation index up-to-date
+ <svg class="octicon octicon-dot-fill text-green" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path></svg>
+ </div>
+ </footer>
+ </div>
+ </details-menu>
+</details>
+
+ </h2>
+ <a href="/lbuchs/WebAuthn/find/master"
+ class="js-pjax-capture-input btn mr-2 d-none d-md-block"
+ data-pjax
+ data-hotkey="t">
+ Go to file
+ </a>
+
+ <details id="blob-more-options-details" class="details-overlay details-reset position-relative">
+ <summary role="button" type="button" class="btn ">
+ <svg aria-label="More options" class="octicon octicon-kebab-horizontal" height="16" viewBox="0 0 16 16" version="1.1" width="16" role="img"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg>
+</summary> <div>
+ <ul class="dropdown-menu dropdown-menu-sw">
+ <li class="d-block d-md-none">
+ <a class="dropdown-item d-flex flex-items-baseline" data-hydro-click="{"event_type":"repository.click","payload":{"target":"FIND_FILE_BUTTON","repository_id":149437753,"originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}" data-hydro-click-hmac="584a2d97f3fc6b2c52184e8813afb9d4e785ab04da743d5288e40cf51f994efb" data-ga-click="Repository, find file, location:repo overview" data-hotkey="t" data-pjax="true" href="/lbuchs/WebAuthn/find/master">
+ <span class="flex-auto">Go to file</span>
+ <span class="text-small text-gray" aria-hidden="true">T</span>
+</a> </li>
+ <li data-toggle-for="blob-more-options-details">
+ <button type="button" data-toggle-for="jumpto-line-details-dialog" class="btn-link dropdown-item">
+ <span class="d-flex flex-items-baseline">
+ <span class="flex-auto">Go to line</span>
+ <span class="text-small text-gray" aria-hidden="true">L</span>
+ </span>
+ </button>
+ </li>
+ <li data-toggle-for="blob-more-options-details">
+ <button type="button" data-toggle-for="jumpto-symbol-select-menu" class="btn-link dropdown-item">
+ <span class="d-flex flex-items-baseline">
+ <span class="flex-auto">Go to definition</span>
+ <span class="text-small text-gray" aria-hidden="true">R</span>
+ </span>
+ </button>
+ </li>
+ <li class="dropdown-divider" role="none"></li>
+ <li>
+ <clipboard-copy value="src/Attestation/Format/U2f.php" class="dropdown-item cursor-pointer" data-toggle-for="blob-more-options-details">
+ Copy path
+ </clipboard-copy>
+ </li>
+ </ul>
+</div></details> </div>
+
+
+
+ <div class="Box d-flex flex-column flex-shrink-0 mb-3">
+
+ <div class="Box-header Box-header--blue Details js-details-container">
+ <div class="d-flex flex-items-center">
+ <span class="flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1">
+ <a rel="author" data-skip-pjax="true" data-hovercard-type="user" data-hovercard-url="/users/lbuchs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/lbuchs"><img class="avatar avatar-user" src="https://avatars3.githubusercontent.com/u/37619779?s=48&v=4" width="24" height="24" alt="@lbuchs" /></a>
+ </span>
+ <div class="flex-1 d-flex flex-items-center ml-3 min-width-0">
+ <div class="css-truncate css-truncate-overflow">
+ <a class="text-bold link-gray-dark" rel="author" data-hovercard-type="user" data-hovercard-url="/users/lbuchs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/lbuchs">lbuchs</a>
+
+ <span>
+ <a data-pjax="true" title="Bugfix u2f" class="link-gray" href="/lbuchs/WebAuthn/commit/e62a6615894daaf061f91bc274064c5773074f81">Bugfix u2f</a>
+ </span>
+ </div>
+
+
+ <span class="ml-2">
+ <include-fragment accept="text/fragment+html" src="/lbuchs/WebAuthn/commit/e62a6615894daaf061f91bc274064c5773074f81/rollup?direction=e" class="d-inline"></include-fragment>
+ </span>
+ </div>
+ <div class="ml-3 d-flex flex-shrink-0 flex-items-center flex-justify-end text-gray no-wrap">
+ <span class="d-none d-md-inline">
+ <span>Latest commit</span>
+ <a class="text-small text-mono link-gray" href="/lbuchs/WebAuthn/commit/e62a6615894daaf061f91bc274064c5773074f81" data-pjax>e62a661</a>
+ <span itemprop="dateModified"><relative-time datetime="2021-01-04T09:21:11Z" class="no-wrap">Jan 4, 2021</relative-time></span>
+ </span>
+
+ <a data-pjax href="/lbuchs/WebAuthn/commits/e62a6615894daaf061f91bc274064c5773074f81/src/Attestation/Format/U2f.php" class="ml-3 no-wrap link-gray-dark no-underline">
+ <svg class="octicon octicon-history text-gray" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"></path></svg>
+ <span class="d-none d-sm-inline">
+ <strong>History</strong>
+ </span>
+ </a>
+ </div>
+ </div>
+
+ </div>
+
+ <div class="Box-body d-flex flex-items-center flex-auto border-bottom-0 flex-wrap" >
+ <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark float-left mr-3" id="blob_contributors_box">
+ <summary class="link-gray-dark">
+ <svg class="octicon octicon-people text-gray" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M5.5 3.5a2 2 0 100 4 2 2 0 000-4zM2 5.5a3.5 3.5 0 115.898 2.549 5.507 5.507 0 013.034 4.084.75.75 0 11-1.482.235 4.001 4.001 0 00-7.9 0 .75.75 0 01-1.482-.236A5.507 5.507 0 013.102 8.05 3.49 3.49 0 012 5.5zM11 4a.75.75 0 100 1.5 1.5 1.5 0 01.666 2.844.75.75 0 00-.416.672v.352a.75.75 0 00.574.73c1.2.289 2.162 1.2 2.522 2.372a.75.75 0 101.434-.44 5.01 5.01 0 00-2.56-3.012A3 3 0 0011 4z"></path></svg>
+ <strong>2</strong>
+
+ contributors
+ </summary>
+ <details-dialog
+ class="Box Box--overlay d-flex flex-column anim-fade-in fast"
+ aria-label="Users who have contributed to this file"
+ src="/lbuchs/WebAuthn/contributors-list/e62a6615894daaf061f91bc274064c5773074f81/src/Attestation/Format/U2f.php" preload>
+ <div class="Box-header">
+ <button class="Box-btn-octicon btn-octicon float-right" type="button" aria-label="Close dialog" data-close-dialog>
+ <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
+ </button>
+ <h3 class="Box-title">
+ Users who have contributed to this file
+ </h3>
+ </div>
+ <include-fragment>
+ <svg viewBox="0 0 16 16" fill="none" style="box-sizing: content-box; color: var(--color-icon-primary);" class="my-3 mx-auto d-block" width="32" height="32">
+ <circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
+ <path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke">
+ <animateTransform attributeName="transform" type="rotate" from="0 8 8" to="360 8 8" dur="1s" repeatCount="indefinite" />
+ </path>
+</svg>
+ </include-fragment>
+ </details-dialog>
+ </details>
+ <span class="">
+ <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/lbuchs/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/lbuchs/WebAuthn/commits/e62a6615894daaf061f91bc274064c5773074f81/src/Attestation/Format/U2f.php?author=lbuchs">
+ <img class="avatar mr-2 avatar-user" src="https://avatars3.githubusercontent.com/u/37619779?s=48&v=4" width="24" height="24" alt="@lbuchs" />
+</a> <a class="avatar-link" data-hovercard-type="user" data-hovercard-url="/users/BenjaminHae/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/lbuchs/WebAuthn/commits/e62a6615894daaf061f91bc274064c5773074f81/src/Attestation/Format/U2f.php?author=BenjaminHae">
+ <img class="avatar mr-2 avatar-user" src="https://avatars0.githubusercontent.com/u/7386033?s=48&v=4" width="24" height="24" alt="@BenjaminHae" />
+</a>
+</span>
+
+ </div>
+ </div>
+
+
+
+
+
+
+ <div class="Box mt-3 position-relative
+ ">
+
+<div class="Box-header py-2 d-flex flex-column flex-shrink-0 flex-md-row flex-md-items-center">
+ <div class="text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1 mt-2 mt-md-0">
+
+ 93 lines (74 sloc)
+ <span class="file-info-divider"></span>
+ 3.43 KB
+ </div>
+
+ <div class="d-flex py-1 py-md-0 flex-auto flex-order-1 flex-md-order-2 flex-sm-grow-0 flex-justify-between">
+
+ <div class="BtnGroup">
+ <a href="/lbuchs/WebAuthn/raw/master/src/Attestation/Format/U2f.php" id="raw-url" role="button" class="btn btn-sm BtnGroup-item ">Raw</a>
+ <a href="/lbuchs/WebAuthn/blame/master/src/Attestation/Format/U2f.php" data-hotkey="b" role="button" class="btn js-update-url-with-hash btn-sm BtnGroup-item ">Blame</a>
+ </div>
+
+ <div>
+ <a class="btn-octicon tooltipped tooltipped-nw js-remove-unless-platform"
+ data-platforms="windows,mac"
+ href="https://desktop.github.com"
+ aria-label="Open this file in GitHub Desktop"
+ data-ga-click="Repository, open with desktop">
+ <svg class="octicon octicon-device-desktop" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"></path></svg>
+ </a>
+
+ <a href="/login?return_to=%2Flbuchs%2FWebAuthn%2Fblob%2Fmaster%2Fsrc%2FAttestation%2FFormat%2FU2f.php" class="btn-octicon disabled tooltipped tooltipped-nw"
+ aria-label="You must be signed in to make or propose changes">
+ <svg class="octicon octicon-pencil" height="16" viewBox="0 0 16 16" version="1.1" width="16" aria-hidden="true"><path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path></svg>
+ </a>
+ <a href="/login?return_to=%2Flbuchs%2FWebAuthn%2Fblob%2Fmaster%2Fsrc%2FAttestation%2FFormat%2FU2f.php" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
+ aria-label="You must be signed in to make or propose changes">
+ <svg class="octicon octicon-trashcan" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"></path></svg>
+ </a>
+ </div>
+ </div>
+</div>
+
+
+
+ <div itemprop="text" class="Box-body p-0 blob-wrapper data type-php gist-border-0">
+
+<table class="highlight tab-size js-file-line-container" data-tab-size="8" data-paste-markdown-skip>
+ <tr>
+ <td id="L1" class="blob-num js-line-number" data-line-number="1"></td>
+ <td id="LC1" class="blob-code blob-code-inner js-file-line"><span class=pl-ent><?php</span></td>
+ </tr>
+ <tr>
+ <td id="L2" class="blob-num js-line-number" data-line-number="2"></td>
+ <td id="LC2" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L3" class="blob-num js-line-number" data-line-number="3"></td>
+ <td id="LC3" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L4" class="blob-num js-line-number" data-line-number="4"></td>
+ <td id="LC4" class="blob-code blob-code-inner js-file-line"><span class=pl-k>namespace</span> lbuchs\<span class=pl-v>WebAuthn</span>\<span class=pl-v>Attestation</span>\<span class=pl-v>Format</span>;</td>
+ </tr>
+ <tr>
+ <td id="L5" class="blob-num js-line-number" data-line-number="5"></td>
+ <td id="LC5" class="blob-code blob-code-inner js-file-line"><span class=pl-k>use</span> lbuchs\<span class=pl-v>WebAuthn</span>\<span class=pl-v>Attestation</span>\<span class=pl-v>AuthenticatorData</span>;</td>
+ </tr>
+ <tr>
+ <td id="L6" class="blob-num js-line-number" data-line-number="6"></td>
+ <td id="LC6" class="blob-code blob-code-inner js-file-line"><span class=pl-k>use</span> lbuchs\<span class=pl-v>WebAuthn</span>\<span class=pl-v>WebAuthnException</span>;</td>
+ </tr>
+ <tr>
+ <td id="L7" class="blob-num js-line-number" data-line-number="7"></td>
+ <td id="LC7" class="blob-code blob-code-inner js-file-line"><span class=pl-k>use</span> lbuchs\<span class=pl-v>WebAuthn</span>\<span class=pl-v>Binary</span>\<span class=pl-v>ByteBuffer</span>;</td>
+ </tr>
+ <tr>
+ <td id="L8" class="blob-num js-line-number" data-line-number="8"></td>
+ <td id="LC8" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L9" class="blob-num js-line-number" data-line-number="9"></td>
+ <td id="LC9" class="blob-code blob-code-inner js-file-line"><span class=pl-k>class</span> <span class=pl-v>U2f</span> <span class=pl-k>extends</span> <span class=pl-v>FormatBase</span> {</td>
+ </tr>
+ <tr>
+ <td id="L10" class="blob-num js-line-number" data-line-number="10"></td>
+ <td id="LC10" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>private</span> <span class=pl-c1><span class=pl-c1>$</span>_alg</span> = -<span class=pl-c1>7</span>;</td>
+ </tr>
+ <tr>
+ <td id="L11" class="blob-num js-line-number" data-line-number="11"></td>
+ <td id="LC11" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>private</span> <span class=pl-c1><span class=pl-c1>$</span>_signature</span>;</td>
+ </tr>
+ <tr>
+ <td id="L12" class="blob-num js-line-number" data-line-number="12"></td>
+ <td id="LC12" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>private</span> <span class=pl-c1><span class=pl-c1>$</span>_x5c</span>;</td>
+ </tr>
+ <tr>
+ <td id="L13" class="blob-num js-line-number" data-line-number="13"></td>
+ <td id="LC13" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L14" class="blob-num js-line-number" data-line-number="14"></td>
+ <td id="LC14" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>public</span> <span class=pl-k>function</span> <span class=pl-en>__construct</span>(<span class=pl-s1><span class=pl-c1>$</span><span class=pl-v>AttestionObject</span></span>, <span class=pl-smi>AuthenticatorData</span> <span class=pl-s1><span class=pl-c1>$</span>authenticatorData</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L15" class="blob-num js-line-number" data-line-number="15"></td>
+ <td id="LC15" class="blob-code blob-code-inner js-file-line"> <span class=pl-smi>parent</span>::<span class=pl-en>__construct</span>(<span class=pl-s1><span class=pl-c1>$</span><span class=pl-v>AttestionObject</span></span>, <span class=pl-s1><span class=pl-c1>$</span>authenticatorData</span>);</td>
+ </tr>
+ <tr>
+ <td id="L16" class="blob-num js-line-number" data-line-number="16"></td>
+ <td id="LC16" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L17" class="blob-num js-line-number" data-line-number="17"></td>
+ <td id="LC17" class="blob-code blob-code-inner js-file-line"> <span class=pl-c>// check u2f data</span></td>
+ </tr>
+ <tr>
+ <td id="L18" class="blob-num js-line-number" data-line-number="18"></td>
+ <td id="LC18" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>attStmt</span> = <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_attestationObject</span>[<span class=pl-s>'attStmt'</span>];</td>
+ </tr>
+ <tr>
+ <td id="L19" class="blob-num js-line-number" data-line-number="19"></td>
+ <td id="LC19" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L20" class="blob-num js-line-number" data-line-number="20"></td>
+ <td id="LC20" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (<span class=pl-en>\array_key_exists</span>(<span class=pl-s>'alg'</span>, <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>) && <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'alg'</span>] !== <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_alg</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L21" class="blob-num js-line-number" data-line-number="21"></td>
+ <td id="LC21" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>throw</span> <span class=pl-k>new</span> <span class=pl-v>WebAuthnException</span>(<span class=pl-s>'u2f only accepts algorithm -7 ("ES256"), but got '</span> . <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'alg'</span>], <span class=pl-v>WebAuthnException</span>::<span class=pl-c1>INVALID_DATA</span>);</td>
+ </tr>
+ <tr>
+ <td id="L22" class="blob-num js-line-number" data-line-number="22"></td>
+ <td id="LC22" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L23" class="blob-num js-line-number" data-line-number="23"></td>
+ <td id="LC23" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L24" class="blob-num js-line-number" data-line-number="24"></td>
+ <td id="LC24" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (!<span class=pl-en>\array_key_exists</span>(<span class=pl-s>'sig'</span>, <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>) || !<span class=pl-en>\is_object</span>(<span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'sig'</span>]) || !(<span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'sig'</span>] instanceof <span class=pl-v>ByteBuffer</span>)) {</td>
+ </tr>
+ <tr>
+ <td id="L25" class="blob-num js-line-number" data-line-number="25"></td>
+ <td id="LC25" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>throw</span> <span class=pl-k>new</span> <span class=pl-v>WebAuthnException</span>(<span class=pl-s>'no signature found'</span>, <span class=pl-v>WebAuthnException</span>::<span class=pl-c1>INVALID_DATA</span>);</td>
+ </tr>
+ <tr>
+ <td id="L26" class="blob-num js-line-number" data-line-number="26"></td>
+ <td id="LC26" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L27" class="blob-num js-line-number" data-line-number="27"></td>
+ <td id="LC27" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L28" class="blob-num js-line-number" data-line-number="28"></td>
+ <td id="LC28" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (!<span class=pl-en>\array_key_exists</span>(<span class=pl-s>'x5c'</span>, <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>) || !<span class=pl-en>\is_array</span>(<span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'x5c'</span>]) || <span class=pl-en>\count</span>(<span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'x5c'</span>]) !== <span class=pl-c1>1</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L29" class="blob-num js-line-number" data-line-number="29"></td>
+ <td id="LC29" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>throw</span> <span class=pl-k>new</span> <span class=pl-v>WebAuthnException</span>(<span class=pl-s>'invalid x5c certificate'</span>, <span class=pl-v>WebAuthnException</span>::<span class=pl-c1>INVALID_DATA</span>);</td>
+ </tr>
+ <tr>
+ <td id="L30" class="blob-num js-line-number" data-line-number="30"></td>
+ <td id="LC30" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L31" class="blob-num js-line-number" data-line-number="31"></td>
+ <td id="LC31" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L32" class="blob-num js-line-number" data-line-number="32"></td>
+ <td id="LC32" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (!<span class=pl-en>\is_object</span>(<span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'x5c'</span>][<span class=pl-c1>0</span>]) || !(<span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'x5c'</span>][<span class=pl-c1>0</span>] instanceof <span class=pl-v>ByteBuffer</span>)) {</td>
+ </tr>
+ <tr>
+ <td id="L33" class="blob-num js-line-number" data-line-number="33"></td>
+ <td id="LC33" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>throw</span> <span class=pl-k>new</span> <span class=pl-v>WebAuthnException</span>(<span class=pl-s>'invalid x5c certificate'</span>, <span class=pl-v>WebAuthnException</span>::<span class=pl-c1>INVALID_DATA</span>);</td>
+ </tr>
+ <tr>
+ <td id="L34" class="blob-num js-line-number" data-line-number="34"></td>
+ <td id="LC34" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L35" class="blob-num js-line-number" data-line-number="35"></td>
+ <td id="LC35" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L36" class="blob-num js-line-number" data-line-number="36"></td>
+ <td id="LC36" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_signature</span> = <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'sig'</span>]-><span class=pl-en>getBinaryString</span>();</td>
+ </tr>
+ <tr>
+ <td id="L37" class="blob-num js-line-number" data-line-number="37"></td>
+ <td id="LC37" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_x5c</span> = <span class=pl-s1><span class=pl-c1>$</span>attStmt</span>[<span class=pl-s>'x5c'</span>][<span class=pl-c1>0</span>]-><span class=pl-en>getBinaryString</span>();</td>
+ </tr>
+ <tr>
+ <td id="L38" class="blob-num js-line-number" data-line-number="38"></td>
+ <td id="LC38" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L39" class="blob-num js-line-number" data-line-number="39"></td>
+ <td id="LC39" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L40" class="blob-num js-line-number" data-line-number="40"></td>
+ <td id="LC40" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L41" class="blob-num js-line-number" data-line-number="41"></td>
+ <td id="LC41" class="blob-code blob-code-inner js-file-line"> <span class=pl-c>/*</span></td>
+ </tr>
+ <tr>
+ <td id="L42" class="blob-num js-line-number" data-line-number="42"></td>
+ <td id="LC42" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * returns the key certificate in PEM format</span></td>
+ </tr>
+ <tr>
+ <td id="L43" class="blob-num js-line-number" data-line-number="43"></td>
+ <td id="LC43" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * @return string</span></td>
+ </tr>
+ <tr>
+ <td id="L44" class="blob-num js-line-number" data-line-number="44"></td>
+ <td id="LC44" class="blob-code blob-code-inner js-file-line"><span class=pl-c> */</span></td>
+ </tr>
+ <tr>
+ <td id="L45" class="blob-num js-line-number" data-line-number="45"></td>
+ <td id="LC45" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>public</span> <span class=pl-k>function</span> <span class=pl-en>getCertificatePem</span>() {</td>
+ </tr>
+ <tr>
+ <td id="L46" class="blob-num js-line-number" data-line-number="46"></td>
+ <td id="LC46" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>pem</span> = <span class=pl-s>'-----BEGIN CERTIFICATE-----'</span> . <span class=pl-s>"\n"</span>;</td>
+ </tr>
+ <tr>
+ <td id="L47" class="blob-num js-line-number" data-line-number="47"></td>
+ <td id="LC47" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>pem</span> .= <span class=pl-en>\chunk_split</span>(<span class=pl-en>\base64_encode</span>(<span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_x5c</span>), <span class=pl-c1>64</span>, <span class=pl-s>"\n"</span>);</td>
+ </tr>
+ <tr>
+ <td id="L48" class="blob-num js-line-number" data-line-number="48"></td>
+ <td id="LC48" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>pem</span> .= <span class=pl-s>'-----END CERTIFICATE-----'</span> . <span class=pl-s>"\n"</span>;</td>
+ </tr>
+ <tr>
+ <td id="L49" class="blob-num js-line-number" data-line-number="49"></td>
+ <td id="LC49" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>return</span> <span class=pl-s1><span class=pl-c1>$</span>pem</span>;</td>
+ </tr>
+ <tr>
+ <td id="L50" class="blob-num js-line-number" data-line-number="50"></td>
+ <td id="LC50" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L51" class="blob-num js-line-number" data-line-number="51"></td>
+ <td id="LC51" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L52" class="blob-num js-line-number" data-line-number="52"></td>
+ <td id="LC52" class="blob-code blob-code-inner js-file-line"> <span class=pl-c>/**</span></td>
+ </tr>
+ <tr>
+ <td id="L53" class="blob-num js-line-number" data-line-number="53"></td>
+ <td id="LC53" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * @param string $clientDataHash</span></td>
+ </tr>
+ <tr>
+ <td id="L54" class="blob-num js-line-number" data-line-number="54"></td>
+ <td id="LC54" class="blob-code blob-code-inner js-file-line"><span class=pl-c> */</span></td>
+ </tr>
+ <tr>
+ <td id="L55" class="blob-num js-line-number" data-line-number="55"></td>
+ <td id="LC55" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>public</span> <span class=pl-k>function</span> <span class=pl-en>validateAttestation</span>(<span class=pl-s1><span class=pl-c1>$</span>clientDataHash</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L56" class="blob-num js-line-number" data-line-number="56"></td>
+ <td id="LC56" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>publicKey</span> = <span class=pl-en>\openssl_pkey_get_public</span>(<span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-en>getCertificatePem</span>());</td>
+ </tr>
+ <tr>
+ <td id="L57" class="blob-num js-line-number" data-line-number="57"></td>
+ <td id="LC57" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L58" class="blob-num js-line-number" data-line-number="58"></td>
+ <td id="LC58" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (<span class=pl-s1><span class=pl-c1>$</span>publicKey</span> === <span class=pl-c1>false</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L59" class="blob-num js-line-number" data-line-number="59"></td>
+ <td id="LC59" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>throw</span> <span class=pl-k>new</span> <span class=pl-v>WebAuthnException</span>(<span class=pl-s>'invalid public key: '</span> . <span class=pl-en>\openssl_error_string</span>(), <span class=pl-v>WebAuthnException</span>::<span class=pl-c1>INVALID_PUBLIC_KEY</span>);</td>
+ </tr>
+ <tr>
+ <td id="L60" class="blob-num js-line-number" data-line-number="60"></td>
+ <td id="LC60" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L61" class="blob-num js-line-number" data-line-number="61"></td>
+ <td id="LC61" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L62" class="blob-num js-line-number" data-line-number="62"></td>
+ <td id="LC62" class="blob-code blob-code-inner js-file-line"> <span class=pl-c>// Let verificationData be the concatenation of (0x00 || rpIdHash || clientDataHash || credentialId || publicKeyU2F)</span></td>
+ </tr>
+ <tr>
+ <td id="L63" class="blob-num js-line-number" data-line-number="63"></td>
+ <td id="LC63" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>dataToVerify</span> = <span class=pl-s>"\x00"</span>;</td>
+ </tr>
+ <tr>
+ <td id="L64" class="blob-num js-line-number" data-line-number="64"></td>
+ <td id="LC64" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>dataToVerify</span> .= <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_authenticatorData</span>-><span class=pl-en>getRpIdHash</span>();</td>
+ </tr>
+ <tr>
+ <td id="L65" class="blob-num js-line-number" data-line-number="65"></td>
+ <td id="LC65" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>dataToVerify</span> .= <span class=pl-s1><span class=pl-c1>$</span>clientDataHash</span>;</td>
+ </tr>
+ <tr>
+ <td id="L66" class="blob-num js-line-number" data-line-number="66"></td>
+ <td id="LC66" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>dataToVerify</span> .= <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_authenticatorData</span>-><span class=pl-en>getCredentialId</span>();</td>
+ </tr>
+ <tr>
+ <td id="L67" class="blob-num js-line-number" data-line-number="67"></td>
+ <td id="LC67" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>dataToVerify</span> .= <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_authenticatorData</span>-><span class=pl-en>getPublicKeyU2F</span>();</td>
+ </tr>
+ <tr>
+ <td id="L68" class="blob-num js-line-number" data-line-number="68"></td>
+ <td id="LC68" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L69" class="blob-num js-line-number" data-line-number="69"></td>
+ <td id="LC69" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>coseAlgorithm</span> = <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-en>_getCoseAlgorithm</span>(<span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_alg</span>);</td>
+ </tr>
+ <tr>
+ <td id="L70" class="blob-num js-line-number" data-line-number="70"></td>
+ <td id="LC70" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L71" class="blob-num js-line-number" data-line-number="71"></td>
+ <td id="LC71" class="blob-code blob-code-inner js-file-line"> <span class=pl-c>// check certificate</span></td>
+ </tr>
+ <tr>
+ <td id="L72" class="blob-num js-line-number" data-line-number="72"></td>
+ <td id="LC72" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>return</span> <span class=pl-en>\openssl_verify</span>(<span class=pl-s1><span class=pl-c1>$</span>dataToVerify</span>, <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-c1>_signature</span>, <span class=pl-s1><span class=pl-c1>$</span>publicKey</span>, <span class=pl-s1><span class=pl-c1>$</span>coseAlgorithm</span>-><span class=pl-c1>openssl</span>) === <span class=pl-c1>1</span>;</td>
+ </tr>
+ <tr>
+ <td id="L73" class="blob-num js-line-number" data-line-number="73"></td>
+ <td id="LC73" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L74" class="blob-num js-line-number" data-line-number="74"></td>
+ <td id="LC74" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L75" class="blob-num js-line-number" data-line-number="75"></td>
+ <td id="LC75" class="blob-code blob-code-inner js-file-line"> <span class=pl-c>/**</span></td>
+ </tr>
+ <tr>
+ <td id="L76" class="blob-num js-line-number" data-line-number="76"></td>
+ <td id="LC76" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * validates the certificate against root certificates</span></td>
+ </tr>
+ <tr>
+ <td id="L77" class="blob-num js-line-number" data-line-number="77"></td>
+ <td id="LC77" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * @param array $rootCas</span></td>
+ </tr>
+ <tr>
+ <td id="L78" class="blob-num js-line-number" data-line-number="78"></td>
+ <td id="LC78" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * @return boolean</span></td>
+ </tr>
+ <tr>
+ <td id="L79" class="blob-num js-line-number" data-line-number="79"></td>
+ <td id="LC79" class="blob-code blob-code-inner js-file-line"><span class=pl-c> * @throws WebAuthnException</span></td>
+ </tr>
+ <tr>
+ <td id="L80" class="blob-num js-line-number" data-line-number="80"></td>
+ <td id="LC80" class="blob-code blob-code-inner js-file-line"><span class=pl-c> */</span></td>
+ </tr>
+ <tr>
+ <td id="L81" class="blob-num js-line-number" data-line-number="81"></td>
+ <td id="LC81" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>public</span> <span class=pl-k>function</span> <span class=pl-en>validateRootCertificate</span>(<span class=pl-s1><span class=pl-c1>$</span>rootCas</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L82" class="blob-num js-line-number" data-line-number="82"></td>
+ <td id="LC82" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>chainC</span> = <span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-en>_createX5cChainFile</span>();</td>
+ </tr>
+ <tr>
+ <td id="L83" class="blob-num js-line-number" data-line-number="83"></td>
+ <td id="LC83" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (<span class=pl-s1><span class=pl-c1>$</span>chainC</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L84" class="blob-num js-line-number" data-line-number="84"></td>
+ <td id="LC84" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>rootCas</span>[] = <span class=pl-s1><span class=pl-c1>$</span>chainC</span>;</td>
+ </tr>
+ <tr>
+ <td id="L85" class="blob-num js-line-number" data-line-number="85"></td>
+ <td id="LC85" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L86" class="blob-num js-line-number" data-line-number="86"></td>
+ <td id="LC86" class="blob-code blob-code-inner js-file-line">
+</td>
+ </tr>
+ <tr>
+ <td id="L87" class="blob-num js-line-number" data-line-number="87"></td>
+ <td id="LC87" class="blob-code blob-code-inner js-file-line"> <span class=pl-s1><span class=pl-c1>$</span>v</span> = <span class=pl-en>\openssl_x509_checkpurpose</span>(<span class=pl-s1><span class=pl-c1>$</span><span class=pl-smi>this</span></span>-><span class=pl-en>getCertificatePem</span>(), -<span class=pl-c1>1</span>, <span class=pl-s1><span class=pl-c1>$</span>rootCas</span>);</td>
+ </tr>
+ <tr>
+ <td id="L88" class="blob-num js-line-number" data-line-number="88"></td>
+ <td id="LC88" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>if</span> (<span class=pl-s1><span class=pl-c1>$</span>v</span> === -<span class=pl-c1>1</span>) {</td>
+ </tr>
+ <tr>
+ <td id="L89" class="blob-num js-line-number" data-line-number="89"></td>
+ <td id="LC89" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>throw</span> <span class=pl-k>new</span> <span class=pl-v>WebAuthnException</span>(<span class=pl-s>'error on validating root certificate: '</span> . <span class=pl-en>\openssl_error_string</span>(), <span class=pl-v>WebAuthnException</span>::<span class=pl-c1>CERTIFICATE_NOT_TRUSTED</span>);</td>
+ </tr>
+ <tr>
+ <td id="L90" class="blob-num js-line-number" data-line-number="90"></td>
+ <td id="LC90" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L91" class="blob-num js-line-number" data-line-number="91"></td>
+ <td id="LC91" class="blob-code blob-code-inner js-file-line"> <span class=pl-k>return</span> <span class=pl-s1><span class=pl-c1>$</span>v</span>;</td>
+ </tr>
+ <tr>
+ <td id="L92" class="blob-num js-line-number" data-line-number="92"></td>
+ <td id="LC92" class="blob-code blob-code-inner js-file-line"> }</td>
+ </tr>
+ <tr>
+ <td id="L93" class="blob-num js-line-number" data-line-number="93"></td>
+ <td id="LC93" class="blob-code blob-code-inner js-file-line">}</td>
+ </tr>
+</table>
+
+ <details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
+ <summary class="btn-octicon ml-0 px-2 p-0 bg-white border border-gray-dark rounded-1" aria-label="Inline file action toolbar">
+ <svg class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path></svg>
+ </summary>
+ <details-menu>
+ <ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se mt-2" style="width:185px">
+ <li>
+ <clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;">
+ Copy lines
+ </clipboard-copy>
+ </li>
+ <li>
+ <clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;">
+ Copy permalink
+ </clipboard-copy>
+ </li>
+ <li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/lbuchs/WebAuthn/blame/e62a6615894daaf061f91bc274064c5773074f81/src/Attestation/Format/U2f.php">View git blame</a></li>
+ <li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/lbuchs/WebAuthn/issues/new">Reference in new issue</a></li>
+ </ul>
+ </details-menu>
+ </details>
+
+ </div>
+
+ </div>
+
+
+
+
+ <details class="details-reset details-overlay details-overlay-dark" id="jumpto-line-details-dialog">
+ <summary data-hotkey="l" aria-label="Jump to line"></summary>
+ <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
+ <!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get">
+ <input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus>
+ <button type="submit" class="btn" data-close-dialog>Go</button>
+</form> </details-dialog>
+ </details>
+
+ <div class="Popover anim-scale-in js-tagsearch-popover"
+ hidden
+ data-tagsearch-url="/lbuchs/WebAuthn/find-definition"
+ data-tagsearch-ref="master"
+ data-tagsearch-path="src/Attestation/Format/U2f.php"
+ data-tagsearch-lang="PHP"
+ data-hydro-click="{"event_type":"code_navigation.click_on_symbol","payload":{"action":"click_on_symbol","repository_id":149437753,"ref":"master","language":"PHP","originating_url":"https://github.com/lbuchs/WebAuthn/blob/master/src/Attestation/Format/U2f.php","user_id":null}}"
+ data-hydro-click-hmac="8624216e48f425d935124bbdbf398afde9f9355fa3c38555f17245b4353a60e8">
+ <div class="Popover-message Popover-message--large Popover-message--top-left TagsearchPopover mt-1 mb-4 mx-auto Box box-shadow-large">
+ <div class="TagsearchPopover-content js-tagsearch-popover-content overflow-auto" style="will-change:transform;">
+ </div>
+ </div>
+</div>
+
+
+
+
+ </div>
+</div>
+
+ </main>
+ </div>
+
+ </div>
+
+
+<div class="footer container-xl width-full p-responsive" role="contentinfo">
+ <div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 text-gray border-top border-gray-light ">
+ <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
+ <li class="mr-3 mr-lg-0">© 2021 GitHub, Inc.</li>
+ <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to terms, text:terms" href="https://github.com/site/terms">Terms</a></li>
+ <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to privacy, text:privacy" href="https://github.com/site/privacy">Privacy</a></li>
+ <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to security, text:security" href="https://github.com/security">Security</a></li>
+ <li class="mr-3 mr-lg-0"><a href="https://githubstatus.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
+ <li><a data-ga-click="Footer, go to help, text:help" href="https://docs.github.com">Help</a></li>
+ </ul>
+
+ <a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com">
+ <svg height="24" class="octicon octicon-mark-github" viewBox="0 0 16 16" version="1.1" width="24" aria-hidden="true"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path></svg>
+</a>
+ <ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
+ <li class="mr-3 mr-lg-0"><a data-ga-click="Footer, go to contact, text:contact" href="https://github.com/contact">Contact GitHub</a></li>
+ <li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-ga-click="Footer, go to Pricing, text:Pricing">Pricing</a></li>
+ <li class="mr-3 mr-lg-0"><a href="https://docs.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
+ <li class="mr-3 mr-lg-0"><a href="https://services.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
+ <li class="mr-3 mr-lg-0"><a href="https://github.blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
+ <li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
+ </ul>
+ </div>
+ <div class="d-flex flex-justify-center pb-6">
+ <span class="f6 text-gray-light"></span>
+ </div>
+
+
+</div>
+
+
+
+ <div id="ajax-error-message" class="ajax-error-message flash flash-error">
+ <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg>
+ <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
+ <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
+ </button>
+ You can’t perform that action at this time.
+ </div>
+
+
+ <div class="js-stale-session-flash flash flash-warn flash-banner" hidden
+ >
+ <svg class="octicon octicon-alert" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path></svg>
+ <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
+ <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
+ </div>
+ <template id="site-details-dialog">
+ <details class="details-reset details-overlay details-overlay-dark lh-default text-gray-dark hx_rsm" open>
+ <summary role="button" aria-label="Close dialog"></summary>
+ <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
+ <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
+ <svg class="octicon octicon-x" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path></svg>
+ </button>
+ <div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
+ </details-dialog>
+ </details>
+</template>
+
+ <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
+ <div class="Popover-message Popover-message--bottom-left Popover-message--large Box box-shadow-large" style="width:360px;">
+ </div>
+</div>
+
+
+ </body>
+</html>
+
diff --git a/data/web/inc/lib/composer.lock b/data/web/inc/lib/composer.lock
index 2c61844f..b00a75df 100644
--- a/data/web/inc/lib/composer.lock
+++ b/data/web/inc/lib/composer.lock
@@ -62,35 +62,39 @@
"oauth",
"oauth2"
],
+ "support": {
+ "issues": "https://github.com/bshaffer/oauth2-server-php/issues",
+ "source": "https://github.com/bshaffer/oauth2-server-php/tree/master"
+ },
"time": "2018-12-04T00:29:32+00:00"
},
{
"name": "ddeboer/imap",
- "version": "1.10.0",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/ddeboer/imap.git",
- "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde"
+ "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ddeboer/imap/zipball/fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
- "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
+ "url": "https://api.github.com/repos/ddeboer/imap/zipball/a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
+ "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
"shasum": ""
},
"require": {
"ext-iconv": "*",
"ext-imap": "*",
"ext-mbstring": "*",
- "php": "^7.2"
+ "php": "^7.3 || ^8.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.16",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^8.5",
- "zendframework/zend-mail": "^2.10"
+ "friendsofphp/php-cs-fixer": "^2.16.7",
+ "laminas/laminas-mail": "^2.12.3",
+ "phpstan/phpstan": "^0.12.57",
+ "phpstan/phpstan-phpunit": "^0.12.16",
+ "phpstan/phpstan-strict-rules": "^0.12.5",
+ "phpunit/phpunit": "^9.4.3"
},
"type": "library",
"autoload": {
@@ -122,20 +126,34 @@
"imap",
"mail"
],
- "time": "2020-01-24T08:15:24+00:00"
+ "support": {
+ "issues": "https://github.com/ddeboer/imap/issues",
+ "source": "https://github.com/ddeboer/imap/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Slamdunk",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/ddeboer",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-30T14:52:49+00:00"
},
{
"name": "matthiasmullie/minify",
- "version": "1.3.63",
+ "version": "1.3.65",
"source": {
"type": "git",
"url": "https://github.com/matthiasmullie/minify.git",
- "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117"
+ "reference": "227f19062451c55a797e0cc667ef983834e6580c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117",
- "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117",
+ "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c",
+ "reference": "227f19062451c55a797e0cc667ef983834e6580c",
"shasum": ""
},
"require": {
@@ -182,7 +200,25 @@
"minifier",
"minify"
],
- "time": "2020-01-21T20:21:08+00:00"
+ "support": {
+ "issues": "https://github.com/matthiasmullie/minify/issues",
+ "source": "https://github.com/matthiasmullie/minify/tree/1.3.65"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/[user1",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/user2",
+ "type": "github"
+ }
+ ],
+ "time": "2020-12-27T21:43:29+00:00"
},
{
"name": "matthiasmullie/path-converter",
@@ -231,6 +267,10 @@
"paths",
"relative"
],
+ "support": {
+ "issues": "https://github.com/matthiasmullie/path-converter/issues",
+ "source": "https://github.com/matthiasmullie/path-converter/tree/1.1.3"
+ },
"time": "2019-02-05T23:41:09+00:00"
},
{
@@ -285,20 +325,20 @@
},
{
"name": "paragonie/random_compat",
- "version": "v9.99.99",
+ "version": "v9.99.100",
"source": {
"type": "git",
"url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
"shasum": ""
},
"require": {
- "php": "^7"
+ "php": ">= 7"
},
"require-dev": {
"phpunit/phpunit": "4.*|5.*",
@@ -326,7 +366,12 @@
"pseudorandom",
"random"
],
- "time": "2018-07-02T15:55:56+00:00"
+ "support": {
+ "email": "[email protected]",
+ "issues": "https://github.com/paragonie/random_compat/issues",
+ "source": "https://github.com/paragonie/random_compat"
+ },
+ "time": "2020-10-15T08:29:30+00:00"
},
{
"name": "php-mime-mail-parser/php-mime-mail-parser",
@@ -408,31 +453,39 @@
"parser",
"php"
],
+ "support": {
+ "issues": "https://github.com/php-mime-mail-parser/php-mime-mail-parser/issues",
+ "source": "https://github.com/php-mime-mail-parser/php-mime-mail-parser/tree/master"
+ },
"time": "2019-09-23T11:57:58+00:00"
},
{
"name": "phpmailer/phpmailer",
- "version": "v6.1.6",
+ "version": "v6.2.0",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3"
+ "reference": "e38888a75c070304ca5514197d4847a59a5c853f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
- "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f",
+ "reference": "e38888a75c070304ca5514197d4847a59a5c853f",
"shasum": ""
},
"require": {
"ext-ctype": "*",
"ext-filter": "*",
+ "ext-hash": "*",
"php": ">=5.5.0"
},
"require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
"doctrine/annotations": "^1.2",
- "friendsofphp/php-cs-fixer": "^2.2",
- "phpunit/phpunit": "^4.8 || ^5.7"
+ "phpcompatibility/php-compatibility": "^9.3.5",
+ "roave/security-advisories": "dev-latest",
+ "squizlabs/php_codesniffer": "^3.5.6",
+ "yoast/phpunit-polyfills": "^0.2.0"
},
"suggest": {
"ext-mbstring": "Needed to send email in multibyte encoding charset",
@@ -470,13 +523,17 @@
}
],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+ "support": {
+ "issues": "https://github.com/PHPMailer/PHPMailer/issues",
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0"
+ },
"funding": [
{
- "url": "https://github.com/synchro",
+ "url": "https://github.com/Synchro",
"type": "github"
}
],
- "time": "2020-05-27T12:24:03+00:00"
+ "time": "2020-11-25T15:24:57+00:00"
},
{
"name": "robthree/twofactorauth",
@@ -527,6 +584,10 @@
"php",
"tfa"
],
+ "support": {
+ "issues": "https://github.com/RobThree/TwoFactorAuth/issues",
+ "source": "https://github.com/RobThree/TwoFactorAuth"
+ },
"time": "2020-01-02T19:56:46+00:00"
},
{
@@ -577,6 +638,11 @@
"php",
"text"
],
+ "support": {
+ "email": "[email protected]",
+ "issues": "https://github.com/soundasleep/html2text/issues",
+ "source": "https://github.com/soundasleep/html2text/tree/master"
+ },
"time": "2017-04-19T22:01:50+00:00"
},
{
@@ -614,6 +680,10 @@
],
"description": "Library for U2F implementation",
"homepage": "https://developers.yubico.com/php-u2flib-server",
+ "support": {
+ "issues": "https://github.com/Yubico/php-u2flib-server/issues",
+ "source": "https://github.com/Yubico/php-u2flib-server/tree/1.0.2"
+ },
"time": "2018-09-07T08:16:44+00:00"
}
],
@@ -625,5 +695,5 @@
"prefer-lowest": false,
"platform": [],
"platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "plugin-api-version": "2.0.0"
}
diff --git a/data/web/inc/lib/vendor/composer/ClassLoader.php b/data/web/inc/lib/vendor/composer/ClassLoader.php
index fce8549f..1a58957d 100644
--- a/data/web/inc/lib/vendor/composer/ClassLoader.php
+++ b/data/web/inc/lib/vendor/composer/ClassLoader.php
@@ -37,8 +37,8 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier <[email protected]>
* @author Jordi Boggiano <[email protected]>
- * @see http://www.php-fig.org/psr/psr-0/
- * @see http://www.php-fig.org/psr/psr-4/
+ * @see https://www.php-fig.org/psr/psr-0/
+ * @see https://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
@@ -60,7 +60,7 @@ class ClassLoader
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
- return call_user_func_array('array_merge', $this->prefixesPsr0);
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
}
return array();
diff --git a/data/web/inc/lib/vendor/composer/InstalledVersions.php b/data/web/inc/lib/vendor/composer/InstalledVersions.php
new file mode 100644
index 00000000..2d167277
--- /dev/null
+++ b/data/web/inc/lib/vendor/composer/InstalledVersions.php
@@ -0,0 +1,332 @@
+<?php
+
+
+
+
+
+
+
+
+
+
+
+namespace Composer;
+
+use Composer\Semver\VersionParser;
+
+
+
+
+
+
+class InstalledVersions
+{
+private static $installed = array (
+ 'root' =>
+ array (
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => NULL,
+ 'name' => '__root__',
+ ),
+ 'versions' =>
+ array (
+ '__root__' =>
+ array (
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => NULL,
+ ),
+ 'bshaffer/oauth2-server-php' =>
+ array (
+ 'pretty_version' => 'v1.11.1',
+ 'version' => '1.11.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
+ ),
+ 'ddeboer/imap' =>
+ array (
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a089dfcb9d177f921eb5dadc8d4144a44dff22ee',
+ ),
+ 'exorus/php-mime-mail-parser' =>
+ array (
+ 'replaced' =>
+ array (
+ 0 => '*',
+ ),
+ ),
+ 'matthiasmullie/minify' =>
+ array (
+ 'pretty_version' => '1.3.65',
+ 'version' => '1.3.65.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '227f19062451c55a797e0cc667ef983834e6580c',
+ ),
+ 'matthiasmullie/path-converter' =>
+ array (
+ 'pretty_version' => '1.1.3',
+ 'version' => '1.1.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
+ ),
+ 'messaged/php-mime-mail-parser' =>
+ array (
+ 'replaced' =>
+ array (
+ 0 => '*',
+ ),
+ ),
+ 'mustangostang/spyc' =>
+ array (
+ 'pretty_version' => '0.6.3',
+ 'version' => '0.6.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0',
+ ),
+ 'paragonie/random_compat' =>
+ array (
+ 'pretty_version' => 'v9.99.100',
+ 'version' => '9.99.100.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
+ ),
+ 'php-mime-mail-parser/php-mime-mail-parser' =>
+ array (
+ 'pretty_version' => '5.0.5',
+ 'version' => '5.0.5.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '27983433aabeccee832573c3c56e6a4855e57745',
+ ),
+ 'phpmailer/phpmailer' =>
+ array (
+ 'pretty_version' => 'v6.2.0',
+ 'version' => '6.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f',
+ ),
+ 'robthree/twofactorauth' =>
+ array (
+ 'pretty_version' => '1.7.0',
+ 'version' => '1.7.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '37983bf675c5baca09d19d6705170489d0df0002',
+ ),
+ 'soundasleep/html2text' =>
+ array (
+ 'pretty_version' => '0.5.0',
+ 'version' => '0.5.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
+ ),
+ 'yubico/u2flib-server' =>
+ array (
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '55d813acf68212ad2cadecde07551600d6971939',
+ ),
+ ),
+);
+
+
+
+
+
+
+
+public static function getInstalledPackages()
+{
+return array_keys(self::$installed['versions']);
+}
+
+
+
+
+
+
+
+
+
+public static function isInstalled($packageName)
+{
+return isset(self::$installed['versions'][$packageName]);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public static function satisfies(VersionParser $parser, $packageName, $constraint)
+{
+$constraint = $parser->parseConstraints($constraint);
+$provided = $parser->parseConstraints(self::getVersionRanges($packageName));
+
+return $provided->matches($constraint);
+}
+
+
+
+
+
+
+
+
+
+
+public static function getVersionRanges($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+$ranges = array();
+if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
+$ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
+}
+if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
+}
+if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
+}
+if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
+$ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
+}
+
+return implode(' || ', $ranges);
+}
+
+
+
+
+
+public static function getVersion($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+if (!isset(self::$installed['versions'][$packageName]['version'])) {
+return null;
+}
+
+return self::$installed['versions'][$packageName]['version'];
+}
+
+
+
+
+
+public static function getPrettyVersion($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
+return null;
+}
+
+return self::$installed['versions'][$packageName]['pretty_version'];
+}
+
+
+
+
+
+public static function getReference($packageName)
+{
+if (!isset(self::$installed['versions'][$packageName])) {
+throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
+}
+
+if (!isset(self::$installed['versions'][$packageName]['reference'])) {
+return null;
+}
+
+return self::$installed['versions'][$packageName]['reference'];
+}
+
+
+
+
+
+public static function getRootPackage()
+{
+return self::$installed['root'];
+}
+
+
+
+
+
+
+
+public static function getRawData()
+{
+return self::$installed;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public static function reload($data)
+{
+self::$installed = $data;
+}
+}
diff --git a/data/web/inc/lib/vendor/composer/autoload_classmap.php b/data/web/inc/lib/vendor/composer/autoload_classmap.php
index 44393069..827360c3 100644
--- a/data/web/inc/lib/vendor/composer/autoload_classmap.php
+++ b/data/web/inc/lib/vendor/composer/autoload_classmap.php
@@ -6,6 +6,7 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
+ 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
'u2flib_server\\Error' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
'u2flib_server\\RegisterRequest' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
'u2flib_server\\Registration' => $vendorDir . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
diff --git a/data/web/inc/lib/vendor/composer/autoload_real.php b/data/web/inc/lib/vendor/composer/autoload_real.php
index b6274e8f..d380e489 100644
--- a/data/web/inc/lib/vendor/composer/autoload_real.php
+++ b/data/web/inc/lib/vendor/composer/autoload_real.php
@@ -22,13 +22,15 @@ class ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b
return self::$loader;
}
+ require __DIR__ . '/platform_check.php';
+
spl_autoload_register(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit873464e4bd965a3168f133248b1b218b', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
- require_once __DIR__ . '/autoload_static.php';
+ require __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit873464e4bd965a3168f133248b1b218b::getInitializer($loader));
} else {
diff --git a/data/web/inc/lib/vendor/composer/autoload_static.php b/data/web/inc/lib/vendor/composer/autoload_static.php
index 5867eee2..94db3884 100644
--- a/data/web/inc/lib/vendor/composer/autoload_static.php
+++ b/data/web/inc/lib/vendor/composer/autoload_static.php
@@ -77,6 +77,7 @@ class ComposerStaticInit873464e4bd965a3168f133248b1b218b
);
public static $classMap = array (
+ 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
'u2flib_server\\Error' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
'u2flib_server\\RegisterRequest' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
'u2flib_server\\Registration' => __DIR__ . '/..' . '/yubico/u2flib-server/src/u2flib_server/U2F.php',
diff --git a/data/web/inc/lib/vendor/composer/installed.json b/data/web/inc/lib/vendor/composer/installed.json
index e38fd636..72d1d8d5 100644
--- a/data/web/inc/lib/vendor/composer/installed.json
+++ b/data/web/inc/lib/vendor/composer/installed.json
@@ -1,634 +1,694 @@
-[
- {
- "name": "bshaffer/oauth2-server-php",
- "version": "v1.11.1",
- "version_normalized": "1.11.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/bshaffer/oauth2-server-php.git",
- "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa",
- "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.9"
- },
- "require-dev": {
- "aws/aws-sdk-php": "~2.8",
- "firebase/php-jwt": "~2.2",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^4.0",
- "predis/predis": "dev-master",
- "thobbs/phpcassa": "dev-master"
- },
- "suggest": {
- "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
- "firebase/php-jwt": "~2.2 is required to use JWT features",
- "mongodb/mongodb": "^1.1 is required to use MongoDB storage",
- "predis/predis": "Required to use Redis storage",
- "thobbs/phpcassa": "Required to use Cassandra storage"
- },
- "time": "2018-12-04T00:29:32+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-0": {
- "OAuth2": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brent Shaffer",
- "email": "[email protected]",
- "homepage": "http://brentertainment.com"
- }
- ],
- "description": "OAuth2 Server for PHP",
- "homepage": "http://github.com/bshaffer/oauth2-server-php",
- "keywords": [
- "auth",
- "oauth",
- "oauth2"
- ]
- },
- {
- "name": "ddeboer/imap",
- "version": "1.10.0",
- "version_normalized": "1.10.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ddeboer/imap.git",
- "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ddeboer/imap/zipball/fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
- "reference": "fc09dbf6fb9ba7317a95c719e45893efc4fe6bde",
- "shasum": ""
- },
- "require": {
- "ext-iconv": "*",
- "ext-imap": "*",
- "ext-mbstring": "*",
- "php": "^7.2"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^2.16",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^8.5",
- "zendframework/zend-mail": "^2.10"
- },
- "time": "2020-01-24T08:15:24+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Ddeboer\\Imap\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "David de Boer",
- "email": "[email protected]"
- },
- {
- "name": "Filippo Tessarotto",
- "email": "[email protected]"
- },
- {
- "name": "Community contributors",
- "homepage": "https://github.com/ddeboer/imap/graphs/contributors"
- }
- ],
- "description": "Object-oriented IMAP for PHP",
- "keywords": [
- "email",
- "imap",
- "mail"
- ]
- },
- {
- "name": "matthiasmullie/minify",
- "version": "1.3.63",
- "version_normalized": "1.3.63.0",
- "source": {
- "type": "git",
- "url": "https://github.com/matthiasmullie/minify.git",
- "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/9ba1b459828adc13430f4dd6c49dae4950dc4117",
- "reference": "9ba1b459828adc13430f4dd6c49dae4950dc4117",
- "shasum": ""
- },
- "require": {
- "ext-pcre": "*",
- "matthiasmullie/path-converter": "~1.1",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "~2.0",
- "matthiasmullie/scrapbook": "~1.0",
- "phpunit/phpunit": "~4.8"
- },
- "suggest": {
- "psr/cache-implementation": "Cache implementation to use with Minify::cache"
- },
- "time": "2020-01-21T20:21:08+00:00",
- "bin": [
- "bin/minifycss",
- "bin/minifyjs"
- ],
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "MatthiasMullie\\Minify\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matthias Mullie",
- "email": "[email protected]",
- "homepage": "http://www.mullie.eu",
- "role": "Developer"
- }
- ],
- "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
- "homepage": "http://www.minifier.org",
- "keywords": [
- "JS",
- "css",
- "javascript",
- "minifier",
- "minify"
- ]
- },
- {
- "name": "matthiasmullie/path-converter",
- "version": "1.1.3",
- "version_normalized": "1.1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/matthiasmullie/path-converter.git",
- "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9",
- "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9",
- "shasum": ""
- },
- "require": {
- "ext-pcre": "*",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8"
- },
- "time": "2019-02-05T23:41:09+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "MatthiasMullie\\PathConverter\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matthias Mullie",
- "email": "[email protected]",
- "homepage": "http://www.mullie.eu",
- "role": "Developer"
- }
- ],
- "description": "Relative path converter",
- "homepage": "http://github.com/matthiasmullie/path-converter",
- "keywords": [
- "converter",
- "path",
- "paths",
- "relative"
- ]
- },
- {
- "name": "mustangostang/spyc",
- "version": "0.6.3",
- "version_normalized": "0.6.3.0",
- "source": {
- "type": "git",
- "url": "[email protected]:mustangostang/spyc.git",
- "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
- "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.1"
- },
- "require-dev": {
- "phpunit/phpunit": "4.3.*@dev"
- },
- "time": "2019-09-10T13:16:29+00:00",
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.5.x-dev"
- }
- },
- "installation-source": "dist",
- "autoload": {
- "files": [
- "Spyc.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "mustangostang",
- "email": "[email protected]"
- }
- ],
- "description": "A simple YAML loader/dumper class for PHP",
- "homepage": "https://github.com/mustangostang/spyc/",
- "keywords": [
- "spyc",
- "yaml",
- "yml"
- ]
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "version_normalized": "9.99.99.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "time": "2018-07-02T15:55:56+00:00",
- "type": "library",
- "installation-source": "dist",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "[email protected]",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ]
- },
- {
- "name": "php-mime-mail-parser/php-mime-mail-parser",
- "version": "5.0.5",
- "version_normalized": "5.0.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-mime-mail-parser/php-mime-mail-parser.git",
- "reference": "27983433aabeccee832573c3c56e6a4855e57745"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-mime-mail-parser/php-mime-mail-parser/zipball/27983433aabeccee832573c3c56e6a4855e57745",
- "reference": "27983433aabeccee832573c3c56e6a4855e57745",
- "shasum": ""
- },
- "require": {
- "ext-mailparse": "*",
- "php": "^7.1"
- },
- "replace": {
- "exorus/php-mime-mail-parser": "*",
- "messaged/php-mime-mail-parser": "*"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/php-token-stream": "^3.0",
- "phpunit/phpunit": "^7.0",
- "squizlabs/php_codesniffer": "^3.4"
- },
- "time": "2019-09-23T11:57:58+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PhpMimeMailParser\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "eXorus",
- "email": "[email protected]",
- "homepage": "https://github.com/eXorus/",
- "role": "Developer"
- },
- {
- "name": "M.Valinskis",
- "email": "[email protected]",
- "homepage": "https://code.google.com/p/php-mime-mail-parser",
- "role": "Developer"
- },
- {
- "name": "eugene.emmett.wood",
- "email": "[email protected]",
- "homepage": "https://code.google.com/p/php-mime-mail-parser",
- "role": "Developer"
- },
- {
- "name": "alknetso",
- "email": "[email protected]",
- "homepage": "https://code.google.com/p/php-mime-mail-parser",
- "role": "Developer"
- },
- {
- "name": "bucabay",
- "email": "[email protected]",
- "homepage": "http://www.fijiwebdesign.com",
- "role": "Developer"
- }
- ],
- "description": "A fully tested email parser for PHP 7.1+ (mailparse extension wrapper).",
- "homepage": "https://github.com/php-mime-mail-parser/php-mime-mail-parser",
- "keywords": [
- "MimeMailParser",
- "mail",
- "mailparse",
- "mime",
- "parser",
- "php"
- ]
- },
- {
- "name": "phpmailer/phpmailer",
- "version": "v6.1.6",
- "version_normalized": "6.1.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHPMailer/PHPMailer.git",
- "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
- "reference": "c2796cb1cb99d7717290b48c4e6f32cb6c60b7b3",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-filter": "*",
- "php": ">=5.5.0"
- },
- "require-dev": {
- "doctrine/annotations": "^1.2",
- "friendsofphp/php-cs-fixer": "^2.2",
- "phpunit/phpunit": "^4.8 || ^5.7"
- },
- "suggest": {
- "ext-mbstring": "Needed to send email in multibyte encoding charset",
- "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
- "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
- "psr/log": "For optional PSR-3 debug logging",
- "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
- "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
- },
- "time": "2020-05-27T12:24:03+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PHPMailer\\PHPMailer\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1-only"
- ],
- "authors": [
- {
- "name": "Marcus Bointon",
- "email": "[email protected]"
- },
- {
- "name": "Jim Jagielski",
- "email": "[email protected]"
- },
- {
- "name": "Andy Prevost",
- "email": "[email protected]"
- },
- {
- "name": "Brent R. Matzelle"
- }
- ],
- "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
- "funding": [
- {
- "url": "https://github.com/synchro",
- "type": "github"
- }
- ]
- },
- {
- "name": "robthree/twofactorauth",
- "version": "1.7.0",
- "version_normalized": "1.7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/RobThree/TwoFactorAuth.git",
- "reference": "37983bf675c5baca09d19d6705170489d0df0002"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/RobThree/TwoFactorAuth/zipball/37983bf675c5baca09d19d6705170489d0df0002",
- "reference": "37983bf675c5baca09d19d6705170489d0df0002",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6.0"
- },
- "require-dev": {
- "phpunit/phpunit": "@stable"
- },
- "time": "2020-01-02T19:56:46+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "RobThree\\Auth\\": "lib"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Rob Janssen",
- "homepage": "http://robiii.me",
- "role": "Developer"
- }
- ],
- "description": "Two Factor Authentication",
- "homepage": "https://github.com/RobThree/TwoFactorAuth",
- "keywords": [
- "Authentication",
- "MFA",
- "Multi Factor Authentication",
- "Two Factor Authentication",
- "authenticator",
- "authy",
- "php",
- "tfa"
- ]
- },
- {
- "name": "soundasleep/html2text",
- "version": "0.5.0",
- "version_normalized": "0.5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/soundasleep/html2text.git",
- "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/soundasleep/html2text/zipball/cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad",
- "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-libxml": "*",
- "php": ">=5.3.2"
- },
- "require-dev": {
- "phpunit/phpunit": ">=4.0",
- "soundasleep/component-tests": "dev-master"
- },
- "time": "2017-04-19T22:01:50+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Html2Text\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "EPL-1.0"
- ],
- "authors": [
- {
- "name": "Jevon Wright",
- "homepage": "https://jevon.org",
- "role": "Developer"
- }
- ],
- "description": "A PHP script to convert HTML into a plain text format",
- "homepage": "https://github.com/soundasleep/html2text",
- "keywords": [
- "email",
- "html",
- "php",
- "text"
- ]
- },
- {
- "name": "yubico/u2flib-server",
- "version": "1.0.2",
- "version_normalized": "1.0.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Yubico/php-u2flib-server.git",
- "reference": "55d813acf68212ad2cadecde07551600d6971939"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Yubico/php-u2flib-server/zipball/55d813acf68212ad2cadecde07551600d6971939",
- "reference": "55d813acf68212ad2cadecde07551600d6971939",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "paragonie/random_compat": ">= 1",
- "php": ">=5.6"
- },
- "require-dev": {
- "phpunit/phpunit": "~5.7",
- "vimeo/psalm": "^0|^1|^2"
- },
- "time": "2018-09-07T08:16:44+00:00",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "description": "Library for U2F implementation",
- "homepage": "https://developers.yubico.com/php-u2flib-server"
- }
-]
+{
+ "packages": [
+ {
+ "name": "bshaffer/oauth2-server-php",
+ "version": "v1.11.1",
+ "version_normalized": "1.11.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/bshaffer/oauth2-server-php.git",
+ "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/bshaffer/oauth2-server-php/zipball/5a0c8000d4763b276919e2106f54eddda6bc50fa",
+ "reference": "5a0c8000d4763b276919e2106f54eddda6bc50fa",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "~2.8",
+ "firebase/php-jwt": "~2.2",
+ "mongodb/mongodb": "^1.1",
+ "phpunit/phpunit": "^4.0",
+ "predis/predis": "dev-master",
+ "thobbs/phpcassa": "dev-master"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "~2.8 is required to use DynamoDB storage",
+ "firebase/php-jwt": "~2.2 is required to use JWT features",
+ "mongodb/mongodb": "^1.1 is required to use MongoDB storage",
+ "predis/predis": "Required to use Redis storage",
+ "thobbs/phpcassa": "Required to use Cassandra storage"
+ },
+ "time": "2018-12-04T00:29:32+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "OAuth2": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Brent Shaffer",
+ "email": "[email protected]",
+ "homepage": "http://brentertainment.com"
+ }
+ ],
+ "description": "OAuth2 Server for PHP",
+ "homepage": "http://github.com/bshaffer/oauth2-server-php",
+ "keywords": [
+ "auth",
+ "oauth",
+ "oauth2"
+ ],
+ "install-path": "../bshaffer/oauth2-server-php"
+ },
+ {
+ "name": "ddeboer/imap",
+ "version": "1.11.0",
+ "version_normalized": "1.11.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ddeboer/imap.git",
+ "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ddeboer/imap/zipball/a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
+ "reference": "a089dfcb9d177f921eb5dadc8d4144a44dff22ee",
+ "shasum": ""
+ },
+ "require": {
+ "ext-iconv": "*",
+ "ext-imap": "*",
+ "ext-mbstring": "*",
+ "php": "^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.16.7",
+ "laminas/laminas-mail": "^2.12.3",
+ "phpstan/phpstan": "^0.12.57",
+ "phpstan/phpstan-phpunit": "^0.12.16",
+ "phpstan/phpstan-strict-rules": "^0.12.5",
+ "phpunit/phpunit": "^9.4.3"
+ },
+ "time": "2020-11-30T14:52:49+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Ddeboer\\Imap\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "David de Boer",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Filippo Tessarotto",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Community contributors",
+ "homepage": "https://github.com/ddeboer/imap/graphs/contributors"
+ }
+ ],
+ "description": "Object-oriented IMAP for PHP",
+ "keywords": [
+ "email",
+ "imap",
+ "mail"
+ ],
+ "support": {
+ "issues": "https://github.com/ddeboer/imap/issues",
+ "source": "https://github.com/ddeboer/imap/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Slamdunk",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/ddeboer",
+ "type": "github"
+ }
+ ],
+ "install-path": "../ddeboer/imap"
+ },
+ {
+ "name": "matthiasmullie/minify",
+ "version": "1.3.65",
+ "version_normalized": "1.3.65.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/matthiasmullie/minify.git",
+ "reference": "227f19062451c55a797e0cc667ef983834e6580c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/matthiasmullie/minify/zipball/227f19062451c55a797e0cc667ef983834e6580c",
+ "reference": "227f19062451c55a797e0cc667ef983834e6580c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "matthiasmullie/path-converter": "~1.1",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "~2.0",
+ "matthiasmullie/scrapbook": "~1.0",
+ "phpunit/phpunit": "~4.8"
+ },
+ "suggest": {
+ "psr/cache-implementation": "Cache implementation to use with Minify::cache"
+ },
+ "time": "2020-12-27T21:43:29+00:00",
+ "bin": [
+ "bin/minifycss",
+ "bin/minifyjs"
+ ],
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "MatthiasMullie\\Minify\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthias Mullie",
+ "email": "[email protected]",
+ "homepage": "http://www.mullie.eu",
+ "role": "Developer"
+ }
+ ],
+ "description": "CSS & JavaScript minifier, in PHP. Removes whitespace, strips comments, combines files (incl. @import statements and small assets in CSS files), and optimizes/shortens a few common programming patterns.",
+ "homepage": "http://www.minifier.org",
+ "keywords": [
+ "JS",
+ "css",
+ "javascript",
+ "minifier",
+ "minify"
+ ],
+ "support": {
+ "issues": "https://github.com/matthiasmullie/minify/issues",
+ "source": "https://github.com/matthiasmullie/minify/tree/1.3.65"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/[user1",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g.",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/user2",
+ "type": "github"
+ }
+ ],
+ "install-path": "../matthiasmullie/minify"
+ },
+ {
+ "name": "matthiasmullie/path-converter",
+ "version": "1.1.3",
+ "version_normalized": "1.1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/matthiasmullie/path-converter.git",
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/matthiasmullie/path-converter/zipball/e7d13b2c7e2f2268e1424aaed02085518afa02d9",
+ "reference": "e7d13b2c7e2f2268e1424aaed02085518afa02d9",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "time": "2019-02-05T23:41:09+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "MatthiasMullie\\PathConverter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthias Mullie",
+ "email": "[email protected]",
+ "homepage": "http://www.mullie.eu",
+ "role": "Developer"
+ }
+ ],
+ "description": "Relative path converter",
+ "homepage": "http://github.com/matthiasmullie/path-converter",
+ "keywords": [
+ "converter",
+ "path",
+ "paths",
+ "relative"
+ ],
+ "install-path": "../matthiasmullie/path-converter"
+ },
+ {
+ "name": "mustangostang/spyc",
+ "version": "0.6.3",
+ "version_normalized": "0.6.3.0",
+ "source": {
+ "type": "git",
+ "url": "[email protected]:mustangostang/spyc.git",
+ "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mustangostang/spyc/zipball/4627c838b16550b666d15aeae1e5289dd5b77da0",
+ "reference": "4627c838b16550b666d15aeae1e5289dd5b77da0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.3.*@dev"
+ },
+ "time": "2019-09-10T13:16:29+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "files": [
+ "Spyc.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "mustangostang",
+ "email": "[email protected]"
+ }
+ ],
+ "description": "A simple YAML loader/dumper class for PHP",
+ "homepage": "https://github.com/mustangostang/spyc/",
+ "keywords": [
+ "spyc",
+ "yaml",
+ "yml"
+ ],
+ "install-path": "../mustangostang/spyc"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v9.99.100",
+ "version_normalized": "9.99.100.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">= 7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*",
+ "vimeo/psalm": "^1"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "time": "2020-10-15T08:29:30+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "[email protected]",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ],
+ "support": {
+ "email": "[email protected]",
+ "issues": "https://github.com/paragonie/random_compat/issues",
+ "source": "https://github.com/paragonie/random_compat"
+ },
+ "install-path": "../paragonie/random_compat"
+ },
+ {
+ "name": "php-mime-mail-parser/php-mime-mail-parser",
+ "version": "5.0.5",
+ "version_normalized": "5.0.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-mime-mail-parser/php-mime-mail-parser.git",
+ "reference": "27983433aabeccee832573c3c56e6a4855e57745"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-mime-mail-parser/php-mime-mail-parser/zipball/27983433aabeccee832573c3c56e6a4855e57745",
+ "reference": "27983433aabeccee832573c3c56e6a4855e57745",
+ "shasum": ""
+ },
+ "require": {
+ "ext-mailparse": "*",
+ "php": "^7.1"
+ },
+ "replace": {
+ "exorus/php-mime-mail-parser": "*",
+ "messaged/php-mime-mail-parser": "*"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/php-token-stream": "^3.0",
+ "phpunit/phpunit": "^7.0",
+ "squizlabs/php_codesniffer": "^3.4"
+ },
+ "time": "2019-09-23T11:57:58+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PhpMimeMailParser\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "eXorus",
+ "email": "[email protected]",
+ "homepage": "https://github.com/eXorus/",
+ "role": "Developer"
+ },
+ {
+ "name": "M.Valinskis",
+ "email": "[email protected]",
+ "homepage": "https://code.google.com/p/php-mime-mail-parser",
+ "role": "Developer"
+ },
+ {
+ "name": "eugene.emmett.wood",
+ "email": "[email protected]",
+ "homepage": "https://code.google.com/p/php-mime-mail-parser",
+ "role": "Developer"
+ },
+ {
+ "name": "alknetso",
+ "email": "[email protected]",
+ "homepage": "https://code.google.com/p/php-mime-mail-parser",
+ "role": "Developer"
+ },
+ {
+ "name": "bucabay",
+ "email": "[email protected]",
+ "homepage": "http://www.fijiwebdesign.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "A fully tested email parser for PHP 7.1+ (mailparse extension wrapper).",
+ "homepage": "https://github.com/php-mime-mail-parser/php-mime-mail-parser",
+ "keywords": [
+ "MimeMailParser",
+ "mail",
+ "mailparse",
+ "mime",
+ "parser",
+ "php"
+ ],
+ "install-path": "../php-mime-mail-parser/php-mime-mail-parser"
+ },
+ {
+ "name": "phpmailer/phpmailer",
+ "version": "v6.2.0",
+ "version_normalized": "6.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PHPMailer/PHPMailer.git",
+ "reference": "e38888a75c070304ca5514197d4847a59a5c853f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/e38888a75c070304ca5514197d4847a59a5c853f",
+ "reference": "e38888a75c070304ca5514197d4847a59a5c853f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "ext-filter": "*",
+ "ext-hash": "*",
+ "php": ">=5.5.0"
+ },
+ "require-dev": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.2",
+ "phpcompatibility/php-compatibility": "^9.3.5",
+ "roave/security-advisories": "dev-latest",
+ "squizlabs/php_codesniffer": "^3.5.6",
+ "yoast/phpunit-polyfills": "^0.2.0"
+ },
+ "suggest": {
+ "ext-mbstring": "Needed to send email in multibyte encoding charset",
+ "hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+ "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+ "psr/log": "For optional PSR-3 debug logging",
+ "stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
+ "symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
+ },
+ "time": "2020-11-25T15:24:57+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "PHPMailer\\PHPMailer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL-2.1-only"
+ ],
+ "authors": [
+ {
+ "name": "Marcus Bointon",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Jim Jagielski",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Andy Prevost",
+ "email": "[email protected]"
+ },
+ {
+ "name": "Brent R. Matzelle"
+ }
+ ],
+ "description": "PHPMailer is a full-featured email creation and transfer class for PHP",
+ "support": {
+ "issues": "https://github.com/PHPMailer/PHPMailer/issues",
+ "source": "https://github.com/PHPMailer/PHPMailer/tree/v6.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Synchro",
+ "type": "github"
+ }
+ ],
+ "install-path": "../phpmailer/phpmailer"
+ },
+ {
+ "name": "robthree/twofactorauth",
+ "version": "1.7.0",
+ "version_normalized": "1.7.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/RobThree/TwoFactorAuth.git",
+ "reference": "37983bf675c5baca09d19d6705170489d0df0002"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/RobThree/TwoFactorAuth/zipball/37983bf675c5baca09d19d6705170489d0df0002",
+ "reference": "37983bf675c5baca09d19d6705170489d0df0002",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "@stable"
+ },
+ "time": "2020-01-02T19:56:46+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "RobThree\\Auth\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Rob Janssen",
+ "homepage": "http://robiii.me",
+ "role": "Developer"
+ }
+ ],
+ "description": "Two Factor Authentication",
+ "homepage": "https://github.com/RobThree/TwoFactorAuth",
+ "keywords": [
+ "Authentication",
+ "MFA",
+ "Multi Factor Authentication",
+ "Two Factor Authentication",
+ "authenticator",
+ "authy",
+ "php",
+ "tfa"
+ ],
+ "install-path": "../robthree/twofactorauth"
+ },
+ {
+ "name": "soundasleep/html2text",
+ "version": "0.5.0",
+ "version_normalized": "0.5.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/soundasleep/html2text.git",
+ "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/soundasleep/html2text/zipball/cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad",
+ "reference": "cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=4.0",
+ "soundasleep/component-tests": "dev-master"
+ },
+ "time": "2017-04-19T22:01:50+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Html2Text\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "EPL-1.0"
+ ],
+ "authors": [
+ {
+ "name": "Jevon Wright",
+ "homepage": "https://jevon.org",
+ "role": "Developer"
+ }
+ ],
+ "description": "A PHP script to convert HTML into a plain text format",
+ "homepage": "https://github.com/soundasleep/html2text",
+ "keywords": [
+ "email",
+ "html",
+ "php",
+ "text"
+ ],
+ "install-path": "../soundasleep/html2text"
+ },
+ {
+ "name": "yubico/u2flib-server",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Yubico/php-u2flib-server.git",
+ "reference": "55d813acf68212ad2cadecde07551600d6971939"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Yubico/php-u2flib-server/zipball/55d813acf68212ad2cadecde07551600d6971939",
+ "reference": "55d813acf68212ad2cadecde07551600d6971939",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "paragonie/random_compat": ">= 1",
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~5.7",
+ "vimeo/psalm": "^0|^1|^2"
+ },
+ "time": "2018-09-07T08:16:44+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "Library for U2F implementation",
+ "homepage": "https://developers.yubico.com/php-u2flib-server",
+ "install-path": "../yubico/u2flib-server"
+ }
+ ],
+ "dev": true,
+ "dev-package-names": []
+}
diff --git a/data/web/inc/lib/vendor/composer/installed.php b/data/web/inc/lib/vendor/composer/installed.php
new file mode 100644
index 00000000..189c9b77
--- /dev/null
+++ b/data/web/inc/lib/vendor/composer/installed.php
@@ -0,0 +1,137 @@
+<?php return array (
+ 'root' =>
+ array (
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => NULL,
+ 'name' => '__root__',
+ ),
+ 'versions' =>
+ array (
+ '__root__' =>
+ array (
+ 'pretty_version' => '1.0.0+no-version-set',
+ 'version' => '1.0.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => NULL,
+ ),
+ 'bshaffer/oauth2-server-php' =>
+ array (
+ 'pretty_version' => 'v1.11.1',
+ 'version' => '1.11.1.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '5a0c8000d4763b276919e2106f54eddda6bc50fa',
+ ),
+ 'ddeboer/imap' =>
+ array (
+ 'pretty_version' => '1.11.0',
+ 'version' => '1.11.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'a089dfcb9d177f921eb5dadc8d4144a44dff22ee',
+ ),
+ 'exorus/php-mime-mail-parser' =>
+ array (
+ 'replaced' =>
+ array (
+ 0 => '*',
+ ),
+ ),
+ 'matthiasmullie/minify' =>
+ array (
+ 'pretty_version' => '1.3.65',
+ 'version' => '1.3.65.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '227f19062451c55a797e0cc667ef983834e6580c',
+ ),
+ 'matthiasmullie/path-converter' =>
+ array (
+ 'pretty_version' => '1.1.3',
+ 'version' => '1.1.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e7d13b2c7e2f2268e1424aaed02085518afa02d9',
+ ),
+ 'messaged/php-mime-mail-parser' =>
+ array (
+ 'replaced' =>
+ array (
+ 0 => '*',
+ ),
+ ),
+ 'mustangostang/spyc' =>
+ array (
+ 'pretty_version' => '0.6.3',
+ 'version' => '0.6.3.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '4627c838b16550b666d15aeae1e5289dd5b77da0',
+ ),
+ 'paragonie/random_compat' =>
+ array (
+ 'pretty_version' => 'v9.99.100',
+ 'version' => '9.99.100.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '996434e5492cb4c3edcb9168db6fbb1359ef965a',
+ ),
+ 'php-mime-mail-parser/php-mime-mail-parser' =>
+ array (
+ 'pretty_version' => '5.0.5',
+ 'version' => '5.0.5.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '27983433aabeccee832573c3c56e6a4855e57745',
+ ),
+ 'phpmailer/phpmailer' =>
+ array (
+ 'pretty_version' => 'v6.2.0',
+ 'version' => '6.2.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'e38888a75c070304ca5514197d4847a59a5c853f',
+ ),
+ 'robthree/twofactorauth' =>
+ array (
+ 'pretty_version' => '1.7.0',
+ 'version' => '1.7.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '37983bf675c5baca09d19d6705170489d0df0002',
+ ),
+ 'soundasleep/html2text' =>
+ array (
+ 'pretty_version' => '0.5.0',
+ 'version' => '0.5.0.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => 'cdb89f6ffa2c4cc78f8ed9ea6ee0594a9133ccad',
+ ),
+ 'yubico/u2flib-server' =>
+ array (
+ 'pretty_version' => '1.0.2',
+ 'version' => '1.0.2.0',
+ 'aliases' =>
+ array (
+ ),
+ 'reference' => '55d813acf68212ad2cadecde07551600d6971939',
+ ),
+ ),
+);
diff --git a/data/web/inc/lib/vendor/composer/platform_check.php b/data/web/inc/lib/vendor/composer/platform_check.php
new file mode 100644
index 00000000..92370c5a
--- /dev/null
+++ b/data/web/inc/lib/vendor/composer/platform_check.php
@@ -0,0 +1,26 @@
+<?php
+
+// platform_check.php @generated by Composer
+
+$issues = array();
+
+if (!(PHP_VERSION_ID >= 70300)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 7.3.0". You are running ' . PHP_VERSION . '.';
+}
+
+if ($issues) {
+ if (!headers_sent()) {
+ header('HTTP/1.1 500 Internal Server Error');
+ }
+ if (!ini_get('display_errors')) {
+ if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
+ fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
+ } elseif (!headers_sent()) {
+ echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
+ }
+ }
+ trigger_error(
+ 'Composer detected issues in your platform: ' . implode(' ', $issues),
+ E_USER_ERROR
+ );
+}
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md b/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md
index 62fffabf..4ddae6e9 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md
+++ b/data/web/inc/lib/vendor/ddeboer/imap/CHANGELOG.md
@@ -1,5 +1,46 @@
# Changelog
+## [1.11.0](https://github.com/ddeboer/imap/tree/1.11.0) (2020-11-30)
+
+[Full Changelog](https://github.com/ddeboer/imap/compare/1.10.1...1.11.0)
+
+**Implemented enhancements:**
+
+- PHP 8 Compatibility [\#481](https://github.com/ddeboer/imap/issues/481)
+- \[GA\] PHP 8 compatibility fix [\#483](https://github.com/ddeboer/imap/pull/483) ([Slamdunk](https://github.com/Slamdunk))
+- Support PHP 8.0, require PHP 7.3 [\#482](https://github.com/ddeboer/imap/pull/482) ([Slamdunk](https://github.com/Slamdunk))
+
+**Fixed bugs:**
+
+- Fix: Outlook date format [\#480](https://github.com/ddeboer/imap/pull/480) ([gajosadrian](https://github.com/gajosadrian))
+
+**Closed issues:**
+
+- Closing Connection [\#479](https://github.com/ddeboer/imap/issues/479)
+- Problem with charset of message part / DataPartInfo [\#475](https://github.com/ddeboer/imap/issues/475)
+- Unsupported charset "X-UNKNOWN" [\#425](https://github.com/ddeboer/imap/issues/425)
+
+## [1.10.1](https://github.com/ddeboer/imap/tree/1.10.1) (2020-08-26)
+
+[Full Changelog](https://github.com/ddeboer/imap/compare/1.10.0...1.10.1)
+
+**Fixed bugs:**
+
+- getThread and getMessageSequence not using with the same id [\#469](https://github.com/ddeboer/imap/issues/469)
+- imap\_thread: use absolude ids [\#474](https://github.com/ddeboer/imap/pull/474) ([Slamdunk](https://github.com/Slamdunk))
+
+**Closed issues:**
+
+- How to get a message by Message-ID [\#472](https://github.com/ddeboer/imap/issues/472)
+- Mail with e-sign [\#467](https://github.com/ddeboer/imap/issues/467)
+- Duplicate method definition in MessageInterface [\#455](https://github.com/ddeboer/imap/issues/455)
+- Missed errors in search method [\#444](https://github.com/ddeboer/imap/issues/444)
+
+**Merged pull requests:**
+
+- Subtype not always present [\#473](https://github.com/ddeboer/imap/pull/473) ([Piskvor](https://github.com/Piskvor))
+- Improved error handling for message search method [\#445](https://github.com/ddeboer/imap/pull/445) ([ikarol](https://github.com/ikarol))
+
## [1.10.0](https://github.com/ddeboer/imap/tree/1.10.0) (2020-01-24)
[Full Changelog](https://github.com/ddeboer/imap/compare/1.9.0...1.10.0)
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/README.md b/data/web/inc/lib/vendor/ddeboer/imap/README.md
index 59dc5321..6b16183e 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/README.md
+++ b/data/web/inc/lib/vendor/ddeboer/imap/README.md
@@ -1,12 +1,11 @@
# IMAP library
-[](https://travis-ci.org/ddeboer/imap)
-[](https://scrutinizer-ci.com/g/ddeboer/imap/?branch=master)
-[](https://scrutinizer-ci.com/g/ddeboer/imap/?branch=master)
-[](https://packagist.org/packages/ddeboer/imap)
-[](https://packagist.org/packages/ddeboer/imap)
+[](https://packagist.org/packages/ddeboer/imap)
+[](https://packagist.org/packages/ddeboer/imap)
+[](https://github.com/ddeboer/imap/actions)
+[](https://codecov.io/gh/ddeboer/imap?branch=master)
-A PHP 7.2+ library to read and process e-mails over IMAP.
+A PHP 7.3+ library to read and process e-mails over IMAP.
This library requires [IMAP](https://secure.php.net/manual/en/book.imap.php),
[iconv](https://secure.php.net/manual/en/book.iconv.php) and
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/composer.json b/data/web/inc/lib/vendor/ddeboer/imap/composer.json
index d48ac0dc..d56ea384 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/composer.json
+++ b/data/web/inc/lib/vendor/ddeboer/imap/composer.json
@@ -22,18 +22,23 @@
}
],
"require": {
- "php": "^7.2",
+ "php": "^7.3 || ^8.0",
"ext-iconv": "*",
"ext-imap": "*",
"ext-mbstring": "*"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.16",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^8.5",
- "zendframework/zend-mail": "^2.10"
+ "friendsofphp/php-cs-fixer": "^2.16.7",
+ "laminas/laminas-mail": "^2.12.3",
+ "phpstan/phpstan": "^0.12.57",
+ "phpstan/phpstan-phpunit": "^0.12.16",
+ "phpstan/phpstan-strict-rules": "^0.12.5",
+ "phpunit/phpunit": "^9.4.3"
+ },
+ "config": {
+ "platform": {
+ "php": "7.3"
+ }
},
"autoload": {
"psr-4": {
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php
index 902c7cea..4f9f4050 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php
+++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Connection.php
@@ -228,6 +228,7 @@ final class Connection implements ConnectionInterface
foreach ($mailboxesInfo as $mailboxInfo) {
$name = \mb_convert_encoding(\str_replace($this->server, '', $mailboxInfo->name), 'UTF-8', 'UTF7-IMAP');
+ \assert(\is_string($name));
$this->mailboxNames[$name] = $mailboxInfo;
}
}
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php
index d4e1bf49..1544aff0 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php
+++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Mailbox.php
@@ -154,6 +154,10 @@ final class Mailbox implements MailboxInterface
}
$query = $search->toString();
+ if (\PHP_VERSION_ID < 80000) {
+ $descending = (int) $descending;
+ }
+
// We need to clear the stack to know whether imap_last_error()
// is related to this imap_search
\imap_errors();
@@ -162,7 +166,7 @@ final class Mailbox implements MailboxInterface
$params = [
$this->resource->getStream(),
$sortCriteria,
- $descending ? 1 : 0,
+ $descending,
\SE_UID,
$query,
];
@@ -181,11 +185,13 @@ final class Mailbox implements MailboxInterface
}
$messageNumbers = \imap_search(...$params);
}
+ if (false !== \imap_last_error()) {
+ // this way all errors occurred during search will be reported
+ throw new InvalidSearchCriteriaException(
+ \sprintf('Invalid search criteria [%s]', $query)
+ );
+ }
if (false === $messageNumbers) {
- if (false !== \imap_last_error()) {
- throw new InvalidSearchCriteriaException(\sprintf('Invalid search criteria [%s]', $query));
- }
-
// imap_search can also return false
$messageNumbers = [];
}
@@ -203,13 +209,14 @@ final class Mailbox implements MailboxInterface
\imap_errors();
$overview = \imap_fetch_overview($this->resource->getStream(), $sequence, \FT_UID);
+ if (false !== \imap_last_error()) {
+ throw new InvalidSearchCriteriaException(
+ \sprintf('Invalid sequence [%s]', $sequence)
+ );
+ }
if (\is_array($overview) && [] !== $overview) {
$messageNumbers = \array_column($overview, 'uid');
} else {
- if (false !== \imap_last_error()) {
- throw new InvalidSearchCriteriaException(\sprintf('Invalid sequence [%s]', $sequence));
- }
-
$messageNumbers = [];
}
@@ -264,7 +271,7 @@ final class Mailbox implements MailboxInterface
});
/** @var array|false $tree */
- $tree = \imap_thread($this->resource->getStream());
+ $tree = \imap_thread($this->resource->getStream(), \SE_UID);
\restore_error_handler();
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php
index 7b50777f..843ce610 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php
+++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message.php
@@ -109,7 +109,15 @@ final class Message extends Message\AbstractMessage implements MessageInterface
}
$this->messageNumberVerified = true;
+ $msgno = null;
+ \set_error_handler(static function (): bool {
+ return true;
+ });
+
$msgno = \imap_msgno($this->resource->getStream(), $messageNumber);
+
+ \restore_error_handler();
+
if (\is_numeric($msgno) && $msgno > 0) {
$this->imapMsgNo = $msgno;
@@ -306,7 +314,7 @@ final class Message extends Message\AbstractMessage implements MessageInterface
// 'deleted' header changed, force to reload headers, would be better to set deleted flag to true on header
$this->clearHeaders();
- if (!\imap_delete($this->resource->getStream(), $this->getNumber(), \FT_UID)) {
+ if (!\imap_delete($this->resource->getStream(), (string) $this->getNumber(), \FT_UID)) {
throw new MessageDeleteException(\sprintf('Message "%s" cannot be deleted', $this->getNumber()));
}
}
@@ -320,7 +328,7 @@ final class Message extends Message\AbstractMessage implements MessageInterface
{
// 'deleted' header changed, force to reload headers, would be better to set deleted flag to false on header
$this->clearHeaders();
- if (!\imap_undelete($this->resource->getStream(), $this->getNumber(), \FT_UID)) {
+ if (!\imap_undelete($this->resource->getStream(), (string) $this->getNumber(), \FT_UID)) {
throw new MessageUndeleteException(\sprintf('Message "%s" cannot be undeleted', $this->getNumber()));
}
}
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php
index 9187c38b..5d67e904 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php
+++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractMessage.php
@@ -113,6 +113,7 @@ abstract class AbstractMessage extends AbstractPart
$alteredValue = \str_replace(',', '', $alteredValue);
$alteredValue = (string) \preg_replace('/^[a-zA-Z]+ ?/', '', $alteredValue);
$alteredValue = (string) \preg_replace('/\(.*\)/', '', $alteredValue);
+ $alteredValue = (string) \preg_replace('/\<.*\>/', '', $alteredValue);
$alteredValue = (string) \preg_replace('/\bUT\b/', 'UTC', $alteredValue);
if (0 === \preg_match('/\d\d:\d\d:\d\d.* [\+\-]\d\d:?\d\d/', $alteredValue)) {
$alteredValue .= ' +0000';
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php
index 923f3009..ab13eb02 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php
+++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/AbstractPart.php
@@ -471,9 +471,11 @@ abstract class AbstractPart implements PartInterface
$this->type = self::$typesMap[$this->structure->type] ?? self::TYPE_UNKNOWN;
- // In our context, \ENCOTHER is as useful as an uknown encoding
+ // In our context, \ENCOTHER is as useful as an unknown encoding
$this->encoding = self::$encodingsMap[$this->structure->encoding] ?? self::ENCODING_UNKNOWN;
- $this->subtype = $this->structure->subtype;
+ if (isset($this->structure->subtype)) {
+ $this->subtype = $this->structure->subtype;
+ }
if (isset($this->structure->bytes)) {
$this->bytes = $this->structure->bytes;
diff --git a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php
index 15dfb872..ee02a15d 100644
--- a/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php
+++ b/data/web/inc/lib/vendor/ddeboer/imap/src/Message/Transcoder.php
@@ -310,7 +310,13 @@ final class Transcoder
return true;
});
- $decodedText = \mb_convert_encoding($text, 'UTF-8', $fromCharset);
+ $decodedText = '';
+
+ try {
+ $decodedText = \mb_convert_encoding($text, 'UTF-8', $fromCharset);
+ } catch (\Error $error) {
+ $errorMessage = $error->getMessage();
+ }
\restore_error_handler();
diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml b/data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml
new file mode 100644
index 00000000..9b986887
--- /dev/null
+++ b/data/web/inc/lib/vendor/matthiasmullie/minify/.github/FUNDING.yml
@@ -0,0 +1,12 @@
+# These are supported funding model platforms
+
+github: [matthiasmullie] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+patreon: # Replace with a single Patreon username
+open_collective: # Replace with a single Open Collective username
+ko_fi: # Replace with a single Ko-fi username
+tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
+community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
+liberapay: # Replace with a single Liberapay username
+issuehunt: # Replace with a single IssueHunt username
+otechie: # Replace with a single Otechie username
+custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile b/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile
index d17f9d74..fc36a814 100644
--- a/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile
+++ b/data/web/inc/lib/vendor/matthiasmullie/minify/Dockerfile
@@ -6,7 +6,7 @@ WORKDIR /var/www
RUN apt-get update
RUN apt-get install -y zip unzip zlib1g-dev
-RUN docker-php-ext-install zip
+RUN if [[ `php-config --vernum` -ge 73000 ]]; then docker-php-ext-install zip; fi
RUN docker-php-ext-install pcntl
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer
diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml b/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml
index 5413e24b..cb7ace10 100644
--- a/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml
+++ b/data/web/inc/lib/vendor/matthiasmullie/minify/docker-compose.yml
@@ -9,6 +9,21 @@ services:
- ./data:/var/www/data
- ./tests:/var/www/tests
- ./phpunit.xml.dist:/var/www/phpunit.xml.dist
+ '8.0':
+ extends: php
+ build:
+ args:
+ version: 8.0-cli
+ '7.4':
+ extends: php
+ build:
+ args:
+ version: 7.4-cli
+ '7.3':
+ extends: php
+ build:
+ args:
+ version: 7.3-cli
'7.2':
extends: php
build:
diff --git a/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php b/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php
index 89fcf1bb..ea8e8cd9 100644
--- a/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php
+++ b/data/web/inc/lib/vendor/matthiasmullie/minify/src/CSS.php
@@ -216,7 +216,7 @@ class CSS extends Minify
// grab referenced file & minify it (which may include importing
// yet other @import statements recursively)
- $minifier = new static($importPath);
+ $minifier = new self($importPath);
$minifier->setMaxImportSize($this->maxImportSize);
$minifier->setImportExtensions($this->importExtensions);
$importContent = $minifier->execute($source, $parents);
@@ -307,7 +307,8 @@ class CSS extends Minify
*/
$this->extractStrings();
$this->stripComments();
- $this->extractCalcs();
+ $this->extractMath();
+ $this->extractCustomProperties();
$css = $this->replace($css);
$css = $this->stripWhitespace($css);
@@ -678,19 +679,29 @@ class CSS extends Minify
}
/**
- * Replace all `calc()` occurrences.
+ * Replace all occurrences of functions that may contain math, where
+ * whitespace around operators needs to be preserved (e.g. calc, clamp)
*/
- protected function extractCalcs()
+ protected function extractMath()
{
+ $functions = array('calc', 'clamp', 'min', 'max');
+ $pattern = '/('. implode('|', $functions) .')(\(.+?)(?=$|;|})/m';
+
// PHP only supports $this inside anonymous functions since 5.4
$minifier = $this;
- $callback = function ($match) use ($minifier) {
- $length = strlen($match[1]);
+ $callback = function ($match) use ($minifier, $pattern, &$callback) {
+ $function = $match[1];
+ $length = strlen($match[2]);
$expr = '';
$opened = 0;
+ // the regular expression for extracting math has 1 significant problem:
+ // it can't determine the correct closing parenthesis...
+ // instead, it'll match a larger portion of code to where it's certain that
+ // the calc() musts have ended, and we'll figure out which is the correct
+ // closing parenthesis here, by counting how many have opened
for ($i = 0; $i < $length; $i++) {
- $char = $match[1][$i];
+ $char = $match[2][$i];
$expr .= $char;
if ($char === '(') {
$opened++;
@@ -698,18 +709,41 @@ class CSS extends Minify
break;
}
}
- $rest = str_replace($expr, '', $match[1]);
- $expr = trim(substr($expr, 1, -1));
+ // now that we've figured out where the calc() starts and ends, extract it
$count = count($minifier->extracted);
- $placeholder = 'calc('.$count.')';
- $minifier->extracted[$placeholder] = 'calc('.$expr.')';
+ $placeholder = 'math('.$count.')';
+ $minifier->extracted[$placeholder] = $function.'('.trim(substr($expr, 1, -1)).')';
+
+ // and since we've captured more code than required, we may have some leftover
+ // calc() in here too - go recursive on the remaining but of code to go figure
+ // that out and extract what is needed
+ $rest = str_replace($function.$expr, '', $match[0]);
+ $rest = preg_replace_callback($pattern, $callback, $rest);
return $placeholder.$rest;
};
- $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/', $callback);
- $this->registerPattern('/calc(\(.+?)(?=$|;|}|calc\()/m', $callback);
+ $this->registerPattern($pattern, $callback);
+ }
+
+ /**
+ * Replace custom properties, whose values may be used in scenarios where
+ * we wouldn't want them to be minified (e.g. inside calc)
+ */
+ protected function extractCustomProperties()
+ {
+ // PHP only supports $this inside anonymous functions since 5.4
+ $minifier = $this;
+ $this->registerPattern(
+ '/(?<=^|[;}])(--[^:;{}"\'\s]+)\s*:([^;{}]+)/m',
+ function ($match) use ($minifier) {
+ $placeholder = '--custom-'. count($minifier->extracted) . ':0';
+ $minifier->extracted[$placeholder] = $match[1] .':'. trim($match[2]);
+ return $placeholder;
+
+ }
+ );
}
/**
diff --git a/data/web/inc/lib/vendor/paragonie/random_compat/composer.json b/data/web/inc/lib/vendor/paragonie/random_compat/composer.json
index 1fa8de9f..f2b9c4e5 100644
--- a/data/web/inc/lib/vendor/paragonie/random_compat/composer.json
+++ b/data/web/inc/lib/vendor/paragonie/random_compat/composer.json
@@ -22,7 +22,7 @@
"source": "https://github.com/paragonie/random_compat"
},
"require": {
- "php": "^7"
+ "php": ">= 7"
},
"require-dev": {
"vimeo/psalm": "^1",
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md b/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md
index c287e307..d9cbbaaf 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/README.md
@@ -167,15 +167,9 @@ Build status: [](h
If this isn't passing, is there something you can do to help?
## Security
-Please disclose any vulnerabilities found responsibly - report any security problems found to the maintainers privately.
+Please disclose any vulnerabilities found responsibly – report security issues to the maintainers privately.
-PHPMailer versions prior to 5.2.22 (released January 9th 2017) have a local file disclosure vulnerability, [CVE-2017-5223](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-5223). If content passed into `msgHTML()` is sourced from unfiltered user input, relative paths can map to absolute local file paths and added as attachments. Also note that `addAttachment` (just like `file_get_contents`, `passthru`, `unlink`, etc) should not be passed user-sourced params either! Reported by Yongxiang Li of Asiasecurity.
-
-PHPMailer versions prior to 5.2.20 (released December 28th 2016) are vulnerable to [CVE-2016-10045](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10045) a remote code execution vulnerability, responsibly reported by [Dawid Golunski](https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html), and patched by Paul Buonopane (@Zenexer).
-
-PHPMailer versions prior to 5.2.18 (released December 2016) are vulnerable to [CVE-2016-10033](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-10033) a critical remote code execution vulnerability, responsibly reported by [Dawid Golunski](http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html).
-
-See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for more detail on security issues.
+See [SECURITY](https://github.com/PHPMailer/PHPMailer/tree/master/SECURITY.md) for details on security issues.
## Contributing
Please submit bug reports, suggestions and pull requests to the [GitHub issue tracker](https://github.com/PHPMailer/PHPMailer/issues).
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION b/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION
index 3af67b5c..4ac4fded 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/VERSION
@@ -1 +1 @@
-6.1.6
\ No newline at end of file
+6.2.0
\ No newline at end of file
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json b/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json
index 90d2576f..7388bd98 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/composer.json
@@ -21,26 +21,30 @@
],
"funding": [
{
- "url": "https://github.com/synchro",
+ "url": "https://github.com/Synchro",
"type": "github"
}
],
"require": {
"php": ">=5.5.0",
"ext-ctype": "*",
- "ext-filter": "*"
+ "ext-filter": "*",
+ "ext-hash": "*"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^2.2",
- "phpunit/phpunit": "^4.8 || ^5.7",
- "doctrine/annotations": "^1.2"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.2",
+ "phpcompatibility/php-compatibility": "^9.3.5",
+ "roave/security-advisories": "dev-latest",
+ "squizlabs/php_codesniffer": "^3.5.6",
+ "yoast/phpunit-polyfills": "^0.2.0"
},
"suggest": {
- "psr/log": "For optional PSR-3 debug logging",
- "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+ "ext-mbstring": "Needed to send email in multibyte encoding charset",
"hayageek/oauth2-yahoo": "Needed for Yahoo XOAUTH2 authentication",
+ "league/oauth2-google": "Needed for Google XOAUTH2 authentication",
+ "psr/log": "For optional PSR-3 debug logging",
"stevenmaguire/oauth2-microsoft": "Needed for Microsoft XOAUTH2 authentication",
- "ext-mbstring": "Needed to send email in multibyte encoding charset",
"symfony/polyfill-mbstring": "To support UTF-8 if the Mbstring PHP extension is not enabled (^1.2)"
},
"autoload": {
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php
index 1237b57b..560d3645 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/get_oauth_token.php
@@ -1,4 +1,5 @@
<?php
+
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5
@@ -8,7 +9,7 @@
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
- * @copyright 2012 - 2017 Marcus Bointon
+ * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
@@ -16,6 +17,7 @@
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*/
+
/**
* Get an OAuth2 token from an OAuth2 provider.
* * Install this script on your server so that it's accessible
@@ -44,7 +46,7 @@ use Hayageek\OAuth2\Client\Provider\Yahoo;
use Stevenmaguire\OAuth2\Client\Provider\Microsoft;
if (!isset($_GET['code']) && !isset($_GET['provider'])) {
-?>
+ ?>
<html>
<body>Select Provider:<br/>
<a href='?provider=Google'>Google</a><br/>
@@ -52,8 +54,8 @@ if (!isset($_GET['code']) && !isset($_GET['provider'])) {
<a href='?provider=Microsoft'>Microsoft/Outlook/Hotmail/Live/Office365</a><br/>
</body>
</html>
-<?php
-exit;
+ <?php
+ exit;
}
require 'vendor/autoload.php';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php
index 3c42d78e..0b2a72d5 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-af.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Afrikaans PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php
index 865d0b73..8ab485c4 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ar.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Arabic PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php
index 3749d83d..552167ef 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-az.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Azerbaijani PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php
index 576c4bb5..3694f344 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ba.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Bosnian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
@@ -23,4 +24,4 @@ $PHPMAILER_LANG['signing'] = 'Greška prilikom prijave: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Spajanje na SMTP server nije uspjelo.';
$PHPMAILER_LANG['smtp_error'] = 'SMTP greška: ';
$PHPMAILER_LANG['variable_set'] = 'Nije moguće postaviti varijablu ili je vratiti nazad: ';
-$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: ';
\ No newline at end of file
+$PHPMAILER_LANG['extension_missing'] = 'Nedostaje ekstenzija: ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php
index e2f98f0f..9e92ddaa 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-be.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Belarusian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php
index b22941f6..c41f675d 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-bg.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Bulgarian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php
index 4117596c..34684855 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ca.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Catalan PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php
index 4fda6b85..500c9526 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ch.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php
index 1160cf0c..55bdd9c8 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-cs.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Czech PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php
index 5febb516..1edba1d7 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-da.php
@@ -1,10 +1,11 @@
<?php
+
/**
* Danish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author John Sebastian <[email protected]>
- * Rewrite and extension of the work by Mikael Stokkebro <[email protected]>
- *
+ * Rewrite and extension of the work by Mikael Stokkebro <[email protected]>
+ *
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Login mislykkedes.';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php
index aa987a9c..e7e59d2b 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-de.php
@@ -1,4 +1,5 @@
<?php
+
/**
* German PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
@@ -15,6 +16,8 @@ $PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei ni
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
+$PHPMAILER_LANG['invalid_hostentry'] = 'Ungültiger Hosteintrag: ';
+$PHPMAILER_LANG['invalid_host'] = 'Ungültiger Host: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
index 7109641e..b3d5ca94 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-el.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Greek PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php
index 5ca6cb70..fa8c2c17 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-eo.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Esperanto PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
index f2c4e831..6ba74627 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-es.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Spanish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php
index 7e06da13..93addc9e 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-et.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Estonian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php
index 8aa0ad22..295a47f9 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fa.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Persian/Farsi PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php
index ec4e7523..243c0548 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fi.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Finnish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php
index 68cdef1d..b30f0520 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fo.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Faroese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php
index af68c923..b57f0ec6 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-fr.php
@@ -1,4 +1,5 @@
<?php
+
/**
* French PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
@@ -19,6 +20,8 @@ $PHPMAILER_LANG['file_open'] = 'Ouverture du fichier impossible : '
$PHPMAILER_LANG['from_failed'] = 'L\'adresse d\'expéditeur suivante a échoué : ';
$PHPMAILER_LANG['instantiate'] = 'Impossible d\'instancier la fonction mail.';
$PHPMAILER_LANG['invalid_address'] = 'L\'adresse courriel n\'est pas valide : ';
+$PHPMAILER_LANG['invalid_hostentry'] = 'L\'entrée hôte n\'est pas valide : ';
+$PHPMAILER_LANG['invalid_host'] = 'L\'hôte n\'est pas valide : ';
$PHPMAILER_LANG['mailer_not_supported'] = ' client de messagerie non supporté.';
$PHPMAILER_LANG['provide_address'] = 'Vous devez fournir au moins une adresse de destinataire.';
$PHPMAILER_LANG['recipients_failed'] = 'Erreur SMTP : les destinataires suivants sont en erreur : ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php
index 9b4ce4d8..3f3ab376 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-gl.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Galician PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php
index 70eb7175..b123aa5f 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-he.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Hebrew PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php
index 607a5ee3..d973a359 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hi.php
@@ -1,10 +1,11 @@
<?php
+
/**
* Hindi PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Yash Karanke <[email protected]>
*/
-
+
$PHPMAILER_LANG['authenticate'] = 'SMTP त्रुटि: प्रामाणिकता की जांच नहीं हो सका। ';
$PHPMAILER_LANG['connect_host'] = 'SMTP त्रुटि: SMTP सर्वर से कनेक्ट नहीं हो सका। ';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP त्रुटि: डेटा स्वीकार नहीं किया जाता है। ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php
index 3822920a..cacb6c37 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hr.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Croatian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php
index 196cddc2..e6b58b0d 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hu.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Hungarian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php
index ff2a9695..bb05d2d9 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-hy.php
@@ -1,10 +1,11 @@
<?php
+
/**
* Armenian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Hrayr Grigoryan <[email protected]>
*/
-
+
$PHPMAILER_LANG['authenticate'] = 'SMTP -ի սխալ: չհաջողվեց ստուգել իսկությունը.';
$PHPMAILER_LANG['connect_host'] = 'SMTP -ի սխալ: չհաջողվեց կապ հաստատել SMTP սերվերի հետ.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP -ի սխալ: տվյալները ընդունված չեն.';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php
index ba6ca5fa..212a11f1 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-id.php
@@ -1,9 +1,11 @@
<?php
+
/**
* Indonesian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Cecep Prawiro <[email protected]>
* @author @januridp
+ * @author Ian Mustafa <[email protected]>
*/
$PHPMAILER_LANG['authenticate'] = 'Kesalahan SMTP: Tidak dapat mengotentikasi.';
@@ -11,17 +13,19 @@ $PHPMAILER_LANG['connect_host'] = 'Kesalahan SMTP: Tidak dapat terhubung
$PHPMAILER_LANG['data_not_accepted'] = 'Kesalahan SMTP: Data tidak diterima.';
$PHPMAILER_LANG['empty_message'] = 'Isi pesan kosong';
$PHPMAILER_LANG['encoding'] = 'Pengkodean karakter tidak dikenali: ';
-$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses : ';
-$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas : ';
-$PHPMAILER_LANG['file_open'] = 'Kesalahan File: Berkas tidak dapat dibuka : ';
-$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan : ';
-$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel';
-$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak benar : ';
-$PHPMAILER_LANG['provide_address'] = 'Harus disediakan minimal satu alamat tujuan';
+$PHPMAILER_LANG['execute'] = 'Tidak dapat menjalankan proses: ';
+$PHPMAILER_LANG['file_access'] = 'Tidak dapat mengakses berkas: ';
+$PHPMAILER_LANG['file_open'] = 'Kesalahan Berkas: Berkas tidak dapat dibuka: ';
+$PHPMAILER_LANG['from_failed'] = 'Alamat pengirim berikut mengakibatkan kesalahan: ';
+$PHPMAILER_LANG['instantiate'] = 'Tidak dapat menginisialisasi fungsi surel.';
+$PHPMAILER_LANG['invalid_address'] = 'Gagal terkirim, alamat surel tidak sesuai: ';
+$PHPMAILER_LANG['invalid_hostentry'] = 'Gagal terkirim, entri host tidak sesuai: ';
+$PHPMAILER_LANG['invalid_host'] = 'Gagal terkirim, host tidak sesuai: ';
+$PHPMAILER_LANG['provide_address'] = 'Harus tersedia minimal satu alamat tujuan';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer tidak didukung';
-$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menghasilkan kesalahan : ';
-$PHPMAILER_LANG['signing'] = 'Kesalahan dalam tanda tangan : ';
+$PHPMAILER_LANG['recipients_failed'] = 'Kesalahan SMTP: Alamat tujuan berikut menyebabkan kesalahan: ';
+$PHPMAILER_LANG['signing'] = 'Kesalahan dalam penandatangan SSL: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() gagal.';
-$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP : ';
-$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variable : ';
-$PHPMAILER_LANG['extension_missing'] = 'Ekstensi hilang: ';
+$PHPMAILER_LANG['smtp_error'] = 'Kesalahan pada pelayan SMTP: ';
+$PHPMAILER_LANG['variable_set'] = 'Tidak dapat mengatur atau mengatur ulang variabel: ';
+$PHPMAILER_LANG['extension_missing'] = 'Ekstensi PHP tidak tersedia: ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php
index e67b6f72..08a6b733 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-it.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Italian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php
index 2d778728..eee79898 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ja.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Japanese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php
index dd1af8ab..51fe403b 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ka.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Georgian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php
index 9599fa68..8c97dd94 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ko.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Korean PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php
index 1253a4fd..4f115b1c 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lt.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Lithuanian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php
index 39bf9a19..679b18cf 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-lv.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Latvian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php
index f4c75630..8a94f6a0 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-mg.php
@@ -1,9 +1,11 @@
<?php
+
/**
* Malagasy PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Hackinet <[email protected]>
*/
+
$PHPMAILER_LANG['authenticate'] = 'Hadisoana SMTP: Tsy nahomby ny fanamarinana.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Tsy afaka mampifandray amin\'ny mpampiantrano SMTP.';
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP diso: tsy voarakitra ny angona.';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php
index f12a6ad4..71db3383 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ms.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Malaysian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php
index 97403e73..65793ce2 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nb.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Norwegian Bokmål PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php
index f4d0e7cd..bf41ade8 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-nl.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Dutch PHPMailer language file: refer to PHPMailer.php for definitive list.
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php
index 3da0dee9..23caa71b 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pl.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Polish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
@@ -14,7 +15,7 @@ $PHPMAILER_LANG['file_access'] = 'Brak dostępu do pliku: ';
$PHPMAILER_LANG['file_open'] = 'Nie można otworzyć pliku: ';
$PHPMAILER_LANG['from_failed'] = 'Następujący adres Nadawcy jest nieprawidłowy: ';
$PHPMAILER_LANG['instantiate'] = 'Nie można wywołać funkcji mail(). Sprawdź konfigurację serwera.';
-$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, '.
+$PHPMAILER_LANG['invalid_address'] = 'Nie można wysłać wiadomości, ' .
'następujący adres Odbiorcy jest nieprawidłowy: ';
$PHPMAILER_LANG['provide_address'] = 'Należy podać prawidłowy adres email Odbiorcy.';
$PHPMAILER_LANG['mailer_not_supported'] = 'Wybrana metoda wysyłki wiadomości nie jest obsługiwana.';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php
index f365d5d0..f1ce946e 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Portuguese (European) PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php
index 62d692d4..d8638098 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-pt_br.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php
index fa100eaa..292ec1e4 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ro.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Romanian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php
index 720e9a11..8c8c5e81 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-ru.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Russian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php
index 69cfb0fc..a1cfb288 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sk.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Slovak PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php
index 1e3cb7fa..c437a886 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sl.php
@@ -1,9 +1,11 @@
<?php
+
/**
* Slovene PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
* @author Klemen Tušar <[email protected]>
* @author Filip Š <[email protected]>
+ * @author Blaž Oražem <[email protected]>
*/
$PHPMAILER_LANG['authenticate'] = 'SMTP napaka: Avtentikacija ni uspela.';
@@ -17,8 +19,10 @@ $PHPMAILER_LANG['file_open'] = 'Ne morem odpreti datoteke: ';
$PHPMAILER_LANG['from_failed'] = 'Neveljaven e-naslov pošiljatelja: ';
$PHPMAILER_LANG['instantiate'] = 'Ne morem inicializirati mail funkcije.';
$PHPMAILER_LANG['invalid_address'] = 'E-poštno sporočilo ni bilo poslano. E-naslov je neveljaven: ';
+$PHPMAILER_LANG['invalid_hostentry'] = 'Neveljaven vnos gostitelja: ';
+$PHPMAILER_LANG['invalid_host'] = 'Neveljaven gostitelj: ';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer ni podprt.';
-$PHPMAILER_LANG['provide_address'] = 'Prosim vnesite vsaj enega naslovnika.';
+$PHPMAILER_LANG['provide_address'] = 'Prosimo, vnesite vsaj enega naslovnika.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP napaka: Sledeči naslovniki so neveljavni: ';
$PHPMAILER_LANG['signing'] = 'Napaka pri podpisovanju: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ne morem vzpostaviti povezave s SMTP strežnikom.';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php
index 34c1e182..0b5280f7 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sr.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Serbian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php
index 4408e63e..9872c192 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-sv.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Swedish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
@@ -19,8 +20,8 @@ $PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: ';
$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.';
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: ';
-$PHPMAILER_LANG['signing'] = 'Signerings fel: ';
+$PHPMAILER_LANG['signing'] = 'Signeringsfel: ';
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.';
-$PHPMAILER_LANG['smtp_error'] = 'SMTP server fel: ';
+$PHPMAILER_LANG['smtp_error'] = 'SMTP serverfel: ';
$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: ';
$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php
index ed51d4c6..d15bed1c 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tl.php
@@ -1,27 +1,28 @@
<?php
+
/**
* Tagalog PHPMailer language file: refer to English translation for definitive list
*
* @package PHPMailer
- * @author Adriane Justine Tan <[email protected]>
+ * @author Adriane Justine Tan <[email protected]>
*/
-
+
$PHPMAILER_LANG['authenticate'] = 'SMTP Error: Hindi mapatotohanan.';
$PHPMAILER_LANG['connect_host'] = 'SMTP Error: Hindi makakonekta sa SMTP host.';
-$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi maaaring matatanggap.';
+$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Error: Ang datos ay hindi naitanggap.';
$PHPMAILER_LANG['empty_message'] = 'Walang laman ang mensahe';
$PHPMAILER_LANG['encoding'] = 'Hindi alam ang encoding: ';
$PHPMAILER_LANG['execute'] = 'Hindi maisasagawa: ';
$PHPMAILER_LANG['file_access'] = 'Hindi ma-access ang file: ';
-$PHPMAILER_LANG['file_open'] = 'Hindi mabuksan ang file: ';
+$PHPMAILER_LANG['file_open'] = 'File Error: Hindi mabuksan ang file: ';
$PHPMAILER_LANG['from_failed'] = 'Ang sumusunod na address ay nabigo: ';
-$PHPMAILER_LANG['instantiate'] = 'Hindi maaaring magbigay ng institusyon ang mail';
+$PHPMAILER_LANG['instantiate'] = 'Hindi maisimulan ang instance ng mail function.';
$PHPMAILER_LANG['invalid_address'] = 'Hindi wasto ang address na naibigay: ';
-$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado';
-$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap';
+$PHPMAILER_LANG['mailer_not_supported'] = 'Ang mailer ay hindi suportado.';
+$PHPMAILER_LANG['provide_address'] = 'Kailangan mong magbigay ng kahit isang email address na tatanggap.';
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Error: Ang mga sumusunod na tatanggap ay nabigo: ';
-$PHPMAILER_LANG['signing'] = 'Hindi ma-sign';
-$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo';
-$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo';
-$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda ang mga variables: ';
-$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension';
+$PHPMAILER_LANG['signing'] = 'Hindi ma-sign: ';
+$PHPMAILER_LANG['smtp_connect_failed'] = 'Ang SMTP connect() ay nabigo.';
+$PHPMAILER_LANG['smtp_error'] = 'Ang server ng SMTP ay nabigo: ';
+$PHPMAILER_LANG['variable_set'] = 'Hindi matatakda o ma-reset ang mga variables: ';
+$PHPMAILER_LANG['extension_missing'] = 'Nawawala ang extension: ';
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php
index cfe8eaae..f938f802 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-tr.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Turkish PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php
index fcd77ade..9fa60cf1 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-uk.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Ukrainian PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php
index c60dadeb..d65576e2 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-vi.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Vietnamese (Tiếng Việt) PHPMailer language file: refer to English translation for definitive list.
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php
index 3e9e358c..35e4e700 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Traditional Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php
index 37537802..728a4994 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/language/phpmailer.lang-zh_cn.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Simplified Chinese PHPMailer language file: refer to English translation for definitive list
* @package PHPMailer
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/Exception.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/Exception.php
index b1e552f5..a50a8991 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/Exception.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/Exception.php
@@ -1,4 +1,5 @@
<?php
+
/**
* PHPMailer Exception class.
* PHP Version 5.5.
@@ -9,7 +10,7 @@
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
- * @copyright 2012 - 2017 Marcus Bointon
+ * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php
index 0271963c..07fde4c8 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/OAuth.php
@@ -1,4 +1,5 @@
<?php
+
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5.
@@ -9,7 +10,7 @@
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
- * @copyright 2012 - 2015 Marcus Bointon
+ * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php
index ed14d7c7..c8fc1a82 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/PHPMailer.php
@@ -1,4 +1,5 @@
<?php
+
/**
* PHPMailer - PHP email creation and transport class.
* PHP Version 5.5.
@@ -9,7 +10,7 @@
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
- * @copyright 2012 - 2019 Marcus Bointon
+ * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
@@ -388,11 +389,11 @@ class PHPMailer
* SMTP class debug output mode.
* Debug output level.
* Options:
- * * SMTP::DEBUG_OFF: No output
- * * SMTP::DEBUG_CLIENT: Client messages
- * * SMTP::DEBUG_SERVER: Client and server messages
- * * SMTP::DEBUG_CONNECTION: As SERVER plus connection status
- * * SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
+ * @see SMTP::DEBUG_OFF: No output
+ * @see SMTP::DEBUG_CLIENT: Client messages
+ * @see SMTP::DEBUG_SERVER: Client and server messages
+ * @see SMTP::DEBUG_CONNECTION: As SERVER plus connection status
+ * @see SMTP::DEBUG_LOWLEVEL: Noisy, low-level data output, rarely needed
*
* @see SMTP::$do_debug
*
@@ -441,6 +442,8 @@ class PHPMailer
* Only supported in `mail` and `sendmail` transports, not in SMTP.
*
* @var bool
+ *
+ * @deprecated 6.0.0 PHPMailer isn't a mailing list manager!
*/
public $SingleTo = false;
@@ -745,7 +748,7 @@ class PHPMailer
*
* @var string
*/
- const VERSION = '6.1.6';
+ const VERSION = '6.2.0';
/**
* Error severity: message only, continue processing.
@@ -897,6 +900,7 @@ class PHPMailer
switch ($this->Debugoutput) {
case 'error_log':
//Don't output, just log
+ /** @noinspection ForgottenDebugOutputInspection */
error_log($str);
break;
case 'html':
@@ -1182,9 +1186,11 @@ class PHPMailer
//Use this built-in parser if it's available
$list = imap_rfc822_parse_adrlist($addrstr, '');
foreach ($list as $address) {
- if (('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
- $address->mailbox . '@' . $address->host
- )) {
+ if (
+ ('.SYNTAX-ERROR.' !== $address->host) && static::validateAddress(
+ $address->mailbox . '@' . $address->host
+ )
+ ) {
$addresses[] = [
'name' => (property_exists($address, 'personal') ? $address->personal : ''),
'address' => $address->mailbox . '@' . $address->host,
@@ -1238,7 +1244,8 @@ class PHPMailer
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
// Don't validate now addresses with IDN. Will be done in send().
$pos = strrpos($address, '@');
- if ((false === $pos)
+ if (
+ (false === $pos)
|| ((!$this->has8bitChars(substr($address, ++$pos)) || !static::idnSupported())
&& !static::validateAddress($address))
) {
@@ -1307,7 +1314,7 @@ class PHPMailer
$patternselect = static::$validator;
}
if (is_callable($patternselect)) {
- return $patternselect($address);
+ return call_user_func($patternselect, $address);
}
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
if (strpos($address, "\n") !== false || strpos($address, "\r") !== false) {
@@ -1348,7 +1355,7 @@ class PHPMailer
/*
* This is the pattern used in the HTML5 spec for validation of 'email' type form input elements.
*
- * @see http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email)
+ * @see https://html.spec.whatwg.org/#e-mail-state-(type=email)
*/
return (bool) preg_match(
'/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' .
@@ -1390,7 +1397,8 @@ class PHPMailer
{
// Verify we have required functions, CharSet, and at-sign.
$pos = strrpos($address, '@');
- if (!empty($this->CharSet) &&
+ if (
+ !empty($this->CharSet) &&
false !== $pos &&
static::idnSupported()
) {
@@ -1452,8 +1460,9 @@ class PHPMailer
*/
public function preSend()
{
- if ('smtp' === $this->Mailer
- || ('mail' === $this->Mailer && stripos(PHP_OS, 'WIN') === 0)
+ if (
+ 'smtp' === $this->Mailer
+ || ('mail' === $this->Mailer && (PHP_VERSION_ID >= 80000 || stripos(PHP_OS, 'WIN') === 0))
) {
//SMTP mandates RFC-compliant line endings
//and it's also used with mail() on Windows
@@ -1463,7 +1472,8 @@ class PHPMailer
static::setLE(PHP_EOL);
}
//Check for buggy PHP versions that add a header with an incorrect line break
- if ('mail' === $this->Mailer
+ if (
+ 'mail' === $this->Mailer
&& ((PHP_VERSION_ID >= 70000 && PHP_VERSION_ID < 70017)
|| (PHP_VERSION_ID >= 70100 && PHP_VERSION_ID < 70103))
&& ini_get('mail.add_x_header') === '1'
@@ -1550,7 +1560,8 @@ class PHPMailer
}
// Sign with DKIM if enabled
- if (!empty($this->DKIM_domain)
+ if (
+ !empty($this->DKIM_domain)
&& !empty($this->DKIM_selector)
&& (!empty($this->DKIM_private_string)
|| (!empty($this->DKIM_private)
@@ -1607,6 +1618,9 @@ class PHPMailer
return $this->mailSend($this->MIMEHeader, $this->MIMEBody);
}
} catch (Exception $exc) {
+ if ($this->Mailer === 'smtp' && $this->SMTPKeepAlive == true) {
+ $this->smtp->reset();
+ }
$this->setError($exc->getMessage());
$this->edebug($exc->getMessage());
if ($this->exceptions) {
@@ -1711,7 +1725,8 @@ class PHPMailer
protected static function isShellSafe($string)
{
// Future-proof
- if (escapeshellcmd($string) !== $string
+ if (
+ escapeshellcmd($string) !== $string
|| !in_array(escapeshellarg($string), ["'$string'", "\"$string\""])
) {
return false;
@@ -1747,6 +1762,23 @@ class PHPMailer
return !preg_match('#^[a-z]+://#i', $path);
}
+ /**
+ * Check whether a file path is safe, accessible, and readable.
+ *
+ * @param string $path A relative or absolute path to a file
+ *
+ * @return bool
+ */
+ protected static function fileIsAccessible($path)
+ {
+ $readable = file_exists($path);
+ //If not a UNC path (expected to start with \\), check read permission, see #2069
+ if (strpos($path, '\\\\') !== 0) {
+ $readable = $readable && is_readable($path);
+ }
+ return static::isPermittedPath($path) && $readable;
+ }
+
/**
* Send mail using the PHP mail() function.
*
@@ -1878,7 +1910,7 @@ class PHPMailer
$isSent = true;
}
- $callbacks[] = ['issent'=>$isSent, 'to'=>$to[0]];
+ $callbacks[] = ['issent' => $isSent, 'to' => $to[0]];
}
}
@@ -1958,11 +1990,13 @@ class PHPMailer
foreach ($hosts as $hostentry) {
$hostinfo = [];
- if (!preg_match(
- '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
- trim($hostentry),
- $hostinfo
- )) {
+ if (
+ !preg_match(
+ '/^(?:(ssl|tls):\/\/)?(.+?)(?::(\d+))?$/',
+ trim($hostentry),
+ $hostinfo
+ )
+ ) {
$this->edebug($this->lang('invalid_hostentry') . ' ' . trim($hostentry));
// Not a valid host entry
continue;
@@ -2000,7 +2034,12 @@ class PHPMailer
}
$host = $hostinfo[2];
$port = $this->Port;
- if (array_key_exists(3, $hostinfo) && is_numeric($hostinfo[3]) && $hostinfo[3] > 0 && $hostinfo[3] < 65536) {
+ if (
+ array_key_exists(3, $hostinfo) &&
+ is_numeric($hostinfo[3]) &&
+ $hostinfo[3] > 0 &&
+ $hostinfo[3] < 65536
+ ) {
$port = (int) $hostinfo[3];
}
if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) {
@@ -2026,12 +2065,14 @@ class PHPMailer
// We must resend EHLO after TLS negotiation
$this->smtp->hello($hello);
}
- if ($this->SMTPAuth && !$this->smtp->authenticate(
- $this->Username,
- $this->Password,
- $this->AuthType,
- $this->oauth
- )) {
+ if (
+ $this->SMTPAuth && !$this->smtp->authenticate(
+ $this->Username,
+ $this->Password,
+ $this->AuthType,
+ $this->oauth
+ )
+ ) {
throw new Exception($this->lang('authenticate'));
}
@@ -2089,7 +2130,7 @@ class PHPMailer
'am' => 'hy',
];
- if (isset($renamed_langcodes[$langcode])) {
+ if (array_key_exists($langcode, $renamed_langcodes)) {
$langcode = $renamed_langcodes[$langcode];
}
@@ -2130,7 +2171,7 @@ class PHPMailer
// There is no English translation file
if ('en' !== $langcode) {
// Make sure language file path is readable
- if (!static::isPermittedPath($lang_file) || !file_exists($lang_file)) {
+ if (!static::fileIsAccessible($lang_file)) {
$foundlang = false;
} else {
// Overwrite language-specific strings.
@@ -2378,21 +2419,18 @@ class PHPMailer
$result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate);
- // To be created automatically by mail()
- if ($this->SingleTo) {
- if ('mail' !== $this->Mailer) {
+ // The To header is created automatically by mail(), so needs to be omitted here
+ if ('mail' !== $this->Mailer) {
+ if ($this->SingleTo) {
foreach ($this->to as $toaddr) {
$this->SingleToArray[] = $this->addrFormat($toaddr);
}
- }
- } elseif (count($this->to) > 0) {
- if ('mail' !== $this->Mailer) {
+ } elseif (count($this->to) > 0) {
$result .= $this->addrAppend('To', $this->to);
+ } elseif (count($this->cc) === 0) {
+ $result .= $this->headerLine('To', 'undisclosed-recipients:;');
}
- } elseif (count($this->cc) === 0) {
- $result .= $this->headerLine('To', 'undisclosed-recipients:;');
}
-
$result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]);
// sendmail and mail() extract Cc from the header before sending
@@ -2401,7 +2439,8 @@ class PHPMailer
}
// sendmail and mail() extract Bcc from the header before sending
- if ((
+ if (
+ (
'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer
)
&& count($this->bcc) > 0
@@ -2947,7 +2986,7 @@ class PHPMailer
* @param string $path Path to the attachment
* @param string $name Overrides the attachment name
* @param string $encoding File encoding (see $Encoding)
- * @param string $type File extension (MIME) type
+ * @param string $type MIME type, e.g. `image/jpeg`; determined automatically from $path if not specified
* @param string $disposition Disposition to use
*
* @throws Exception
@@ -2962,7 +3001,7 @@ class PHPMailer
$disposition = 'attachment'
) {
try {
- if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) {
+ if (!static::fileIsAccessible($path)) {
throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
}
@@ -2975,7 +3014,6 @@ class PHPMailer
if ('' === $name) {
$name = $filename;
}
-
if (!$this->validateEncoding($encoding)) {
throw new Exception($this->lang('encoding') . $encoding);
}
@@ -3137,7 +3175,7 @@ class PHPMailer
protected function encodeFile($path, $encoding = self::ENCODING_BASE64)
{
try {
- if (!static::isPermittedPath($path) || !file_exists($path) || !is_readable($path)) {
+ if (!static::fileIsAccessible($path)) {
throw new Exception($this->lang('file_open') . $path, self::STOP_CONTINUE);
}
$file_buffer = file_get_contents($path);
@@ -3523,7 +3561,7 @@ class PHPMailer
$disposition = 'inline'
) {
try {
- if (!static::isPermittedPath($path) || !@is_file($path) || !is_readable($path)) {
+ if (!static::fileIsAccessible($path)) {
throw new Exception($this->lang('file_access') . $path, self::STOP_CONTINUE);
}
@@ -3872,7 +3910,8 @@ class PHPMailer
public static function isValidHost($host)
{
//Simple syntax limits
- if (empty($host)
+ if (
+ empty($host)
|| !is_string($host)
|| strlen($host) > 256
|| !preg_match('/^([a-zA-Z\d.-]*|\[[a-fA-F\d:]+])$/', $host)
@@ -3990,7 +4029,8 @@ class PHPMailer
* @param string $message HTML message string
* @param string $basedir Absolute path to a base directory to prepend to relative paths to images
* @param bool|callable $advanced Whether to use the internal HTML to text converter
- * or your own custom converter @return string $message The transformed message Body
+ * or your own custom converter
+ * @return string The transformed message body
*
* @throws Exception
*
@@ -4037,7 +4077,8 @@ class PHPMailer
);
continue;
}
- if (// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
+ if (
+ // Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
!empty($basedir)
// Ignore URLs containing parent dir traversal (..)
&& (strpos($url, '..') === false)
@@ -4059,13 +4100,14 @@ class PHPMailer
if (strlen($directory) > 1 && '/' !== substr($directory, -1)) {
$directory .= '/';
}
- if ($this->addEmbeddedImage(
- $basedir . $directory . $filename,
- $cid,
- $filename,
- static::ENCODING_BASE64,
- static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION))
- )
+ if (
+ $this->addEmbeddedImage(
+ $basedir . $directory . $filename,
+ $cid,
+ $filename,
+ static::ENCODING_BASE64,
+ static::_mime_types((string) static::mb_pathinfo($filename, PATHINFO_EXTENSION))
+ )
) {
$message = preg_replace(
'/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui',
@@ -4114,7 +4156,7 @@ class PHPMailer
public function html2text($html, $advanced = false)
{
if (is_callable($advanced)) {
- return $advanced($html);
+ return call_user_func($advanced, $html);
}
return html_entity_decode(
@@ -4213,6 +4255,7 @@ class PHPMailer
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'webp' => 'image/webp',
+ 'avif' => 'image/avif',
'heif' => 'image/heif',
'heifs' => 'image/heif-sequence',
'heic' => 'image/heic',
@@ -4483,11 +4526,15 @@ class PHPMailer
$privKey = openssl_pkey_get_private($privKeyStr);
}
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
- openssl_pkey_free($privKey);
+ if (PHP_MAJOR_VERSION < 8) {
+ openssl_pkey_free($privKey);
+ }
return base64_encode($signature);
}
- openssl_pkey_free($privKey);
+ if (PHP_MAJOR_VERSION < 8) {
+ openssl_pkey_free($privKey);
+ }
return '';
}
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php
index 7d4c88f6..235e6372 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/POP3.php
@@ -1,4 +1,5 @@
<?php
+
/**
* PHPMailer POP-Before-SMTP Authentication Class.
* PHP Version 5.5.
@@ -9,7 +10,7 @@
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
- * @copyright 2012 - 2019 Marcus Bointon
+ * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
@@ -45,7 +46,7 @@ class POP3
*
* @var string
*/
- const VERSION = '6.1.6';
+ const VERSION = '6.2.0';
/**
* Default POP3 port number.
@@ -62,12 +63,16 @@ class POP3
const DEFAULT_TIMEOUT = 30;
/**
- * Debug display level.
- * Options: 0 = no, 1+ = yes.
+ * POP3 class debug output mode.
+ * Debug output level.
+ * Options:
+ * @see POP3::DEBUG_OFF: No output
+ * @see POP3::DEBUG_SERVER: Server messages, connection/server errors
+ * @see POP3::DEBUG_CLIENT: Client and Server messages, connection/server errors
*
* @var int
*/
- public $do_debug = 0;
+ public $do_debug = self::DEBUG_OFF;
/**
* POP3 mail server hostname.
@@ -130,6 +135,28 @@ class POP3
*/
const LE = "\r\n";
+ /**
+ * Debug level for no output.
+ *
+ * @var int
+ */
+ const DEBUG_OFF = 0;
+
+ /**
+ * Debug level to show server -> client messages
+ * also shows clients connection errors or errors from server
+ *
+ * @var int
+ */
+ const DEBUG_SERVER = 1;
+
+ /**
+ * Debug level to show client -> server and server -> client messages.
+ *
+ * @var int
+ */
+ const DEBUG_CLIENT = 2;
+
/**
* Simple static wrapper for all-in-one POP before SMTP.
*
@@ -329,7 +356,7 @@ class POP3
protected function getResponse($size = 128)
{
$response = fgets($this->pop_conn, $size);
- if ($this->do_debug >= 1) {
+ if ($this->do_debug >= self::DEBUG_SERVER) {
echo 'Server -> Client: ', $response;
}
@@ -346,7 +373,7 @@ class POP3
protected function sendString($string)
{
if ($this->pop_conn) {
- if ($this->do_debug >= 2) { //Show client messages when debug >= 2
+ if ($this->do_debug >= self::DEBUG_CLIENT) { //Show client messages when debug >= 2
echo 'Client -> Server: ', $string;
}
@@ -384,7 +411,7 @@ class POP3
protected function setError($error)
{
$this->errors[] = $error;
- if ($this->do_debug >= 1) {
+ if ($this->do_debug >= self::DEBUG_SERVER) {
echo '<pre>';
foreach ($this->errors as $e) {
print_r($e);
diff --git a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php
index aa555514..ab7f46e4 100644
--- a/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php
+++ b/data/web/inc/lib/vendor/phpmailer/phpmailer/src/SMTP.php
@@ -1,4 +1,5 @@
<?php
+
/**
* PHPMailer RFC821 SMTP email transport class.
* PHP Version 5.5.
@@ -9,7 +10,7 @@
* @author Jim Jagielski (jimjag) <[email protected]>
* @author Andy Prevost (codeworxtech) <[email protected]>
* @author Brent R. Matzelle (original founder)
- * @copyright 2012 - 2019 Marcus Bointon
+ * @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
@@ -34,7 +35,7 @@ class SMTP
*
* @var string
*/
- const VERSION = '6.1.6';
+ const VERSION = '6.2.0';
/**
* SMTP line break constant.
@@ -311,12 +312,6 @@ class SMTP
*/
public function connect($host, $port = null, $timeout = 30, $options = [])
{
- static $streamok;
- //This is enabled by default since 5.0.0 but some providers disable it
- //Check this once and cache the result
- if (null === $streamok) {
- $streamok = function_exists('stream_socket_client');
- }
// Clear errors to avoid confusion
$this->setError('');
// Make sure we are __not__ connected
@@ -335,12 +330,48 @@ class SMTP
(count($options) > 0 ? var_export($options, true) : 'array()'),
self::DEBUG_CONNECTION
);
+
+ $this->smtp_conn = $this->getSMTPConnection($host, $port, $timeout, $options);
+
+ if ($this->smtp_conn === false) {
+ //Error info already set inside `getSMTPConnection()`
+ return false;
+ }
+
+ $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
+
+ // Get any announcement
+ $this->last_reply = $this->get_lines();
+ $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER);
+
+ return true;
+ }
+
+ /**
+ * Create connection to the SMTP server.
+ *
+ * @param string $host SMTP server IP or host name
+ * @param int $port The port number to connect to
+ * @param int $timeout How long to wait for the connection to open
+ * @param array $options An array of options for stream_context_create()
+ *
+ * @return false|resource
+ */
+ protected function getSMTPConnection($host, $port = null, $timeout = 30, $options = [])
+ {
+ static $streamok;
+ //This is enabled by default since 5.0.0 but some providers disable it
+ //Check this once and cache the result
+ if (null === $streamok) {
+ $streamok = function_exists('stream_socket_client');
+ }
+
$errno = 0;
$errstr = '';
if ($streamok) {
$socket_context = stream_context_create($options);
set_error_handler([$this, 'errorHandler']);
- $this->smtp_conn = stream_socket_client(
+ $connection = stream_socket_client(
$host . ':' . $port,
$errno,
$errstr,
@@ -356,7 +387,7 @@ class SMTP
self::DEBUG_CONNECTION
);
set_error_handler([$this, 'errorHandler']);
- $this->smtp_conn = fsockopen(
+ $connection = fsockopen(
$host,
$port,
$errno,
@@ -365,8 +396,9 @@ class SMTP
);
restore_error_handler();
}
+
// Verify we connected properly
- if (!is_resource($this->smtp_conn)) {
+ if (!is_resource($connection)) {
$this->setError(
'Failed to connect to server',
'',
@@ -381,22 +413,19 @@ class SMTP
return false;
}
- $this->edebug('Connection: opened', self::DEBUG_CONNECTION);
+
// SMTP server can take longer to respond, give longer timeout for first read
// Windows does not have support for this timeout function
if (strpos(PHP_OS, 'WIN') !== 0) {
- $max = (int) ini_get('max_execution_time');
- // Don't bother if unlimited
- if (0 !== $max && $timeout > $max) {
+ $max = (int)ini_get('max_execution_time');
+ // Don't bother if unlimited, or if set_time_limit is disabled
+ if (0 !== $max && $timeout > $max && strpos(ini_get('disable_functions'), 'set_time_limit') === false) {
@set_time_limit($timeout);
}
- stream_set_timeout($this->smtp_conn, $timeout, 0);
+ stream_set_timeout($connection, $timeout, 0);
}
- // Get any announcement
- $announce = $this->get_lines();
- $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER);
- return true;
+ return $connection;
}
/**
@@ -511,11 +540,12 @@ class SMTP
return false;
}
// Send encoded username and password
- if (!$this->sendCommand(
- 'User & Password',
- base64_encode("\0" . $username . "\0" . $password),
- 235
- )
+ if (
+ !$this->sendCommand(
+ 'User & Password',
+ base64_encode("\0" . $username . "\0" . $password),
+ 235
+ )
) {
return false;
}
@@ -1058,8 +1088,10 @@ class SMTP
{
//If SMTP transcripts are left enabled, or debug output is posted online
//it can leak credentials, so hide credentials in all but lowest level
- if (self::DEBUG_LOWLEVEL > $this->do_debug &&
- in_array($command, ['User & Password', 'Username', 'Password'], true)) {
+ if (
+ self::DEBUG_LOWLEVEL > $this->do_debug &&
+ in_array($command, ['User & Password', 'Username', 'Password'], true)
+ ) {
$this->edebug('CLIENT -> SERVER: [credentials hidden]', self::DEBUG_CLIENT);
} else {
$this->edebug('CLIENT -> SERVER: ' . $data, self::DEBUG_CLIENT);
@@ -1166,13 +1198,41 @@ class SMTP
$selW = null;
while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) {
//Must pass vars in here as params are by reference
- if (!stream_select($selR, $selW, $selW, $this->Timelimit)) {
+ //solution for signals inspired by https://github.com/symfony/symfony/pull/6540
+ set_error_handler([$this, 'errorHandler']);
+ $n = stream_select($selR, $selW, $selW, $this->Timelimit);
+ restore_error_handler();
+
+ if ($n === false) {
+ $message = $this->getError()['detail'];
+
+ $this->edebug(
+ 'SMTP -> get_lines(): select failed (' . $message . ')',
+ self::DEBUG_LOWLEVEL
+ );
+
+ //stream_select returns false when the `select` system call is interrupted
+ //by an incoming signal, try the select again
+ if (stripos($message, 'interrupted system call') !== false) {
+ $this->edebug(
+ 'SMTP -> get_lines(): retrying stream_select',
+ self::DEBUG_LOWLEVEL
+ );
+ $this->setError('');
+ continue;
+ }
+
+ break;
+ }
+
+ if (!$n) {
$this->edebug(
'SMTP -> get_lines(): select timed-out in (' . $this->Timelimit . ' sec)',
self::DEBUG_LOWLEVEL
);
break;
}
+
//Deliberate noise suppression - errors are handled afterwards
$str = @fgets($this->smtp_conn, self::MAX_REPLY_LENGTH);
$this->edebug('SMTP INBOUND: "' . trim($str) . '"', self::DEBUG_LOWLEVEL);