More improvements
This commit is contained in:
parent
3b0c275fbc
commit
0b75b521b3
18 changed files with 1193 additions and 745 deletions
|
@ -1,17 +1,122 @@
|
|||
import std.stdio;
|
||||
|
||||
import jwt;
|
||||
import hunt.jwt;
|
||||
import hunt.logging.ConsoleLogger;
|
||||
|
||||
import std.datetime;
|
||||
import std.exception;
|
||||
import std.conv;
|
||||
import std.json;
|
||||
import std.format;
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
// testToken();
|
||||
// testHS512();
|
||||
testES256();
|
||||
}
|
||||
|
||||
void testToken() {
|
||||
|
||||
string tokenString = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjEiLCJuYW1lIjoiYWxpY2UiLCJlbWFpbCI6ImFsaWNlQGdtYWlsLmNvbSIsInBob25lX251bWJlciI6IjE4ODAwMDAwMDAxIiwibmJmIjoxNTA5NDY0MzQwLCJleHAiOjE1MTAwNjkxNDAsImlhdCI6MTUwOTQ2NDM0MH0.nV7duR2gWHA3TB9xPhP1WWhDpXRn1GA_k8_zBBirT6g";
|
||||
|
||||
Token tk = decode(tokenString);
|
||||
JwtToken tk = JwtToken.decode(tokenString);
|
||||
|
||||
writeln(tk.header.json());
|
||||
writeln(tk.claims.json());
|
||||
|
||||
tk = verify(tokenString, "secret", []);
|
||||
assert(JwtToken.verify(tokenString, "secret"));
|
||||
}
|
||||
|
||||
// HS512
|
||||
void testHS512() {
|
||||
scope(failure) {
|
||||
warning("failed");
|
||||
}
|
||||
|
||||
scope(success) {
|
||||
info("passed");
|
||||
}
|
||||
|
||||
string hs_secret = "secret";
|
||||
enum FinalToken = "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2MDYwMzI4MjQsImxhbmd1YWdlIjoiRCJ9.nIWh2aWLdjA64NWm5P1RO5vG66DKGg8nXAfJ7js3qEV1CoX-BNvXFKvhPJvNby7_ZQTrqHLpCNBWEdtrshxYFQ";
|
||||
long iat = 1606032824;
|
||||
JSONValue payload = parseJSON(`{"iat":1606032824,"language":"D"}`);
|
||||
|
||||
string hs512Token = encode(payload, hs_secret, JwtAlgorithm.HS512);
|
||||
assert(hs512Token == FinalToken);
|
||||
assert(JwtToken.verify(hs512Token, hs_secret));
|
||||
|
||||
warning(hs512Token);
|
||||
|
||||
JwtToken token = new JwtToken(JwtAlgorithm.HS512);
|
||||
token.claims.set("language", "D");
|
||||
token.claims.iat = iat;
|
||||
string hs512Token2 = token.encode(hs_secret);
|
||||
warning(hs512Token2);
|
||||
assert(hs512Token == hs512Token2);
|
||||
|
||||
//
|
||||
|
||||
token = JwtToken.decode(FinalToken, hs_secret);
|
||||
string language = token.claims.get("language");
|
||||
assert(language == "D");
|
||||
}
|
||||
|
||||
|
||||
// ES256
|
||||
void testES256() {
|
||||
|
||||
scope(failure) {
|
||||
warning("failed");
|
||||
}
|
||||
|
||||
scope(success) {
|
||||
info("passed");
|
||||
}
|
||||
|
||||
string es256_public = q"EOS
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEMuSnsWbiIPyfFAIAvlbliPOUnQlibb67
|
||||
yE6JUqXVaevb8ZorK2HfxfFg9pGVhg3SGuBCbHcJ84WKOX3GSMEwcA==
|
||||
-----END PUBLIC KEY-----
|
||||
EOS";
|
||||
|
||||
|
||||
string es256_private = q"EOS
|
||||
-----BEGIN EC PRIVATE KEY-----
|
||||
MHQCAQEEIB8cQPtLEF5hOJsom5oVU5dMpgDUR2QYuJTXdtvxezQloAcGBSuBBAAK
|
||||
oUQDQgAEMuSnsWbiIPyfFAIAvlbliPOUnQlibb67yE6JUqXVaevb8ZorK2HfxfFg
|
||||
9pGVhg3SGuBCbHcJ84WKOX3GSMEwcA==
|
||||
-----END EC PRIVATE KEY-----
|
||||
EOS";
|
||||
|
||||
long iat = 1606032824;
|
||||
JSONValue payload = parseJSON(format(`{"iat":%d,"language":"D"}`, iat));
|
||||
|
||||
string es256Token = encode(payload, es256_private, JwtAlgorithm.ES256);
|
||||
warning(es256Token);
|
||||
// assert(es256Token == Es256FinalToken);
|
||||
assert(JwtToken.verify(es256Token, es256_public));
|
||||
|
||||
|
||||
string es256Token1 = encode(payload, es256_private, JwtAlgorithm.ES256);
|
||||
trace(es256Token1);
|
||||
|
||||
assert(es256Token != es256Token1);
|
||||
|
||||
JwtToken token = new JwtToken(JwtAlgorithm.ES256);
|
||||
token.claims.set("language", "D");
|
||||
token.claims.iat = iat;
|
||||
string es256Token2 = token.encode(es256_private);
|
||||
warning(es256Token2);
|
||||
assert(JwtToken.verify(es256Token2, es256_public));
|
||||
|
||||
|
||||
//
|
||||
token = JwtToken.decode(es256Token2, es256_public);
|
||||
|
||||
string language = token.claims.get("language");
|
||||
assert(language == "D");
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue