Add support for ECDSA server keys

This commit is contained in:
Cameron Gutman 2023-11-29 22:37:12 -06:00
parent 7d77e1c1f2
commit 5443cc014a

View File

@ -99,9 +99,20 @@ public class PairingManager {
return saltedPin;
}
private static Signature getSha256SignatureInstanceForKey(Key key) throws NoSuchAlgorithmException {
switch (key.getAlgorithm()) {
case "RSA":
return Signature.getInstance("SHA256withRSA");
case "EC":
return Signature.getInstance("SHA256withECDSA");
default:
throw new NoSuchAlgorithmException("Unhandled key algorithm: " + key.getAlgorithm());
}
}
private static boolean verifySignature(byte[] data, byte[] signature, Certificate cert) {
try {
Signature sig = Signature.getInstance("SHA256withRSA");
Signature sig = PairingManager.getSha256SignatureInstanceForKey(cert.getPublicKey());
sig.initVerify(cert.getPublicKey());
sig.update(data);
return sig.verify(signature);
@ -113,7 +124,7 @@ public class PairingManager {
private static byte[] signData(byte[] data, PrivateKey key) {
try {
Signature sig = Signature.getInstance("SHA256withRSA");
Signature sig = PairingManager.getSha256SignatureInstanceForKey(key);
sig.initSign(key);
sig.update(data);
return sig.sign();