aboutsummaryrefslogtreecommitdiff
path: root/src/org/xbill/DNS/SSHFPRecord.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/xbill/DNS/SSHFPRecord.java')
-rw-r--r--src/org/xbill/DNS/SSHFPRecord.java108
1 files changed, 108 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/SSHFPRecord.java b/src/org/xbill/DNS/SSHFPRecord.java
new file mode 100644
index 0000000..079741e
--- /dev/null
+++ b/src/org/xbill/DNS/SSHFPRecord.java
@@ -0,0 +1,108 @@
+// 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);
+}
+
+}