package com.l7tech.server.policy.assertion.credential;

import com.l7tech.util.Background;
import com.l7tech.util.HexUtils;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;

public class DigestSessions {
   private static final Random a = new SecureRandom();
   private static DigestSessions b;
   private Map c = new HashMap();

   public static DigestSessions getInstance() {
      if (b == null) {
         b = new DigestSessions();
      }

      return b;
   }

   public boolean use(String var1) {
      d var2;
      synchronized (this.c) {
         var2 = (d)this.c.get(var1);
      }

      if (var2 == null) {
         return false;
      }

      long var9 = System.currentTimeMillis();
      synchronized (var2) {
         return var2.b <= var9 ? false : var2.c++ <= var2.d;
      }
   }

   public void invalidate(String var1) {
      synchronized (this.c) {
         this.c.remove(var1);
      }
   }

   public String generate(int var1, int var2) {
      long var3 = System.currentTimeMillis();
      byte[] var5 = new byte[64];
      a.nextBytes(var5);
      String var6 = HexUtils.encodeBase64(var5, true);
      synchronized (this.c) {
         this.c.put(var6, new d(var6, var3 + var1, var2));
         return var6;
      }
   }

   private DigestSessions() {
      Background.scheduleRepeated(new f(this), 300000L, 300000L);
   }
}
