diff options
author | Shuyi Chen <shuyichen@google.com> | 2013-05-22 14:51:55 -0700 |
---|---|---|
committer | Shuyi Chen <shuyichen@google.com> | 2013-05-22 17:19:30 -0700 |
commit | d7955ce24d294fb2014c59d11fca184471056f44 (patch) | |
tree | e260500b0b7639127038495d46a0ad6dcbb6d96c /src/org/xbill/DNS/TKEYRecord.java | |
parent | 8f4ce9ea0de51fee918bffe19c434612d6bbb2d7 (diff) | |
download | smack-d7955ce24d294fb2014c59d11fca184471056f44.tar.gz |
Add android smack source.HEADandroid-wear-5.0.0_r1android-sdk-4.4.2_r1.0.1android-sdk-4.4.2_r1android-l-preview_r2android-cts-5.1_r9android-cts-5.1_r8android-cts-5.1_r7android-cts-5.1_r6android-cts-5.1_r5android-cts-5.1_r4android-cts-5.1_r3android-cts-5.1_r28android-cts-5.1_r27android-cts-5.1_r26android-cts-5.1_r25android-cts-5.1_r24android-cts-5.1_r23android-cts-5.1_r22android-cts-5.1_r21android-cts-5.1_r20android-cts-5.1_r2android-cts-5.1_r19android-cts-5.1_r18android-cts-5.1_r17android-cts-5.1_r16android-cts-5.1_r15android-cts-5.1_r14android-cts-5.1_r13android-cts-5.1_r10android-cts-5.1_r1android-cts-5.0_r9android-cts-5.0_r8android-cts-5.0_r7android-cts-5.0_r6android-cts-5.0_r5android-cts-5.0_r4android-cts-5.0_r3android-cts-4.4_r4android-cts-4.4_r1android-5.1.1_r9android-5.1.1_r8android-5.1.1_r7android-5.1.1_r6android-5.1.1_r5android-5.1.1_r4android-5.1.1_r38android-5.1.1_r37android-5.1.1_r36android-5.1.1_r35android-5.1.1_r34android-5.1.1_r33android-5.1.1_r30android-5.1.1_r3android-5.1.1_r29android-5.1.1_r28android-5.1.1_r26android-5.1.1_r25android-5.1.1_r24android-5.1.1_r23android-5.1.1_r22android-5.1.1_r20android-5.1.1_r2android-5.1.1_r19android-5.1.1_r18android-5.1.1_r17android-5.1.1_r16android-5.1.1_r15android-5.1.1_r14android-5.1.1_r13android-5.1.1_r12android-5.1.1_r10android-5.1.1_r1android-5.1.0_r5android-5.1.0_r4android-5.1.0_r3android-5.1.0_r1android-5.0.2_r3android-5.0.2_r1android-5.0.1_r1android-5.0.0_r7android-5.0.0_r6android-5.0.0_r5.1android-5.0.0_r5android-5.0.0_r4android-5.0.0_r3android-5.0.0_r2android-5.0.0_r1android-4.4w_r1android-4.4_r1.2.0.1android-4.4_r1.2android-4.4_r1.1.0.1android-4.4_r1.1android-4.4_r1.0.1android-4.4_r1android-4.4_r0.9android-4.4_r0.8android-4.4_r0.7android-4.4.4_r2.0.1android-4.4.4_r2android-4.4.4_r1.0.1android-4.4.4_r1android-4.4.3_r1.1.0.1android-4.4.3_r1.1android-4.4.3_r1.0.1android-4.4.3_r1android-4.4.2_r2.0.1android-4.4.2_r2android-4.4.2_r1.0.1android-4.4.2_r1android-4.4.1_r1.0.1android-4.4.1_r1android-4.3_r3.1android-4.3_r3android-4.3_r2.3android-4.3_r2.2android-4.3_r2.1android-4.3_r2android-4.3_r1.1android-4.3_r1android-4.3_r0.9.1android-4.3_r0.9android-4.3.1_r1tools_r22.2mastermainlollipop-wear-releaselollipop-releaselollipop-mr1-wfc-releaselollipop-mr1-releaselollipop-mr1-fi-releaselollipop-mr1-devlollipop-mr1-cts-releaselollipop-devlollipop-cts-releasel-previewkitkat-wearkitkat-releasekitkat-mr2.2-releasekitkat-mr2.1-releasekitkat-mr2-releasekitkat-mr1.1-releasekitkat-mr1-releasekitkat-devkitkat-cts-releasekitkat-cts-devjb-mr2.0.0-releasejb-mr2.0-releasejb-mr2-releasejb-mr2-devidea133-weekly-releaseidea133
Change-Id: I49ce97136c17173c4ae3965c694af6e7bc49897d
Diffstat (limited to 'src/org/xbill/DNS/TKEYRecord.java')
-rw-r--r-- | src/org/xbill/DNS/TKEYRecord.java | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/src/org/xbill/DNS/TKEYRecord.java b/src/org/xbill/DNS/TKEYRecord.java new file mode 100644 index 0000000..4dcbb5c --- /dev/null +++ b/src/org/xbill/DNS/TKEYRecord.java @@ -0,0 +1,225 @@ +// 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 static final long serialVersionUID = 8828458121926391756L; + +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() {} + +Record +getObject() { + 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. + */ +public +TKEYRecord(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; +} + +void +rrFromWire(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; +} + +void +rdataFromString(Tokenizer st, Name origin) throws IOException { + throw st.exception("no text format defined for TKEY"); +} + +protected String +modeString() { + switch (mode) { + case SERVERASSIGNED: return "SERVERASSIGNED"; + case DIFFIEHELLMAN: return "DIFFIEHELLMAN"; + case GSSAPI: return "GSSAPI"; + case RESOLVERASSIGNED: return "RESOLVERASSIGNED"; + case DELETE: return "DELETE"; + default: return Integer.toString(mode); + } +} + +/** Converts rdata to a String */ +String +rrToString() { + 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 Name +getAlgorithm() { + return alg; +} + +/** + * Returns the beginning of the validity period of the shared secret or + * keying material + */ +public Date +getTimeInception() { + return timeInception; +} + +/** + * Returns the end of the validity period of the shared secret or + * keying material + */ +public Date +getTimeExpire() { + return timeExpire; +} + +/** Returns the key agreement mode */ +public int +getMode() { + return mode; +} + +/** Returns the extended error */ +public int +getError() { + return error; +} + +/** Returns the shared secret or keying material */ +public byte [] +getKey() { + return key; +} + +/** Returns the other data */ +public byte [] +getOther() { + return other; +} + +void +rrToWire(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); +} + +} |