package io.airlift.airship.coordinator.auth.ssh; import com.google.common.base.Charsets; import com.google.common.base.Throwables; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.io.IOException; import java.math.BigInteger; public class SshKeyReader { private final DataInputStream out; public SshKeyReader(byte[] data) { out = new DataInputStream(new ByteArrayInputStream(data)); } public BigInteger readBigInteger() { byte[] data = readEntry(); if (data.length == 0) { return BigInteger.ZERO; } return new BigInteger(data); } public String readString() { return new String(readEntry(), Charsets.UTF_8); } public byte[] readEntry() { try { int length = out.readInt(); byte[] data = new byte[length]; out.readFully(data); return data; } catch (IOException e) { throw Throwables.propagate(e); } } public boolean isComplete() { try { return out.available() == 0; } catch (IOException e) { throw Throwables.propagate(e); } } }