home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2007 April / PCpro_2007_04.ISO / files / dsl / jNetTool.exe / org / xbill / DNS / SIGBase.class (.txt) < prev    next >
Encoding:
Java Class File  |  2005-06-05  |  5.0 KB  |  151 lines

  1. package org.xbill.DNS;
  2.  
  3. import java.io.IOException;
  4. import java.util.Date;
  5. import org.xbill.DNS.DNSSEC.Algorithm;
  6. import org.xbill.DNS.utils.base64;
  7.  
  8. abstract class SIGBase extends Record {
  9.    protected int covered;
  10.    protected int alg;
  11.    protected int labels;
  12.    protected long origttl;
  13.    protected Date expire;
  14.    protected Date timeSigned;
  15.    protected int footprint;
  16.    protected Name signer;
  17.    protected byte[] signature;
  18.  
  19.    protected SIGBase() {
  20.    }
  21.  
  22.    public SIGBase(Name name, int type, int dclass, long ttl, int covered, int alg, long origttl, Date expire, Date timeSigned, int footprint, Name signer, byte[] signature) {
  23.       super(name, type, dclass, ttl);
  24.       Type.check(covered);
  25.       TTL.check(origttl);
  26.       this.covered = covered;
  27.       this.alg = Record.checkU8("alg", alg);
  28.       this.labels = name.labels();
  29.       this.origttl = origttl;
  30.       this.expire = expire;
  31.       this.timeSigned = timeSigned;
  32.       this.footprint = Record.checkU16("footprint", footprint);
  33.       this.signer = Record.checkName("signer", signer);
  34.       this.signature = signature;
  35.    }
  36.  
  37.    void rrFromWire(DNSInput in) throws IOException {
  38.       this.covered = in.readU16();
  39.       this.alg = in.readU8();
  40.       this.labels = in.readU8();
  41.       this.origttl = in.readU32();
  42.       this.expire = new Date(1000L * in.readU32());
  43.       this.timeSigned = new Date(1000L * in.readU32());
  44.       this.footprint = in.readU16();
  45.       this.signer = new Name(in);
  46.       this.signature = in.readByteArray();
  47.    }
  48.  
  49.    void rdataFromString(Tokenizer st, Name origin) throws IOException {
  50.       String typeString = st.getString();
  51.       this.covered = Type.value(typeString);
  52.       if (this.covered < 0) {
  53.          throw st.exception("Invalid type: " + typeString);
  54.       } else {
  55.          String algString = st.getString();
  56.          this.alg = Algorithm.value(algString);
  57.          if (this.alg < 0) {
  58.             throw st.exception("Invalid algorithm: " + algString);
  59.          } else {
  60.             this.labels = st.getUInt8();
  61.             this.origttl = st.getTTL();
  62.             this.expire = FormattedTime.parse(st.getString());
  63.             this.timeSigned = FormattedTime.parse(st.getString());
  64.             this.footprint = st.getUInt16();
  65.             this.signer = st.getName(origin);
  66.             this.signature = st.getBase64();
  67.          }
  68.       }
  69.    }
  70.  
  71.    String rrToString() {
  72.       StringBuffer sb = new StringBuffer();
  73.       sb.append(Type.string(this.covered));
  74.       sb.append(" ");
  75.       sb.append(this.alg);
  76.       sb.append(" ");
  77.       sb.append(this.labels);
  78.       sb.append(" ");
  79.       sb.append(this.origttl);
  80.       sb.append(" ");
  81.       if (Options.check("multiline")) {
  82.          sb.append("(\n\t");
  83.       }
  84.  
  85.       sb.append(FormattedTime.format(this.expire));
  86.       sb.append(" ");
  87.       sb.append(FormattedTime.format(this.timeSigned));
  88.       sb.append(" ");
  89.       sb.append(this.footprint);
  90.       sb.append(" ");
  91.       sb.append(this.signer);
  92.       if (Options.check("multiline")) {
  93.          sb.append("\n");
  94.          sb.append(base64.formatString(this.signature, 64, "\t", true));
  95.       } else {
  96.          sb.append(" ");
  97.          sb.append(base64.toString(this.signature));
  98.       }
  99.  
  100.       return sb.toString();
  101.    }
  102.  
  103.    public int getTypeCovered() {
  104.       return this.covered;
  105.    }
  106.  
  107.    public int getAlgorithm() {
  108.       return this.alg;
  109.    }
  110.  
  111.    public int getLabels() {
  112.       return this.labels;
  113.    }
  114.  
  115.    public long getOrigTTL() {
  116.       return this.origttl;
  117.    }
  118.  
  119.    public Date getExpire() {
  120.       return this.expire;
  121.    }
  122.  
  123.    public Date getTimeSigned() {
  124.       return this.timeSigned;
  125.    }
  126.  
  127.    public int getFootprint() {
  128.       return this.footprint;
  129.    }
  130.  
  131.    public Name getSigner() {
  132.       return this.signer;
  133.    }
  134.  
  135.    public byte[] getSignature() {
  136.       return this.signature;
  137.    }
  138.  
  139.    void rrToWire(DNSOutput out, Compression c, boolean canonical) {
  140.       out.writeU16(this.covered);
  141.       out.writeU8(this.alg);
  142.       out.writeU8(this.labels);
  143.       out.writeU32(this.origttl);
  144.       out.writeU32(this.expire.getTime() / 1000L);
  145.       out.writeU32(this.timeSigned.getTime() / 1000L);
  146.       out.writeU16(this.footprint);
  147.       this.signer.toWire(out, (Compression)null, canonical);
  148.       out.writeByteArray(this.signature);
  149.    }
  150. }
  151.