예제 #1
0
  public void test_rdataFromString() throws IOException, TextParseException {
    // basic
    KEYRecord kr = new KEYRecord();
    Tokenizer st = new Tokenizer("NOAUTH|ZONE|FLAG10 EMAIL RSASHA1 AQIDBAUGBwgJ");
    kr.rdataFromString(st, null);
    assertEquals(
        KEYRecord.Flags.NOAUTH | KEYRecord.Flags.FLAG10 | KEYRecord.Flags.ZONE, kr.getFlags());
    assertEquals(KEYRecord.Protocol.EMAIL, kr.getProtocol());
    assertEquals(DNSSEC.Algorithm.RSASHA1, kr.getAlgorithm());
    assertTrue(Arrays.equals(new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9}, kr.getKey()));

    // basic w/o key
    kr = new KEYRecord();
    st = new Tokenizer("NOAUTH|NOKEY|FLAG10 TLS ECC");
    kr.rdataFromString(st, null);
    assertEquals(
        KEYRecord.Flags.NOAUTH | KEYRecord.Flags.FLAG10 | KEYRecord.Flags.NOKEY, kr.getFlags());
    assertEquals(KEYRecord.Protocol.TLS, kr.getProtocol());
    assertEquals(DNSSEC.Algorithm.ECC, kr.getAlgorithm());
    assertNull(kr.getKey());

    // invalid flags
    kr = new KEYRecord();
    st = new Tokenizer("NOAUTH|ZONE|JUNK EMAIL RSASHA1 AQIDBAUGBwgJ");
    try {
      kr.rdataFromString(st, null);
      fail("TextParseException not thrown");
    } catch (TextParseException e) {
    }

    // invalid protocol
    kr = new KEYRecord();
    st = new Tokenizer("NOAUTH|ZONE RSASHA1 ECC AQIDBAUGBwgJ");
    try {
      kr.rdataFromString(st, null);
      fail("TextParseException not thrown");
    } catch (TextParseException e) {
    }

    // invalid algorithm
    kr = new KEYRecord();
    st = new Tokenizer("NOAUTH|ZONE EMAIL ZONE AQIDBAUGBwgJ");
    try {
      kr.rdataFromString(st, null);
      fail("TextParseException not thrown");
    } catch (TextParseException e) {
    }
  }
예제 #2
0
 public void test_ctor_0arg() throws UnknownHostException {
   KEYRecord ar = new KEYRecord();
   assertNull(ar.getName());
   assertEquals(0, ar.getType());
   assertEquals(0, ar.getDClass());
   assertEquals(0, ar.getTTL());
   assertEquals(0, ar.getAlgorithm());
   assertEquals(0, ar.getFlags());
   assertEquals(0, ar.getFootprint());
   assertEquals(0, ar.getProtocol());
   assertNull(ar.getKey());
 }
예제 #3
0
  public void test_ctor_7arg() throws TextParseException {
    Name n = Name.fromString("My.Absolute.Name.");
    Name r = Name.fromString("My.Relative.Name");
    byte[] key = new byte[] {0, 1, 3, 5, 7, 9};

    KEYRecord kr = new KEYRecord(n, DClass.IN, 0x24AC, 0x9832, 0x12, 0x67, key);
    assertEquals(n, kr.getName());
    assertEquals(Type.KEY, kr.getType());
    assertEquals(DClass.IN, kr.getDClass());
    assertEquals(0x24AC, kr.getTTL());
    assertEquals(0x9832, kr.getFlags());
    assertEquals(0x12, kr.getProtocol());
    assertEquals(0x67, kr.getAlgorithm());
    assertTrue(Arrays.equals(key, kr.getKey()));

    // a relative name
    try {
      new KEYRecord(r, DClass.IN, 0x24AC, 0x9832, 0x12, 0x67, key);
      fail("RelativeNameException not thrown");
    } catch (RelativeNameException e) {
    }
  }
예제 #4
0
 /** Converts a KEY record into a PublicKey */
 public static PublicKey parseRecord(KEYRecord r) {
   int alg = r.getAlgorithm();
   byte[] data = r.getKey();
   return parseRecord(alg, data);
 }