package net.minecraft.network.rcon; import java.net.DatagramPacket; import java.util.Date; import java.util.Random; class RConThreadQueryAuth { /** The creation timestamp for this auth */ private long timestamp; /** A random challenge */ private int randomChallenge; /** A client-provided request ID associated with this query */ private byte[] requestId; /** A unique string of bytes used to verify client auth */ private byte[] challengeValue; /** The request ID stored as a String */ private String requestIdAsString; /** The RConThreadQuery that this is probably an inner class of */ final RConThreadQuery queryThread; public RConThreadQueryAuth(RConThreadQuery par1RConThreadQuery, DatagramPacket par2DatagramPacket) { this.queryThread = par1RConThreadQuery; this.timestamp = (new Date()).getTime(); byte[] var3 = par2DatagramPacket.getData(); this.requestId = new byte[4]; this.requestId[0] = var3[3]; this.requestId[1] = var3[4]; this.requestId[2] = var3[5]; this.requestId[3] = var3[6]; this.requestIdAsString = new String(this.requestId); this.randomChallenge = (new Random()).nextInt(16777216); this.challengeValue = String.format("\t%s%d\u0000", new Object[] {this.requestIdAsString, Integer.valueOf(this.randomChallenge)}).getBytes(); } /** * Returns true if the auth's creation timestamp is less than the given time, otherwise false */ public Boolean hasExpired(long par1) { return Boolean.valueOf(this.timestamp < par1); } /** * Returns the random challenge number assigned to this auth */ public int getRandomChallenge() { return this.randomChallenge; } /** * Returns the auth challenge value */ public byte[] getChallengeValue() { return this.challengeValue; } /** * Returns the request ID provided by the client. */ public byte[] getRequestId() { return this.requestId; } }