Skip to content

Commit 39e9285

Browse files
committed
SHA256 / Base64 fingerprint now used to print certificates on ui
1 parent 1492534 commit 39e9285

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

src/main/java/net/sharksystem/asap/ASAPEncounterManagerImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ public class ASAPEncounterManagerImpl implements ASAPEncounterManager, ASAPEncou
4848
/** remember remote address of peers (they can have more than one): peerID -> remote address */
4949
private Map<CharSequence, Set<CharSequence>> peerRemoteAddresses = new HashMap<>();
5050

51-
public ASAPEncounterManagerImpl(ASAPConnectionHandler asapConnectionHandler, CharSequence peerID) throws SharkException, IOException {
51+
public ASAPEncounterManagerImpl(ASAPConnectionHandler asapConnectionHandler, CharSequence peerID)
52+
throws SharkException, IOException {
5253
this(asapConnectionHandler, peerID, DEFAULT_WAIT_BEFORE_RECONNECT_TIME);
5354
}
5455

src/main/java/net/sharksystem/asap/crypto/ASAPCryptoAlgorithms.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import javax.crypto.spec.SecretKeySpec;
99
import java.io.*;
1010
import java.security.*;
11+
import java.util.Base64;
1112

1213
public class ASAPCryptoAlgorithms {
1314
/**
@@ -250,4 +251,17 @@ public static boolean verify(byte[] signedData, byte[] signatureBytes, String se
250251
throw new ASAPSecurityException("verifying failed: " + ASAPKeyStore.getAsymmetricSigningAlgorithm(), e);
251252
}
252253
}
254+
255+
/**
256+
* Produces a Base 64 fingerprint with SHA256.
257+
* This fingerprint is not necessarily identical to others.
258+
* It an ASAP standard, though.
259+
* @param publicKey
260+
* @return
261+
*/
262+
public static String getFingerprint(PublicKey publicKey) throws NoSuchAlgorithmException {
263+
MessageDigest digest = MessageDigest.getInstance("SHA-256");
264+
byte[] result = digest.digest(publicKey.getEncoded());
265+
return Base64.getEncoder().encodeToString(result);
266+
}
253267
}

src/test/java/net/sharksystem/asap/crypto/CryptoUsage.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.junit.Test;
88

99
import java.io.IOException;
10+
import java.security.NoSuchAlgorithmException;
1011

1112
import static net.sharksystem.utils.testsupport.TestConstants.ALICE_ID;
1213
import static net.sharksystem.utils.testsupport.TestConstants.BOB_ID;
@@ -25,6 +26,12 @@ public void setupASAPKeyStores() throws ASAPSecurityException {
2526
this.bobKeyStorage.addKeyPair(ALICE_ID, aliceKeyStorage.getKeyPair());
2627
}
2728

29+
@Test
30+
public void printFingerprint() throws ASAPSecurityException, NoSuchAlgorithmException {
31+
System.out.println(ASAPCryptoAlgorithms.getFingerprint(aliceKeyStorage.getPublicKey()));
32+
}
33+
34+
2835
@Test
2936
public void signVerifyUsage() throws ASAPSecurityException {
3037
String messageString = "From Alice signed";

0 commit comments

Comments
 (0)