rdblue commented on code in PR #7770: URL: https://github.com/apache/iceberg/pull/7770#discussion_r1676546177
########## core/src/main/java/org/apache/iceberg/SnapshotParser.java: ########## @@ -147,6 +169,42 @@ static Snapshot fromJson(JsonNode node) { if (node.has(MANIFEST_LIST)) { // the manifest list is stored in a manifest list file String manifestList = JsonUtil.getString(MANIFEST_LIST, node); + + ByteBuffer manifestListKeyMetadata = null; + ByteBuffer wrappedManifestListKeyMetadata = null; + String wrappedKeyEncryptionKey = null; + + // Manifest list can be encrypted + if (node.has(MANIFEST_LIST_KEY_METADATA)) { + // Decode and decrypt manifest list key with metadata key + String manifestListKeyMetadataString = JsonUtil.getString(MANIFEST_LIST_KEY_METADATA, node); + wrappedManifestListKeyMetadata = + ByteBuffer.wrap(Base64.getDecoder().decode(manifestListKeyMetadataString)); + + NativeEncryptionKeyMetadata nativeWrappedKeyMetadata = + EncryptionUtil.parseKeyMetadata(wrappedManifestListKeyMetadata); + ByteBuffer wrappedManifestListKey = nativeWrappedKeyMetadata.encryptionKey(); + Preconditions.checkState( + encryption instanceof StandardEncryptionManager, + "Can't decrypt manifest list key - encryption manager %s is not instance of StandardEncryptionManager", + encryption.getClass()); + StandardEncryptionManager standardEncryptionManager = + (StandardEncryptionManager) encryption; + byte[] keyEncryptionKey = standardEncryptionManager.keyEncryptionKey(); Review Comment: Why does the encryption manager need to track this key? Isn't the key coming from the table metadata? I think it should be stored in `TableMetadata` instead. I believe there is no guarantee that the key doesn't change across versions, right? In that case, it will make a lot more sense if we track the key on a specific `TableMetadata` instance. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org For additional commands, e-mail: issues-h...@iceberg.apache.org