Переглянути джерело

add RsaKeyPair.isValidSshPublicKey

tags/2.0.1
Jonathan Cobb 5 роки тому
джерело
коміт
afa40b2616
2 змінених файлів з 15 додано та 11 видалено
  1. +0
    -11
      src/main/java/org/cobbzilla/util/security/CryptoUtil.java
  2. +15
    -0
      src/main/java/org/cobbzilla/util/security/RsaKeyPair.java

+ 0
- 11
src/main/java/org/cobbzilla/util/security/CryptoUtil.java Переглянути файл

@@ -13,8 +13,6 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.Key;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
import static org.cobbzilla.util.daemon.ZillaRuntime.die;
@@ -30,15 +28,6 @@ public class CryptoUtil {
public static final String RSA_PREFIX = "-----BEGIN RSA PRIVATE KEY-----";
public static final String RSA_SUFFIX = "-----END RSA PRIVATE KEY-----";

private static final MessageDigest MESSAGE_DIGEST;
static {
try {
MESSAGE_DIGEST = MessageDigest.getInstance("SHA-256");
} catch (NoSuchAlgorithmException e) {
throw (RuntimeException) die("error creating SHA-256 MessageDigest: "+e);
}
}

public static byte[] toBytes(InputStream data) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(data, out);


+ 15
- 0
src/main/java/org/cobbzilla/util/security/RsaKeyPair.java Переглянути файл

@@ -4,8 +4,10 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;
import org.cobbzilla.util.io.FileUtil;
import org.cobbzilla.util.io.TempDir;
import org.cobbzilla.util.string.Base64;
import org.cobbzilla.util.system.CommandResult;

import java.io.File;

@@ -13,6 +15,7 @@ import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
import static org.cobbzilla.util.daemon.ZillaRuntime.*;
import static org.cobbzilla.util.io.FileUtil.*;
import static org.cobbzilla.util.string.StringUtil.safeShellArg;
import static org.cobbzilla.util.system.CommandShell.exec;
import static org.cobbzilla.util.system.CommandShell.execScript;

@NoArgsConstructor @Accessors(chain=true) @EqualsAndHashCode(of={"publicKey"}) @Slf4j
@@ -35,6 +38,18 @@ public class RsaKeyPair {
}
}

public static boolean isValidSshPublicKey (String key) {
try {
@Cleanup final TempDir temp = new TempDir();
final File f = FileUtil.toFile(temp+"/key.pub", key);
final CommandResult result = exec("ssh-keygen -l -f " + abs(f));
return result.isZeroExitStatus() && result.getStdout().length() > 0;
} catch (Exception e) {
log.error("isValidSshPublicKey: "+shortError(e));
return false;
}
}

@JsonIgnore @Getter @Setter private String privateKey;
public boolean hasPrivateKey () { return !empty(privateKey); }



Завантаження…
Відмінити
Зберегти