in src/main/scala/com/gu/ssm/SSH.scala [15:39]
def createKey(): Either[FailedAttempt, (File, String)] = {
// Write key to file.
val prefix = "security_ssm-scala_temporary-rsa-private-key"
val suffix = ".tmp"
val keyAlgorithm = "RSA"
val keyProvider = "BC"
try {
val privateKeyFile = File.createTempFile(prefix, suffix, new File(System.getProperty("java.io.tmpdir")))
FilePermissions(privateKeyFile, "0600")
val publicKey = KeyMaker.makeKey(privateKeyFile, keyAlgorithm, keyProvider)
Right((privateKeyFile, publicKey))
} catch {
case e:IOException => Left(FailedAttempt(
Failure(s"Unable to create private key file", "Error creating key on disk", UnhandledError, e)
))
case e:NoSuchAlgorithmException => Left(FailedAttempt(
Failure(s"Unable to create key pair with algorithm $keyAlgorithm", s"Error creating key with algorithm $keyAlgorithm", UnhandledError, e)
))
case e:NoSuchProviderException => Left(FailedAttempt(
Failure(s"Unable to create key pair with provider $keyProvider", s"Error creating key with provider $keyProvider", UnhandledError, e)
))
}
}