Bevezető:
----------
Az API access célja, hogy egy kontrolált hozzáférést (jelszót) adjunk a usernek 
és ez a jelszó usernév nélkül is be tudja azonosítani a usert.

A kontrol alatt lehet a jelszó alábbi tulajdonságait szabályozni:
1.) Melyik hardware-ről használható
2.) Meddig használható

Fogalmak:
----------
1.) API key: Ez egy 48 char hosszú HEX string. Ami egy AES key-ből van képezve: tohex(base64(aeskey)) Pl.:

33617349796457533279384E337641376161415063673D3D

2.) API token: egy json fájl, ami tartalmazza az API key-t és a hozzá tartozó meta információkat (name, expire, etc).
Az alábbi fájlban van tárolva: $regdir/$userid/api/tokens/md5(api key)
A fájl a felhasználó publikus kulcsával van titkosítva. Ezt csak azért tároljuk, hogy lehetőség legyen
az api kulcsot menedzselésére.

$token["Created"] = date("Y-m-d H:i:s",$created);
$token["Creator"] = $_SERVER['REMOTE_ADDR'];
$token["Expires"] = date("Y-m-d H:i:s",$exp);
$token["Name"] = $keyname;
$token["ApiKey"] = $apikey;
$token["Type"] = "RSA";

3.) API access: egy json fájl, ami lehetővé teszi, hogy az api token alapján megtaláljuk a usert. 
Ha befut a token, abból képezünk egy hash-t: sha512(base64(aeskey)), és ez alapján megkeressük, hogy
a token melyik userhez tartozik. Ez az információ az alábbi fájlban van tárolva:
$servicesdatadir/api/tokens/token_rsa_$hash.txt
A fájlban a user private kulcsa az api key-t használva van titkosítva:

$access["User"] = $userid;
$access["Expires"] = $exp;
$access["Pem"] = $pemprivate; (api kulccsal titkosított user private key)
$access["Name"] = $keyname;

Miért biztonságos:
------------------
Ha a hacker a szerverhez hozzáfér nem tudja kideríteni a private kulcsokat. A private 
kulcs titkosított verziója az api key hash-t használva tölthető be, és az api kulcsot
használva lehet megfejteni.

Az api kulcs hash segítségével lehet a titkosított private kulcsot lekérni.

Az api kulcsot a generálás után átadjuk a usernek. A user ezután a szerverre csak
a kulcs hash-t küldi be. A kulcs hash segítségével lekérheti a private kulcs 
titkosított változatát, amit a tényleges api kulcs segítségével tudj elolvasni.

A dekódolt private kulcsot használva hozzá tud férni az adataihoz. 

A folyamat:
-----------
1.) Első lépésben a user generál magának egy api kulcsot:
generateMyApiTokenRSA($keyname,&$apikey,&$error);
Itt az történik, hogy létrejön az api token fájl és a user visszakapja a 48 char hosszú api kulcsát

2.) Ha valaki az api key ismeretében meg akarja tudni a user adataiat, akkor a következőt kell tennie:
getUserDetails($apikey,$private,$details,$error)

