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);
 }
Example #2
0
            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);
Example #3
0
    <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";