📄 tkeyrecord.java
字号:
// Copyright (c) 1999-2004 Brian Wellington (bwelling@xbill.org)package org.xbill.DNS;import java.io.*;import java.util.*;import org.xbill.DNS.utils.*;/** * Transaction Key - used to compute and/or securely transport a shared * secret to be used with TSIG. * @see TSIG * * @author Brian Wellington */public class TKEYRecord extends Record {private Name alg;private Date timeInception;private Date timeExpire;private int mode, error;private byte [] key;private byte [] other;/** The key is assigned by the server (unimplemented) */public static final int SERVERASSIGNED = 1;/** The key is computed using a Diffie-Hellman key exchange */public static final int DIFFIEHELLMAN = 2;/** The key is computed using GSS_API (unimplemented) */public static final int GSSAPI = 3;/** The key is assigned by the resolver (unimplemented) */public static final int RESOLVERASSIGNED = 4;/** The key should be deleted */public static final int DELETE = 5;TKEYRecord() {}RecordgetObject() { return new TKEYRecord();}/** * Creates a TKEY Record from the given data. * @param alg The shared key's algorithm * @param timeInception The beginning of the validity period of the shared * secret or keying material * @param timeExpire The end of the validity period of the shared * secret or keying material * @param mode The mode of key agreement * @param error The extended error field. Should be 0 in queries * @param key The shared secret * @param other The other data field. Currently unused * responses. */publicTKEYRecord(Name name, int dclass, long ttl, Name alg, Date timeInception, Date timeExpire, int mode, int error, byte [] key, byte other[]){ super(name, Type.TKEY, dclass, ttl); this.alg = checkName("alg", alg); this.timeInception = timeInception; this.timeExpire = timeExpire; this.mode = checkU16("mode", mode); this.error = checkU16("error", error); this.key = key; this.other = other;}voidrrFromWire(DNSInput in) throws IOException { alg = new Name(in); timeInception = new Date(1000 * in.readU32()); timeExpire = new Date(1000 * in.readU32()); mode = in.readU16(); error = in.readU16(); int keylen = in.readU16(); if (keylen > 0) key = in.readByteArray(keylen); else key = null; int otherlen = in.readU16(); if (otherlen > 0) other = in.readByteArray(otherlen); else other = null;}voidrdataFromString(Tokenizer st, Name origin) throws IOException { throw st.exception("no text format defined for TKEY");}protected StringmodeString() { switch (mode) { case SERVERASSIGNED: return "SERVERASSIGNED"; case DIFFIEHELLMAN: return "DIFFIEHELLMAN"; case GSSAPI: return "GSSAPRESOLVERASSIGNED"; case RESOLVERASSIGNED: return "RESOLVERASSIGNED"; case DELETE: return "DELETE"; default: return Integer.toString(mode); }}/** Converts rdata to a String */StringrrToString() { StringBuffer sb = new StringBuffer(); sb.append(alg); sb.append(" "); if (Options.check("multiline")) sb.append("(\n\t"); sb.append(FormattedTime.format(timeInception)); sb.append(" "); sb.append(FormattedTime.format(timeExpire)); sb.append(" "); sb.append(modeString()); sb.append(" "); sb.append(Rcode.TSIGstring(error)); if (Options.check("multiline")) { sb.append("\n"); if (key != null) { sb.append(base64.formatString(key, 64, "\t", false)); sb.append("\n"); } if (other != null) sb.append(base64.formatString(other, 64, "\t", false)); sb.append(" )"); } else { sb.append(" "); if (key != null) { sb.append(base64.toString(key)); sb.append(" "); } if (other != null) sb.append(base64.toString(other)); } return sb.toString();}/** Returns the shared key's algorithm */public NamegetAlgorithm() { return alg;}/** * Returns the beginning of the validity period of the shared secret or * keying material */public DategetTimeInception() { return timeInception;}/** * Returns the end of the validity period of the shared secret or * keying material */public DategetTimeExpire() { return timeExpire;}/** Returns the key agreement mode */public intgetMode() { return mode;}/** Returns the extended error */public intgetError() { return error;}/** Returns the shared secret or keying material */public byte []getKey() { return key;}/** Returns the other data */public byte []getOther() { return other;}voidrrToWire(DNSOutput out, Compression c, boolean canonical) { alg.toWire(out, null, canonical); out.writeU32(timeInception.getTime() / 1000); out.writeU32(timeExpire.getTime() / 1000); out.writeU16(mode); out.writeU16(error); if (key != null) { out.writeU16(key.length); out.writeByteArray(key); } else out.writeU16(0); if (other != null) { out.writeU16(other.length); out.writeByteArray(other); } else out.writeU16(0);}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -