7171import dev .cel .compiler .CelCompilerFactory ;
7272import dev .cel .expr .Expr ;
7373import java .io .IOException ;
74+ import java .security .GeneralSecurityException ;
7475import java .time .Duration ;
76+ import java .util .Base64 ;
7577import java .util .Date ;
78+ import java .util .List ;
7679import java .util .concurrent .ExecutionException ;
7780import javax .annotation .Nullable ;
78- import java .util .Base64 ;
79- import java .util .List ;
80- import java .security .GeneralSecurityException ;
8181
8282public class ClientSideCredentialAccessBoundaryFactory {
8383 static final Duration DEFAULT_REFRESH_MARGIN = Duration .ofMinutes (30 );
@@ -113,10 +113,7 @@ private ClientSideCredentialAccessBoundaryFactory(Builder builder) {
113113 }
114114
115115 CelOptions options = CelOptions .current ().build ();
116- this .celCompiler = CelCompilerFactory
117- .standardCelCompilerBuilder ()
118- .setOptions (options )
119- .build ();
116+ this .celCompiler = CelCompilerFactory .standardCelCompilerBuilder ().setOptions (options ).build ();
120117
121118 this .refreshMargin =
122119 builder .refreshMargin != null ? builder .refreshMargin : DEFAULT_REFRESH_MARGIN ;
@@ -129,7 +126,7 @@ private ClientSideCredentialAccessBoundaryFactory(Builder builder) {
129126
130127 /**
131128 * Generates a Client-Side CAB token given the {@link CredentialAccessBoundary}.
132- *
129+ *
133130 * @param accessBoundary
134131 * @return The Client-Side CAB token in an {@link AccessToken} object
135132 * @throws IOException If an I/O error occurs while refrehsing the source credentials
@@ -144,23 +141,18 @@ public AccessToken generateToken(CredentialAccessBoundary accessBoundary)
144141 Date intermediateTokenExpirationTime ;
145142
146143 synchronized (refreshLock ) {
147- intermediateToken =
148- this .intermediateCredentials .intermediateAccessToken .getTokenValue ();
144+ intermediateToken = this .intermediateCredentials .intermediateAccessToken .getTokenValue ();
149145 intermediateTokenExpirationTime =
150- this .intermediateCredentials .intermediateAccessToken
151- .getExpirationTime ();
146+ this .intermediateCredentials .intermediateAccessToken .getExpirationTime ();
152147 sessionKey = this .intermediateCredentials .accessBoundarySessionKey ;
153148 }
154149
155- byte [] rawRestrictions =
156- this .serializeCredentialAccessBoundary (accessBoundary );
150+ byte [] rawRestrictions = this .serializeCredentialAccessBoundary (accessBoundary );
157151
158- byte [] encryptedRestrictions =
159- this .encryptRestrictions (rawRestrictions , sessionKey );
152+ byte [] encryptedRestrictions = this .encryptRestrictions (rawRestrictions , sessionKey );
160153
161154 String tokenValue =
162- intermediateToken + "." +
163- Base64 .getUrlEncoder ().encodeToString (encryptedRestrictions );
155+ intermediateToken + "." + Base64 .getUrlEncoder ().encodeToString (encryptedRestrictions );
164156
165157 return new AccessToken (tokenValue , intermediateTokenExpirationTime );
166158 }
@@ -470,29 +462,24 @@ public void run() {
470462 }
471463 }
472464
473- /**
474- * Serializes a {@link CredentialAccessBoundary} object into Protobuf wire format.
475- */
465+ /** Serializes a {@link CredentialAccessBoundary} object into Protobuf wire format. */
476466 @ VisibleForTesting
477- byte [] serializeCredentialAccessBoundary (
478- CredentialAccessBoundary credentialAccessBoundary )
467+ byte [] serializeCredentialAccessBoundary (CredentialAccessBoundary credentialAccessBoundary )
479468 throws CelValidationException {
480- List <AccessBoundaryRule > rules =
481- credentialAccessBoundary .getAccessBoundaryRules ();
482- ClientSideAccessBoundary .Builder accessBoundaryBuilder =
483- ClientSideAccessBoundary .newBuilder ();
469+ List <AccessBoundaryRule > rules = credentialAccessBoundary .getAccessBoundaryRules ();
470+ ClientSideAccessBoundary .Builder accessBoundaryBuilder = ClientSideAccessBoundary .newBuilder ();
484471
485472 for (AccessBoundaryRule rule : rules ) {
486473 ClientSideAccessBoundaryRule .Builder ruleBuilder =
487- accessBoundaryBuilder .addAccessBoundaryRulesBuilder ()
474+ accessBoundaryBuilder
475+ .addAccessBoundaryRulesBuilder ()
488476 .addAllAvailablePermissions (rule .getAvailablePermissions ())
489477 .setAvailableResource (rule .getAvailableResource ());
490478
491479 // Availability condition is an optional field from the CredentialAccessBoundary
492480 // CEL compliation is only performed if there is a non-empty availablity condition.
493481 if (rule .getAvailabilityCondition () != null ) {
494- String availabilityCondition =
495- rule .getAvailabilityCondition ().getExpression ();
482+ String availabilityCondition = rule .getAvailabilityCondition ().getExpression ();
496483
497484 Expr availabilityConditionExpr = this .compileCel (availabilityCondition );
498485 ruleBuilder .setCompiledAvailabilityCondition (availabilityConditionExpr );
@@ -502,22 +489,18 @@ byte[] serializeCredentialAccessBoundary(
502489 return accessBoundaryBuilder .build ().toByteArray ();
503490 }
504491
505- /**
506- * Compiles CEL expression from String to an {@link Expr} proto object.
507- */
492+ /** Compiles CEL expression from String to an {@link Expr} proto object. */
508493 private Expr compileCel (String expr ) throws CelValidationException {
509494 CelAbstractSyntaxTree ast = celCompiler .parse (expr ).getAst ();
510495
511- CelProtoAbstractSyntaxTree astProto =
512- CelProtoAbstractSyntaxTree .fromCelAst (ast );
496+ CelProtoAbstractSyntaxTree astProto = CelProtoAbstractSyntaxTree .fromCelAst (ast );
513497
514498 return astProto .getExpr ();
515499 }
516500
517- /**
518- * Encrypts the given bytes using a sessionKey using Tink Aead.
519- */
520- private byte [] encryptRestrictions (byte [] restriction , String sessionKey ) throws GeneralSecurityException {
501+ /** Encrypts the given bytes using a sessionKey using Tink Aead. */
502+ private byte [] encryptRestrictions (byte [] restriction , String sessionKey )
503+ throws GeneralSecurityException {
521504 byte [] rawKey ;
522505
523506 try {
@@ -527,15 +510,14 @@ private byte[] encryptRestrictions(byte[] restriction, String sessionKey) throws
527510 throw new IllegalStateException ("Session key is not Base64 encoded" , e );
528511 }
529512
530- KeysetHandle keysetHandle = TinkProtoKeysetFormat . parseKeyset (
531- rawKey , InsecureSecretKeyAccess .get ());
513+ KeysetHandle keysetHandle =
514+ TinkProtoKeysetFormat . parseKeyset ( rawKey , InsecureSecretKeyAccess .get ());
532515
533- Aead aead =
534- keysetHandle .getPrimitive (RegistryConfiguration .get (), Aead .class );
516+ Aead aead = keysetHandle .getPrimitive (RegistryConfiguration .get (), Aead .class );
535517
536518 // For Client-Side CAB token encryption, empty associated data is expected.
537519 // Tink requires a byte[0] to be passed for this case.
538- return aead .encrypt (restriction , /*associatedData=*/ new byte [0 ]);
520+ return aead .encrypt (restriction , /*associatedData=*/ new byte [0 ]);
539521 }
540522
541523 public static Builder newBuilder () {
0 commit comments