diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
index 98145dff887cfb35ccc5d7ee9bcf951f4e7a49ea..f0bf1ac0ed7e13134f37b7b87b1e8de5d5d8d9fc 100644
--- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
+++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java
@@ -583,7 +583,51 @@ public class PacketBuilder {
         setTo(packet, charlieIP, charliePort);
         return packet;
     }
-
+    
+    /**
+     * Build a packet as if we are Charlie sending Bob a packet verifying that we will help test Alice.
+     * 
+     * @return ready to send packet, or null if there was a problem
+     */
+    public UDPPacket buildPeerTestToBob(InetAddress bobIP, int bobPort, InetAddress aliceIP, int alicePort, SessionKey aliceIntroKey, long nonce, SessionKey bobCipherKey, SessionKey bobMACKey) {
+        UDPPacket packet = UDPPacket.acquire(_context);
+        byte data[] = packet.getPacket().getData();
+        Arrays.fill(data, 0, data.length, (byte)0x0);
+        int off = UDPPacket.MAC_SIZE + UDPPacket.IV_SIZE;
+        
+        // header
+        data[off] = PEER_TEST_FLAG_BYTE;
+        off++;
+        long now = _context.clock().now() / 1000;
+        DataHelper.toLong(data, off, 4, now);
+        if (_log.shouldLog(Log.DEBUG))
+            _log.debug("Sending peer test " + nonce + " to Bob with time = " + new Date(now*1000));
+        off += 4;
+        
+        // now for the body
+        DataHelper.toLong(data, off, 4, nonce);
+        off += 4;
+        byte ip[] = aliceIP.getAddress();
+        DataHelper.toLong(data, off, 1, ip.length);
+        off++;
+        System.arraycopy(ip, 0, data, off, ip.length);
+        off += ip.length;
+        DataHelper.toLong(data, off, 2, alicePort);
+        off += 2;
+        System.arraycopy(aliceIntroKey.getData(), 0, data, off, SessionKey.KEYSIZE_BYTES);
+        off += SessionKey.KEYSIZE_BYTES;
+        
+        // we can pad here if we want, maybe randomized?
+        
+        // pad up so we're on the encryption boundary
+        if ( (off % 16) != 0)
+            off += 16 - (off % 16);
+        packet.getPacket().setLength(off);
+        authenticate(packet, bobCipherKey, bobMACKey);
+        setTo(packet, bobIP, bobPort);
+        return packet;
+    }
+    
     private void setTo(UDPPacket packet, InetAddress ip, int port) {
         packet.getPacket().setAddress(ip);
         packet.getPacket().setPort(port);