MCPcopy Create free account
hub / github.com/apple/foundationdb / parsePayloadPart

Function parsePayloadPart

fdbrpc/TokenSign.cpp:414–449  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

412}
413
414bool parsePayloadPart(Arena& arena, TokenRef& token, StringRef b64urlPayload) {
415 auto tmpArena = Arena();
416 auto optPayload = base64url::decode(tmpArena, b64urlPayload);
417 if (!optPayload.present())
418 return false;
419 auto payload = optPayload.get();
420 auto d = rapidjson::Document();
421 d.Parse(reinterpret_cast<const char*>(payload.begin()), payload.size());
422 if (d.HasParseError()) {
423 TraceEvent(SevWarnAlways, "TokenPayloadJsonParseError")
424 .suppressFor(10)
425 .detail("Payload", payload.toString())
426 .detail("Message", GetParseError_En(d.GetParseError()))
427 .detail("Offset", d.GetErrorOffset());
428 return false;
429 }
430 if (!d.IsObject())
431 return false;
432 if (!parseField(arena, token.issuer, d, "iss"))
433 return false;
434 if (!parseField(arena, token.subject, d, "sub"))
435 return false;
436 if (!parseField(arena, token.audience, d, "aud"))
437 return false;
438 if (!parseField(arena, token.tokenId, d, "jti"))
439 return false;
440 if (!parseField(arena, token.issuedAtUnixTime, d, "iat"))
441 return false;
442 if (!parseField(arena, token.expiresAtUnixTime, d, "exp"))
443 return false;
444 if (!parseField(arena, token.notBeforeUnixTime, d, "nbf"))
445 return false;
446 if (!parseField(arena, token.tenants, d, "tenants"))
447 return false;
448 return true;
449}
450
451bool parseSignaturePart(Arena& arena, TokenRef& token, StringRef b64urlSignature) {
452 auto optSig = base64url::decode(arena, b64urlSignature);

Callers 1

parseTokenFunction · 0.85

Calls 14

decodeFunction · 0.85
TraceEventClass · 0.85
parseFieldFunction · 0.85
detailMethod · 0.80
GetParseErrorMethod · 0.80
getMethod · 0.65
ArenaClass · 0.50
presentMethod · 0.45
ParseMethod · 0.45
beginMethod · 0.45
sizeMethod · 0.45
HasParseErrorMethod · 0.45

Tested by

no test coverage detected