History

My first initial commit with all of mine experimental changes.

Dmitry Kabak (userdima committed 13 years ago

Commit d37b88d1 parent 3f5b46618352 files · +2598093 −-8690Browse files

Showing the changes to java/pkg/java/security/IdentityScope.java (1 of 18352 files). Show all

Unified · Split

java/pkg/java/security/IdentityScope.java+257−0
@@ -0,0 +1,257 @@
1/*
2 * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26package java.security;
27
28import java.io.Serializable;
29import java.util.Enumeration;
30import java.util.Properties;
31
32/**
33 * <p>This class represents a scope for identities. It is an Identity
34 * itself, and therefore has a name and can have a scope. It can also
35 * optionally have a public key and associated certificates.
36 *
37 * <p>An IdentityScope can contain Identity objects of all kinds, including
38 * Signers. All types of Identity objects can be retrieved, added, and
39 * removed using the same methods. Note that it is possible, and in fact
40 * expected, that different types of identity scopes will
41 * apply different policies for their various operations on the
42 * various types of Identities.
43 *
44 * <p>There is a one-to-one mapping between keys and identities, and
45 * there can only be one copy of one key per scope. For example, suppose
46 * <b>Acme Software, Inc</b> is a software publisher known to a user.
47 * Suppose it is an Identity, that is, it has a public key, and a set of
48 * associated certificates. It is named in the scope using the name
49 * "Acme Software". No other named Identity in the scope has the same
50 * public key. Of course, none has the same name as well.
51 *
52 * @see Identity
53 * @see Signer
54 * @see Principal
55 * @see Key
56 *
57 * @author Benjamin Renaud
58 *
59 * @deprecated This class is no longer used. Its functionality has been
60 * replaced by <code>java.security.KeyStore</code>, the
61 * <code>java.security.cert</code> package, and
62 * <code>java.security.Principal</code>.
63 */
64@Deprecated
65public abstract
66class IdentityScope extends Identity {
67
68 private static final long serialVersionUID = -2337346281189773310L;
69
70 /* The system's scope */
71 private static IdentityScope scope;
72
73 // initialize the system scope
74 private static void initializeSystemScope() {
75
76 String classname = AccessController.doPrivileged(
77 new PrivilegedAction<String>() {
78 public String run() {
79 return Security.getProperty("system.scope");
80 }
81 });
82
83 if (classname == null) {
84 return;
85
86 } else {
87
88 try {
89 Class.forName(classname);
90 } catch (ClassNotFoundException e) {
91 //Security.error("unable to establish a system scope from " +
92 // classname);
93 e.printStackTrace();
94 }
95 }
96 }
97
98 /**
99 * This constructor is used for serialization only and should not
100 * be used by subclasses.
101 */
102 protected IdentityScope() {
103 this("restoring...");
104 }
105
106 /**
107 * Constructs a new identity scope with the specified name.
108 *
109 * @param name the scope name.
110 */
111 public IdentityScope(String name) {
112 super(name);
113 }
114
115 /**
116 * Constructs a new identity scope with the specified name and scope.
117 *
118 * @param name the scope name.
119 * @param scope the scope for the new identity scope.
120 *
121 * @exception KeyManagementException if there is already an identity
122 * with the same name in the scope.
123 */
124 public IdentityScope(String name, IdentityScope scope)
125 throws KeyManagementException {
126 super(name, scope);
127 }
128
129 /**
130 * Returns the system's identity scope.
131 *
132 * @return the system's identity scope, or {@code null} if none has been
133 * set.
134 *
135 * @see #setSystemScope
136 */
137 public static IdentityScope getSystemScope() {
138 if (scope == null) {
139 initializeSystemScope();
140 }
141 return scope;
142 }
143
144
145 /**
146 * Sets the system's identity scope.
147 *
148 * <p>First, if there is a security manager, its
149 * <code>checkSecurityAccess</code>
150 * method is called with <code>"setSystemScope"</code>
151 * as its argument to see if it's ok to set the identity scope.
152 *
153 * @param scope the scope to set.
154 *
155 * @exception SecurityException if a security manager exists and its
156 * <code>checkSecurityAccess</code> method doesn't allow
157 * setting the identity scope.
158 *
159 * @see #getSystemScope
160 * @see SecurityManager#checkSecurityAccess
161 */
162 protected static void setSystemScope(IdentityScope scope) {
163 check("setSystemScope");
164 IdentityScope.scope = scope;
165 }
166
167 /**
168 * Returns the number of identities within this identity scope.
169 *
170 * @return the number of identities within this identity scope.
171 */
172 public abstract int size();
173
174 /**
175 * Returns the identity in this scope with the specified name (if any).
176 *
177 * @param name the name of the identity to be retrieved.
178 *
179 * @return the identity named <code>name</code>, or null if there are
180 * no identities named <code>name</code> in this scope.
181 */
182 public abstract Identity getIdentity(String name);
183
184 /**
185 * Retrieves the identity whose name is the same as that of the
186 * specified principal. (Note: Identity implements Principal.)
187 *
188 * @param principal the principal corresponding to the identity
189 * to be retrieved.
190 *
191 * @return the identity whose name is the same as that of the
192 * principal, or null if there are no identities of the same name
193 * in this scope.
194 */
195 public Identity getIdentity(Principal principal) {
196 return getIdentity(principal.getName());
197 }
198
199 /**
200 * Retrieves the identity with the specified public key.
201 *
202 * @param key the public key for the identity to be returned.
203 *
204 * @return the identity with the given key, or null if there are
205 * no identities in this scope with that key.
206 */
207 public abstract Identity getIdentity(PublicKey key);
208
209 /**
210 * Adds an identity to this identity scope.
211 *
212 * @param identity the identity to be added.
213 *
214 * @exception KeyManagementException if the identity is not
215 * valid, a name conflict occurs, another identity has the same
216 * public key as the identity being added, or another exception
217 * occurs. */
218 public abstract void addIdentity(Identity identity)
219 throws KeyManagementException;
220
221 /**
222 * Removes an identity from this identity scope.
223 *
224 * @param identity the identity to be removed.
225 *
226 * @exception KeyManagementException if the identity is missing,
227 * or another exception occurs.
228 */
229 public abstract void removeIdentity(Identity identity)
230 throws KeyManagementException;
231
232 /**
233 * Returns an enumeration of all identities in this identity scope.
234 *
235 * @return an enumeration of all identities in this identity scope.
236 */
237 public abstract Enumeration<Identity> identities();
238
239 /**
240 * Returns a string representation of this identity scope, including
241 * its name, its scope name, and the number of identities in this
242 * identity scope.
243 *
244 * @return a string representation of this identity scope.
245 */
246 public String toString() {
247 return super.toString() + "[" + size() + "]";
248 }
249
250 private static void check(String directive) {
251 SecurityManager security = System.getSecurityManager();
252 if (security != null) {
253 security.checkSecurityAccess(directive);
254 }
255 }
256
257}