public function testGetRegisterData() { list($reg, $signData) = $this->u2f->getRegisterData(); $this->assertJsonStringEqualsJsonString(json_encode(array()), json_encode($signData)); $this->assertEquals('U2F_V2', $reg->version); $this->assertObjectHasAttribute('challenge', $reg); $this->assertEquals('http://demo.example.com', $reg->appId); }
localStorage.setItem('u2fregistration', JSON.stringify(data)); } <?php function fixupArray($data) { $ret = array(); $decoded = json_decode($data); foreach ($decoded as $d) { $ret[] = json_encode($d); } return $ret; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['startRegister'])) { $regs = json_decode($_POST['registrations']) ?: array(); list($data, $reqs) = $u2f->getRegisterData($regs); echo "var request = " . json_encode($data) . ";\n"; echo "var signs = " . json_encode($reqs) . ";\n"; ?> setTimeout(function() { console.log("Register: ", request); u2f.register([request], signs, function(data) { var form = document.getElementById('form'); var reg = document.getElementById('doRegister'); var req = document.getElementById('request'); console.log("Register callback", data); if(data.errorCode && data.errorCode != 0) { alert("registration failed with errror: " + data.errorCode); return; } reg.value=JSON.stringify(data);
<script> <?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!$_POST['username']) { echo "alert('no username provided!');"; } else { if (!isset($_POST['action']) && !isset($_POST['register2']) && !isset($_POST['authenticate2'])) { echo "alert('no action provided!');"; } else { $user = createAndGetUser($_POST['username']); if (isset($_POST['action'])) { switch ($_POST['action']) { case 'register': try { $data = $u2f->getRegisterData(getRegs($user->id)); list($req, $sigs) = $data; $_SESSION['regReq'] = json_encode($req); echo "var req = " . json_encode($req) . ";"; echo "var sigs = " . json_encode($sigs) . ";"; echo "var username = '******';"; ?> setTimeout(function() { console.log("Register: ", req); u2f.register([req], sigs, function(data) { var form = document.getElementById('form'); var reg = document.getElementById('register2'); var user = document.getElementById('username'); console.log("Register callback", data); if(data.errorCode) { alert("registration failed with errror: " + data.errorCode);
if (array_key_exists('r', $options)) { $mode = "register"; } elseif (array_key_exists('a', $options)) { if (!array_key_exists('R', $options)) { print "a registration must be supplied with -R"; exit(1); } $regs = json_decode('[' . $options['R'] . ']'); $mode = "authenticate"; } else { print "-r or -a must be used\n"; exit(1); } if (!array_key_exists('o', $options)) { print "origin must be supplied with -o\n"; exit(1); } $u2f = new u2flib_server\U2F($options['o']); if ($mode === "register") { $challenge = $u2f->getRegisterData(); } elseif ($mode === "authenticate") { $challenge = $u2f->getAuthenticateData($regs); } print json_encode($challenge[0]) . "\n"; $response = fgets(STDIN); if ($mode === "register") { $result = $u2f->doRegister($challenge[0], json_decode($response)); } elseif ($mode === "authenticate") { $result = $u2f->doAuthenticate($challenge, $regs, json_decode($response)); } print json_encode($result) . "\n";