30 * is more than 30, expunge occurs, and expired entries are forgotten.
31 */
32
33 import java.util.Random;
34 import sun.security.krb5.internal.KerberosTime;
35 import sun.security.krb5.internal.ReplayCache;
36 import sun.security.krb5.internal.rcache.AuthTimeWithHash;
37
38 public class ReplayCacheExpunge {
39 static final String client = "dummy@REALM";
40 static final String server = "server/localhost@REALM";
41 static final Random rand = new Random();
42
43 public static void main(String[] args) throws Exception {
44 // Make sure clockskew is default value
45 System.setProperty("java.security.krb5.conf", "nothing");
46
47 int count = Integer.parseInt(args[0]);
48 ReplayCache cache = ReplayCache.getInstance("dfl:./");
49 AuthTimeWithHash a1 =
50 new AuthTimeWithHash(client, server, time(-400), 0, hash("1"));
51 AuthTimeWithHash a2 =
52 new AuthTimeWithHash(client, server, time(0), 0, hash("4"));
53 KerberosTime now = new KerberosTime(time(0)*1000L);
54 KerberosTime then = new KerberosTime(time(-300)*1000L);
55
56 // Once upon a time, we added a lot of events
57 for (int i=0; i<count; i++) {
58 a1 = new AuthTimeWithHash(client, server, time(-400), 0, hash(""));
59 cache.checkAndStore(then, a1);
60 }
61
62 // Now, we add a new one. If some conditions hold, the old ones
63 // will be expunged.
64 cache.checkAndStore(now, a2);
65
66 // and adding an old one will not trigger any error
67 cache.checkAndStore(now, a1);
68 }
69
70 private static String hash(String s) {
71 char[] data = new char[16];
72 for (int i=0; i<16; i++) {
73 if (i < s.length()) data[i] = s.charAt(i);
74 else data[i] = (char)('0' + rand.nextInt(10));
75 }
76 return new String(data);
77 }
78
|
30 * is more than 30, expunge occurs, and expired entries are forgotten.
31 */
32
33 import java.util.Random;
34 import sun.security.krb5.internal.KerberosTime;
35 import sun.security.krb5.internal.ReplayCache;
36 import sun.security.krb5.internal.rcache.AuthTimeWithHash;
37
38 public class ReplayCacheExpunge {
39 static final String client = "dummy@REALM";
40 static final String server = "server/localhost@REALM";
41 static final Random rand = new Random();
42
43 public static void main(String[] args) throws Exception {
44 // Make sure clockskew is default value
45 System.setProperty("java.security.krb5.conf", "nothing");
46
47 int count = Integer.parseInt(args[0]);
48 ReplayCache cache = ReplayCache.getInstance("dfl:./");
49 AuthTimeWithHash a1 =
50 new AuthTimeWithHash(client, server, time(-400), 0, "HASH", hash("1"));
51 AuthTimeWithHash a2 =
52 new AuthTimeWithHash(client, server, time(0), 0, "HASH", hash("4"));
53 KerberosTime now = new KerberosTime(time(0)*1000L);
54 KerberosTime then = new KerberosTime(time(-300)*1000L);
55
56 // Once upon a time, we added a lot of events
57 for (int i=0; i<count; i++) {
58 a1 = new AuthTimeWithHash(client, server, time(-400), 0, "HASH", hash(""));
59 cache.checkAndStore(then, a1);
60 }
61
62 // Now, we add a new one. If some conditions hold, the old ones
63 // will be expunged.
64 cache.checkAndStore(now, a2);
65
66 // and adding an old one will not trigger any error
67 cache.checkAndStore(now, a1);
68 }
69
70 private static String hash(String s) {
71 char[] data = new char[16];
72 for (int i=0; i<16; i++) {
73 if (i < s.length()) data[i] = s.charAt(i);
74 else data[i] = (char)('0' + rand.nextInt(10));
75 }
76 return new String(data);
77 }
78
|