From 0c653db0b2fe9d337a1f69220862d05df2f0daf7 Mon Sep 17 00:00:00 2001 From: yangjie01 Date: Fri, 4 Oct 2024 15:18:16 -0700 Subject: [PATCH] [SPARK-49879][CORE] Move `TransportCipherUtil` to a separate file to eliminate Java compilation warnings ### What changes were proposed in this pull request? Run `build/mvn clean install -pl common/network-common`, we can see the following compilation warnings: ``` [WARNING] [Warn] /Users/yangjie01/SourceCode/git/spark-maven/common/network-common/src/main/java/org/apache/spark/network/crypto/CtrTransportCipher.java:73:11: auxiliary class TransportCipherUtil in /Users/yangjie01/SourceCode/git/spark-maven/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipher.java should not be accessed from outside its own source file [WARNING] [Warn] /Users/yangjie01/SourceCode/git/spark-maven/common/network-common/src/main/java/org/apache/spark/network/crypto/GcmTransportCipher.java:63:15: auxiliary class TransportCipherUtil in /Users/yangjie01/SourceCode/git/spark-maven/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipher.java should not be accessed from outside its own source file ``` So this pr moves `TransportCipherUtil` to a separate file to eliminate the aforementioned Java compilation warnings. ### Why are the changes needed? Fix compilation warnings. ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? - Pass GitHub Actions - locally run `build/mvn clean install -pl common/network-common`, no longer have the aforementioned compilation warnings. ### Was this patch authored or co-authored using generative AI tooling? No Closes #48352 from LuciferYang/Move-TransportCipherUtil. Authored-by: yangjie01 Signed-off-by: Dongjoon Hyun --- .../spark/network/crypto/TransportCipher.java | 20 --------- .../network/crypto/TransportCipherUtil.java | 41 +++++++++++++++++++ 2 files changed, 41 insertions(+), 20 deletions(-) create mode 100644 common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipherUtil.java diff --git a/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipher.java b/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipher.java index 355c552720185..33494aee4444d 100644 --- a/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipher.java +++ b/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipher.java @@ -17,32 +17,12 @@ package org.apache.spark.network.crypto; -import com.google.common.annotations.VisibleForTesting; -import com.google.crypto.tink.subtle.Hex; -import com.google.crypto.tink.subtle.Hkdf; import io.netty.channel.Channel; -import javax.crypto.spec.SecretKeySpec; import java.io.IOException; -import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; interface TransportCipher { String getKeyId() throws GeneralSecurityException; void addToChannel(Channel channel) throws IOException, GeneralSecurityException; } - -class TransportCipherUtil { - /* - * This method is used for testing to verify key derivation. - */ - @VisibleForTesting - static String getKeyId(SecretKeySpec key) throws GeneralSecurityException { - byte[] keyIdBytes = Hkdf.computeHkdf("HmacSha256", - key.getEncoded(), - null, - "keyID".getBytes(StandardCharsets.UTF_8), - 32); - return Hex.encode(keyIdBytes); - } -} diff --git a/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipherUtil.java b/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipherUtil.java new file mode 100644 index 0000000000000..1df2732f240cc --- /dev/null +++ b/common/network-common/src/main/java/org/apache/spark/network/crypto/TransportCipherUtil.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.network.crypto; + +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import javax.crypto.spec.SecretKeySpec; + +import com.google.common.annotations.VisibleForTesting; +import com.google.crypto.tink.subtle.Hex; +import com.google.crypto.tink.subtle.Hkdf; + +class TransportCipherUtil { + /** + * This method is used for testing to verify key derivation. + */ + @VisibleForTesting + static String getKeyId(SecretKeySpec key) throws GeneralSecurityException { + byte[] keyIdBytes = Hkdf.computeHkdf("HmacSha256", + key.getEncoded(), + null, + "keyID".getBytes(StandardCharsets.UTF_8), + 32); + return Hex.encode(keyIdBytes); + } +}