Skip to content

Commit

Permalink
[SPARK-49879][CORE] Move TransportCipherUtil to a separate file to …
Browse files Browse the repository at this point in the history
…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 apache#48352 from LuciferYang/Move-TransportCipherUtil.

Authored-by: yangjie01 <yangjie01@baidu.com>
Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
  • Loading branch information
LuciferYang authored and dongjoon-hyun committed Oct 4, 2024
1 parent fcda935 commit 0c653db
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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);
}
}

0 comments on commit 0c653db

Please sign in to comment.