@@ -132,6 +132,22 @@ public static class TDFReaderConfig {
132132 KeyType sessionKeyType ;
133133 Set <String > kasAllowlist ;
134134 boolean ignoreKasAllowlist ;
135+ private AssertionVerificationMode assertionVerificationMode = AssertionVerificationMode .FAIL_FAST ;
136+ private final AssertionRegistry assertionRegistry = new AssertionRegistry ();
137+
138+ public AssertionVerificationMode getAssertionVerificationMode () {
139+ return assertionVerificationMode ;
140+ }
141+
142+ public void setAssertionVerificationMode (AssertionVerificationMode assertionVerificationMode ) {
143+ this .assertionVerificationMode = assertionVerificationMode ;
144+ }
145+
146+ public AssertionRegistry getAssertionRegistry () {
147+ return assertionRegistry ;
148+ }
149+
150+
135151 }
136152
137153 @ SafeVarargs
@@ -148,7 +164,18 @@ public static TDFReaderConfig newTDFReaderConfig(Consumer<TDFReaderConfig>... op
148164
149165 public static Consumer <TDFReaderConfig > withAssertionVerificationKeys (
150166 AssertionVerificationKeys assertionVerificationKeys ) {
151- return (TDFReaderConfig config ) -> config .assertionVerificationKeys = assertionVerificationKeys ;
167+ return (TDFReaderConfig config ) -> {
168+ config .assertionVerificationKeys = assertionVerificationKeys ;
169+
170+ // ONLY register wildcard validator if assertion verification is enabled
171+ // This maintains backward compatibility with the disableAssertionVerification flag
172+ if (!config .disableAssertionVerification ) {
173+ // Register a wildcard KeyAssertionValidator that handles any schema
174+ // when verification keys are provided
175+ KeyAssertionValidator keyAssertionValidator = new KeyAssertionValidator (assertionVerificationKeys );
176+ config .getAssertionRegistry ().registerValidator (keyAssertionValidator );
177+ }
178+ };
152179 }
153180
154181 public static Consumer <TDFReaderConfig > withDisableAssertionVerification (boolean disable ) {
@@ -195,6 +222,7 @@ public static class TDFConfig {
195222 public boolean hexEncodeRootAndSegmentHashes ;
196223 public boolean renderVersionInfoInManifest ;
197224 public boolean systemMetadataAssertion ;
225+ private AssertionRegistry assertionRegistry ;
198226
199227 public TDFConfig () {
200228 this .autoconfigure = true ;
@@ -212,6 +240,11 @@ public TDFConfig() {
212240 this .hexEncodeRootAndSegmentHashes = false ;
213241 this .renderVersionInfoInManifest = true ;
214242 this .systemMetadataAssertion = false ;
243+ this .assertionRegistry = new AssertionRegistry ();
244+ }
245+
246+ public AssertionRegistry getAssertionRegistry () {
247+ return assertionRegistry ;
215248 }
216249 }
217250
@@ -289,7 +322,13 @@ public static Consumer<TDFConfig> withSplitPlan(Autoconfigure.KeySplitStep... p)
289322
290323 public static Consumer <TDFConfig > withAssertionConfig (io .opentdf .platform .sdk .AssertionConfig ... assertionList ) {
291324 return (TDFConfig config ) -> {
325+ // add to assertionConfigList for backward compatibility
292326 Collections .addAll (config .assertionConfigList , assertionList );
327+ // register a binder for each assertionConfig
328+ for (AssertionConfig assertionConfig : assertionList ) {
329+ ConfigBasedAssertionBinder binder = new ConfigBasedAssertionBinder (assertionConfig );
330+ config .getAssertionRegistry ().registerBinder (binder );
331+ }
293332 };
294333 }
295334
0 commit comments