function issuechallenge($keyid)
{
    $requestip = $_SERVER["REMOTE_ADDR"];
    if (($db = getAuthDb()) === NULL) {
        handleError("Database connection error", 500);
    }
    $db->autocommit(FALSE);
    $stmt = $db->prepare('SELECT user FROM pubkeys WHERE keyid=?');
    $stmt->bind_param("i", $keyid);
    $stmt->bind_result($user);
    if ($stmt->execute()) {
        if (($result = $stmt->fetch()) === TRUE) {
            $stmt->close();
        } elseif ($result === NULL) {
            handleError("Key not found", 403, "invalid parameter");
        } else {
            handleError('Failure to get username');
        }
    }
    $random = openssl_random_pseudo_bytes(8);
    $challenge = base64_encode(sha1($requestip . $user . $random, TRUE));
    storeChallenge($db, $keyid, $requestip, $challenge);
    $db->close();
    header("Content-type: text/plain");
    print $challenge;
    //     print ("<html><body>Key $keyid belongs to user $user<br/>Challenge:$challenge</body></html>");
}
 /**
  * Store a newly created resource in storage.
  *
  * @return Response
  */
 public function store($userId, $exId)
 {
     $user = loadUser($userId)[0];
     if (loadChallengeByUsersExercise(\Auth::id(), $user->id, $exId) == []) {
         storeChallenge(\Auth::id(), $user->id, $exId);
         $challengeId = loadChallengeByUsersExercise(\Auth::id(), $user->id, $exId)[0]->id;
         setWinner($challengeId, \Auth::id());
         $newScore = loadUser(\Auth::id())[0]->score + 1;
         setUserScore(\Auth::id(), $newScore);
         flash()->success("{$user->username} was challenged succefully");
         storeNotification($user->id, "challenged", \Auth::id(), $challengeId);
     } else {
         flash()->error("This challenge already exists");
     }
     $sId = \Session::get('currentSerie');
     $nextEx = nextExerciseofSerie($exId, $sId);
     if ($nextEx == []) {
         return redirect('series/');
     }
     return redirect('exercises/' . $nextEx[0]->id);
 }