// Copyright (c) 2004 Brian Wellington (bwelling@xbill.org)
package org.xbill.DNS;
import java.io.*;
import org.xbill.DNS.utils.*;
/**
* SSH Fingerprint - stores the fingerprint of an SSH host key.
*
* @author Brian Wellington
*/
public class SSHFPRecord extends Record {
private static final long serialVersionUID = -8104701402654687025L;
public static class Algorithm {
private Algorithm() {}
public static final int RSA = 1;
public static final int DSS = 2;
}
public static class Digest {
private Digest() {}
public static final int SHA1 = 1;
}
private int alg;
private int digestType;
private byte [] fingerprint;
SSHFPRecord() {}
Record
getObject() {
return new SSHFPRecord();
}
/**
* Creates an SSHFP Record from the given data.
* @param alg The public key's algorithm.
* @param digestType The public key's digest type.
* @param fingerprint The public key's fingerprint.
*/
public
SSHFPRecord(Name name, int dclass, long ttl, int alg, int digestType,
byte [] fingerprint)
{
super(name, Type.SSHFP, dclass, ttl);
this.alg = checkU8("alg", alg);
this.digestType = checkU8("digestType", digestType);
this.fingerprint = fingerprint;
}
void
rrFromWire(DNSInput in) throws IOException {
alg = in.readU8();
digestType = in.readU8();
fingerprint = in.readByteArray();
}
void
rdataFromString(Tokenizer st, Name origin) throws IOException {
alg = st.getUInt8();
digestType = st.getUInt8();
fingerprint = st.getHex(true);
}
String
rrToString() {
StringBuffer sb = new StringBuffer();
sb.append(alg);
sb.append(" ");
sb.append(digestType);
sb.append(" ");
sb.append(base16.toString(fingerprint));
return sb.toString();
}
/** Returns the public key's algorithm. */
public int
getAlgorithm() {
return alg;
}
/** Returns the public key's digest type. */
public int
getDigestType() {
return digestType;
}
/** Returns the fingerprint */
public byte []
getFingerPrint() {
return fingerprint;
}
void
rrToWire(DNSOutput out, Compression c, boolean canonical) {
out.writeU8(alg);
out.writeU8(digestType);
out.writeByteArray(fingerprint);
}
}