01: /**
02: * $RCSfile$
03: * $Revision: $
04: * $Date: $
05: *
06: * Copyright (C) 2007 Jive Software. All rights reserved.
07: *
08: * This software is published under the terms of the GNU Public License (GPL),
09: * a copy of which is included in this distribution.
10: */package org.jivesoftware.openfire.sip.tester.security;
11:
12: import java.util.Hashtable;
13:
14: /**
15: * The class is used to cache all realms that a certain call has been authorized
16: * against and all credentials that have been used for each realm. Note that
17: * rfc3261 suggests keeping callId->credentials mapping where as we map
18: * realm->credentials. This is done to avoid asking the user for a password
19: * before each call.
20: *
21: * @author Emil Ivov <emcho@dev.java.net>
22: * @version 1.0
23: */
24:
25: class CredentialsCache {
26: // Contains call->realms mappings
27: private Hashtable authenticatedRealms = new Hashtable();
28:
29: /**
30: * Cache credentials for the specified call and realm
31: *
32: * @param realm the realm that the specify credentials apply to
33: * @param cacheEntry the credentials
34: */
35: void cacheEntry(String realm, CredentialsCacheEntry cacheEntry) {
36: authenticatedRealms.put(realm, cacheEntry);
37: }
38:
39: /**
40: * Returns the credentials corresponding to the specified realm or null if
41: * none could be found.
42: *
43: * @param realm the realm that the credentials apply to
44: * @return the credentials corresponding to the specified realm or null if
45: * none could be found.
46: */
47: CredentialsCacheEntry get(String realm) {
48: return (CredentialsCacheEntry) this .authenticatedRealms
49: .get(realm);
50: }
51:
52: /**
53: * Returns the credentials corresponding to the specified realm or null if
54: * none could be found and removes the entry from the cache.
55: *
56: * @param realm
57: * the realm that the credentials apply to
58: * @return the credentials corresponding to the specified realm or null if
59: * none could be found.
60: */
61: CredentialsCacheEntry remove(String realm) {
62: return (CredentialsCacheEntry) this.authenticatedRealms
63: .remove(realm);
64: }
65:
66: }
|