xref: /aosp_15_r20/external/tink/cc/jwt/verified_jwt.cc (revision e7b1675dde1b92d52ec075b0a92829627f2c52a5)
1*e7b1675dSTing-Kang Chang // Copyright 2021 Google LLC
2*e7b1675dSTing-Kang Chang //
3*e7b1675dSTing-Kang Chang // Licensed under the Apache License, Version 2.0 (the "License");
4*e7b1675dSTing-Kang Chang // you may not use this file except in compliance with the License.
5*e7b1675dSTing-Kang Chang // You may obtain a copy of the License at
6*e7b1675dSTing-Kang Chang //
7*e7b1675dSTing-Kang Chang //     http://www.apache.org/licenses/LICENSE-2.0
8*e7b1675dSTing-Kang Chang //
9*e7b1675dSTing-Kang Chang // Unless required by applicable law or agreed to in writing, software
10*e7b1675dSTing-Kang Chang // distributed under the License is distributed on an "AS IS" BASIS,
11*e7b1675dSTing-Kang Chang // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*e7b1675dSTing-Kang Chang // See the License for the specific language governing permissions and
13*e7b1675dSTing-Kang Chang // limitations under the License.
14*e7b1675dSTing-Kang Chang //
15*e7b1675dSTing-Kang Chang ///////////////////////////////////////////////////////////////////////////////
16*e7b1675dSTing-Kang Chang 
17*e7b1675dSTing-Kang Chang #include "tink/jwt/verified_jwt.h"
18*e7b1675dSTing-Kang Chang 
19*e7b1675dSTing-Kang Chang #include <string>
20*e7b1675dSTing-Kang Chang #include <vector>
21*e7b1675dSTing-Kang Chang 
22*e7b1675dSTing-Kang Chang #include "absl/strings/numbers.h"
23*e7b1675dSTing-Kang Chang #include "absl/strings/str_format.h"
24*e7b1675dSTing-Kang Chang #include "absl/strings/substitute.h"
25*e7b1675dSTing-Kang Chang #include "tink/jwt/internal/json_util.h"
26*e7b1675dSTing-Kang Chang 
27*e7b1675dSTing-Kang Chang namespace crypto {
28*e7b1675dSTing-Kang Chang namespace tink {
29*e7b1675dSTing-Kang Chang 
30*e7b1675dSTing-Kang Chang VerifiedJwt::VerifiedJwt() = default;
31*e7b1675dSTing-Kang Chang 
VerifiedJwt(const RawJwt & raw_jwt)32*e7b1675dSTing-Kang Chang VerifiedJwt::VerifiedJwt(const RawJwt& raw_jwt) {
33*e7b1675dSTing-Kang Chang   raw_jwt_ = raw_jwt;
34*e7b1675dSTing-Kang Chang }
35*e7b1675dSTing-Kang Chang 
HasTypeHeader() const36*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasTypeHeader() const { return raw_jwt_.HasTypeHeader(); }
37*e7b1675dSTing-Kang Chang 
GetTypeHeader() const38*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetTypeHeader() const {
39*e7b1675dSTing-Kang Chang   return raw_jwt_.GetTypeHeader();
40*e7b1675dSTing-Kang Chang }
41*e7b1675dSTing-Kang Chang 
HasIssuer() const42*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasIssuer() const {
43*e7b1675dSTing-Kang Chang   return raw_jwt_.HasIssuer();
44*e7b1675dSTing-Kang Chang }
45*e7b1675dSTing-Kang Chang 
GetIssuer() const46*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetIssuer() const {
47*e7b1675dSTing-Kang Chang   return raw_jwt_.GetIssuer();
48*e7b1675dSTing-Kang Chang }
49*e7b1675dSTing-Kang Chang 
HasSubject() const50*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasSubject() const {
51*e7b1675dSTing-Kang Chang   return raw_jwt_.HasSubject();
52*e7b1675dSTing-Kang Chang }
53*e7b1675dSTing-Kang Chang 
GetSubject() const54*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetSubject() const {
55*e7b1675dSTing-Kang Chang   return raw_jwt_.GetSubject();
56*e7b1675dSTing-Kang Chang }
57*e7b1675dSTing-Kang Chang 
HasAudiences() const58*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasAudiences() const {
59*e7b1675dSTing-Kang Chang   return raw_jwt_.HasAudiences();
60*e7b1675dSTing-Kang Chang }
61*e7b1675dSTing-Kang Chang 
GetAudiences() const62*e7b1675dSTing-Kang Chang util::StatusOr<std::vector<std::string>> VerifiedJwt::GetAudiences() const {
63*e7b1675dSTing-Kang Chang   return raw_jwt_.GetAudiences();
64*e7b1675dSTing-Kang Chang }
65*e7b1675dSTing-Kang Chang 
HasJwtId() const66*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasJwtId() const {
67*e7b1675dSTing-Kang Chang   return raw_jwt_.HasJwtId();
68*e7b1675dSTing-Kang Chang }
69*e7b1675dSTing-Kang Chang 
GetJwtId() const70*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetJwtId() const {
71*e7b1675dSTing-Kang Chang   return raw_jwt_.GetJwtId();
72*e7b1675dSTing-Kang Chang }
73*e7b1675dSTing-Kang Chang 
HasExpiration() const74*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasExpiration() const {
75*e7b1675dSTing-Kang Chang   return raw_jwt_.HasExpiration();
76*e7b1675dSTing-Kang Chang }
77*e7b1675dSTing-Kang Chang 
GetExpiration() const78*e7b1675dSTing-Kang Chang util::StatusOr<absl::Time> VerifiedJwt::GetExpiration() const {
79*e7b1675dSTing-Kang Chang   return raw_jwt_.GetExpiration();
80*e7b1675dSTing-Kang Chang }
81*e7b1675dSTing-Kang Chang 
HasNotBefore() const82*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasNotBefore() const {
83*e7b1675dSTing-Kang Chang   return raw_jwt_.HasNotBefore();
84*e7b1675dSTing-Kang Chang }
85*e7b1675dSTing-Kang Chang 
GetNotBefore() const86*e7b1675dSTing-Kang Chang util::StatusOr<absl::Time> VerifiedJwt::GetNotBefore() const {
87*e7b1675dSTing-Kang Chang   return raw_jwt_.GetNotBefore();
88*e7b1675dSTing-Kang Chang }
89*e7b1675dSTing-Kang Chang 
HasIssuedAt() const90*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasIssuedAt() const {
91*e7b1675dSTing-Kang Chang   return raw_jwt_.HasIssuedAt();
92*e7b1675dSTing-Kang Chang }
93*e7b1675dSTing-Kang Chang 
GetIssuedAt() const94*e7b1675dSTing-Kang Chang util::StatusOr<absl::Time> VerifiedJwt::GetIssuedAt() const {
95*e7b1675dSTing-Kang Chang   return raw_jwt_.GetIssuedAt();
96*e7b1675dSTing-Kang Chang }
97*e7b1675dSTing-Kang Chang 
IsNullClaim(absl::string_view name) const98*e7b1675dSTing-Kang Chang bool VerifiedJwt::IsNullClaim(absl::string_view name) const {
99*e7b1675dSTing-Kang Chang   return raw_jwt_.IsNullClaim(name);
100*e7b1675dSTing-Kang Chang }
101*e7b1675dSTing-Kang Chang 
HasBooleanClaim(absl::string_view name) const102*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasBooleanClaim(absl::string_view name) const {
103*e7b1675dSTing-Kang Chang   return raw_jwt_.HasBooleanClaim(name);
104*e7b1675dSTing-Kang Chang }
105*e7b1675dSTing-Kang Chang 
GetBooleanClaim(absl::string_view name) const106*e7b1675dSTing-Kang Chang util::StatusOr<bool> VerifiedJwt::GetBooleanClaim(
107*e7b1675dSTing-Kang Chang     absl::string_view name) const {
108*e7b1675dSTing-Kang Chang   return raw_jwt_.GetBooleanClaim(name);
109*e7b1675dSTing-Kang Chang }
110*e7b1675dSTing-Kang Chang 
HasStringClaim(absl::string_view name) const111*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasStringClaim(absl::string_view name) const {
112*e7b1675dSTing-Kang Chang   return raw_jwt_.HasStringClaim(name);
113*e7b1675dSTing-Kang Chang }
114*e7b1675dSTing-Kang Chang 
GetStringClaim(absl::string_view name) const115*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetStringClaim(
116*e7b1675dSTing-Kang Chang     absl::string_view name) const {
117*e7b1675dSTing-Kang Chang   return raw_jwt_.GetStringClaim(name);
118*e7b1675dSTing-Kang Chang }
119*e7b1675dSTing-Kang Chang 
HasNumberClaim(absl::string_view name) const120*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasNumberClaim(absl::string_view name) const {
121*e7b1675dSTing-Kang Chang   return raw_jwt_.HasNumberClaim(name);
122*e7b1675dSTing-Kang Chang }
123*e7b1675dSTing-Kang Chang 
GetNumberClaim(absl::string_view name) const124*e7b1675dSTing-Kang Chang util::StatusOr<double> VerifiedJwt::GetNumberClaim(
125*e7b1675dSTing-Kang Chang     absl::string_view name) const {
126*e7b1675dSTing-Kang Chang   return raw_jwt_.GetNumberClaim(name);
127*e7b1675dSTing-Kang Chang }
128*e7b1675dSTing-Kang Chang 
HasJsonObjectClaim(absl::string_view name) const129*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasJsonObjectClaim(absl::string_view name) const {
130*e7b1675dSTing-Kang Chang   return raw_jwt_.HasJsonObjectClaim(name);
131*e7b1675dSTing-Kang Chang }
132*e7b1675dSTing-Kang Chang 
GetJsonObjectClaim(absl::string_view name) const133*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetJsonObjectClaim(
134*e7b1675dSTing-Kang Chang     absl::string_view name) const {
135*e7b1675dSTing-Kang Chang   return raw_jwt_.GetJsonObjectClaim(name);
136*e7b1675dSTing-Kang Chang }
137*e7b1675dSTing-Kang Chang 
HasJsonArrayClaim(absl::string_view name) const138*e7b1675dSTing-Kang Chang bool VerifiedJwt::HasJsonArrayClaim(absl::string_view name) const {
139*e7b1675dSTing-Kang Chang   return raw_jwt_.HasJsonArrayClaim(name);
140*e7b1675dSTing-Kang Chang }
141*e7b1675dSTing-Kang Chang 
GetJsonArrayClaim(absl::string_view name) const142*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetJsonArrayClaim(
143*e7b1675dSTing-Kang Chang     absl::string_view name) const {
144*e7b1675dSTing-Kang Chang   return raw_jwt_.GetJsonArrayClaim(name);
145*e7b1675dSTing-Kang Chang }
146*e7b1675dSTing-Kang Chang 
CustomClaimNames() const147*e7b1675dSTing-Kang Chang std::vector<std::string> VerifiedJwt::CustomClaimNames() const {
148*e7b1675dSTing-Kang Chang   return raw_jwt_.CustomClaimNames();
149*e7b1675dSTing-Kang Chang }
150*e7b1675dSTing-Kang Chang 
GetJsonPayload()151*e7b1675dSTing-Kang Chang util::StatusOr<std::string> VerifiedJwt::GetJsonPayload() {
152*e7b1675dSTing-Kang Chang   return raw_jwt_.GetJsonPayload();
153*e7b1675dSTing-Kang Chang }
154*e7b1675dSTing-Kang Chang 
155*e7b1675dSTing-Kang Chang }  // namespace tink
156*e7b1675dSTing-Kang Chang }  // namespace crypto
157