* * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ namespace sqrlexample; require_once __DIR__ . '/../vendor/autoload.php'; require_once __DIR__ . '/../includes/ExampleStatefulStorage.php'; session_start(); //configuration stuff $config = new \Trianglman\Sqrl\SqrlConfiguration(); $config->load(__DIR__ . '/../config/sqrlconfig.json'); $store = new ExampleStatefulStorage(new \PDO('mysql:host=localhost;dbname=sqrl', 'example', 'bar'), $_SERVER['REMOTE_ADDR'], $_SESSION); $generator = new \Trianglman\Sqrl\SqrlGenerate($config, $store); $nonce = $generator->getNonce(); $sqrlUrl = $generator->getUrl(); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>SQRL Example Server</title> </head> <body> <h1>Welcome to the SQRL PHP Example Server</h1>
* * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ namespace sqrlexample; require_once __DIR__ . '/../../vendor/autoload.php'; $config = new \Trianglman\Sqrl\SqrlConfiguration(); $config->load(__DIR__ . '/../../config/sqrlconfig.json'); $db = new \PDO($config->getDsn(), $config->getUsername(), $config->getPassword()); $store = new \Trianglman\Sqrl\SqrlStore($config); $store->setDatabaseConnection($db); $validated = false; if (isset($_SESSION['nonce'])) { $validated = (int) $store->retrieveNutRecord($_SESSION['nonce'], array(\Trianglman\Sqrl\SqrlStoreInterface::VERIFIED)) > 0; if ($validated) { //TODO: create a utility function in SqrlStore that will do this work for the developer $SQL = "SELECT related_public_key FROM sqrl_nonce n JOIN sqrl_nonce_relationship r ON r.new_nonce = n.nonce WHERE r.old_nonce = ?"; $stmt = $db->prepare($SQL); $stmt->execute(array($_SESSION['nonce'])); $result = $stmt->fetchColumn(0); //Update the session with a user identifier instead of the nonce $_SESSION['publicKey'] = $result[0];