package io.airlift.airship.coordinator.auth.ssh; import java.math.BigInteger; import java.security.interfaces.RSAPublicKey; import java.util.Arrays; public class SshRsaPublicKey implements RSAPublicKey { private final byte[] encoded; private final BigInteger publicExponent; private final BigInteger modulus; public SshRsaPublicKey(byte[] encoded) { this.encoded = encoded; SshKeyReader sshKeyReader = new SshKeyReader(encoded); if (!sshKeyReader.readString().equals("ssh-rsa")) { throw new IllegalArgumentException("Key is not a ssh rsa key"); } publicExponent = sshKeyReader.readBigInteger(); modulus = sshKeyReader.readBigInteger(); if (!sshKeyReader.isComplete()) { throw new IllegalArgumentException("Invalid ssh dsa key"); } } @Override public String getAlgorithm() { return "RSA"; } @Override public String getFormat() { return "ssh-rsa"; } @Override public byte[] getEncoded() { return Arrays.copyOf(encoded, encoded.length); } @Override public BigInteger getModulus() { return modulus; } @Override public BigInteger getPublicExponent() { return publicExponent; } }