mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-09-01 14:45:08 +00:00
SFTP: Add support for SHA256withRSA signature
This commit is contained in:
@@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2023 Albert Vaca Cintora <albertvaka@gmail.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.kde.kdeconnect.Plugins.SftpPlugin;
|
||||||
|
|
||||||
|
import org.apache.sshd.common.NamedFactory;
|
||||||
|
import org.apache.sshd.common.Signature;
|
||||||
|
import org.apache.sshd.common.signature.AbstractSignature;
|
||||||
|
|
||||||
|
public class SignatureRSASHA256 extends AbstractSignature {
|
||||||
|
|
||||||
|
public static class Factory implements NamedFactory<Signature> {
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return "rsa-sha2-256";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Signature create() {
|
||||||
|
return new SignatureRSASHA256();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SignatureRSASHA256() {
|
||||||
|
super("SHA256withRSA");
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte[] sign() throws Exception {
|
||||||
|
return signature.sign();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean verify(byte[] sig) throws Exception {
|
||||||
|
sig = extractSig(sig);
|
||||||
|
return signature.verify(sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -13,6 +13,9 @@ import android.util.Log;
|
|||||||
import org.apache.sshd.SshServer;
|
import org.apache.sshd.SshServer;
|
||||||
import org.apache.sshd.common.file.nativefs.NativeFileSystemFactory;
|
import org.apache.sshd.common.file.nativefs.NativeFileSystemFactory;
|
||||||
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
|
import org.apache.sshd.common.keyprovider.AbstractKeyPairProvider;
|
||||||
|
import org.apache.sshd.common.signature.SignatureDSA;
|
||||||
|
import org.apache.sshd.common.signature.SignatureECDSA;
|
||||||
|
import org.apache.sshd.common.signature.SignatureRSA;
|
||||||
import org.apache.sshd.common.util.SecurityUtils;
|
import org.apache.sshd.common.util.SecurityUtils;
|
||||||
import org.apache.sshd.server.PasswordAuthenticator;
|
import org.apache.sshd.server.PasswordAuthenticator;
|
||||||
import org.apache.sshd.server.PublickeyAuthenticator;
|
import org.apache.sshd.server.PublickeyAuthenticator;
|
||||||
@@ -20,6 +23,7 @@ import org.apache.sshd.server.command.ScpCommandFactory;
|
|||||||
import org.apache.sshd.server.kex.DHG14;
|
import org.apache.sshd.server.kex.DHG14;
|
||||||
import org.apache.sshd.server.kex.ECDHP256;
|
import org.apache.sshd.server.kex.ECDHP256;
|
||||||
import org.apache.sshd.server.kex.ECDHP384;
|
import org.apache.sshd.server.kex.ECDHP384;
|
||||||
|
import org.apache.sshd.server.kex.ECDHP521;
|
||||||
import org.apache.sshd.server.session.ServerSession;
|
import org.apache.sshd.server.session.ServerSession;
|
||||||
import org.apache.sshd.server.sftp.SftpSubsystem;
|
import org.apache.sshd.server.sftp.SftpSubsystem;
|
||||||
import org.kde.kdeconnect.Device;
|
import org.kde.kdeconnect.Device;
|
||||||
@@ -62,11 +66,21 @@ class SimpleSftpServer {
|
|||||||
|
|
||||||
void initialize(Context context, Device device) throws GeneralSecurityException {
|
void initialize(Context context, Device device) throws GeneralSecurityException {
|
||||||
|
|
||||||
|
sshd.setSignatureFactories(Arrays.asList(
|
||||||
|
new SignatureECDSA.NISTP256Factory(),
|
||||||
|
new SignatureECDSA.NISTP384Factory(),
|
||||||
|
new SignatureECDSA.NISTP521Factory(),
|
||||||
|
new SignatureDSA.Factory(),
|
||||||
|
new SignatureRSASHA256.Factory(),
|
||||||
|
new SignatureRSA.Factory() // Insecure SHA1, left for backwards compatibility
|
||||||
|
));
|
||||||
|
|
||||||
sshd.setKeyExchangeFactories(Arrays.asList(
|
sshd.setKeyExchangeFactories(Arrays.asList(
|
||||||
new ECDHP256.Factory(), // ecdh-sha2-nistp256
|
new ECDHP256.Factory(), // ecdh-sha2-nistp256
|
||||||
new ECDHP384.Factory(), // ecdh-sha2-nistp384
|
new ECDHP384.Factory(), // ecdh-sha2-nistp384
|
||||||
|
new ECDHP521.Factory(), // ecdh-sha2-nistp521
|
||||||
new DHG14_256.Factory(), // diffie-hellman-group14-sha256
|
new DHG14_256.Factory(), // diffie-hellman-group14-sha256
|
||||||
new DHG14.Factory() // diffie-hellman-group14-sha1. Left for backwards-compatibility.
|
new DHG14.Factory() // Insecure diffie-hellman-group14-sha1, left for backwards-compatibility.
|
||||||
));
|
));
|
||||||
|
|
||||||
//Reuse this device keys for the ssh connection as well
|
//Reuse this device keys for the ssh connection as well
|
||||||
|
Reference in New Issue
Block a user