OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [security/] [Identity.java] - Blame information for rev 771

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* Identity.java --- Identity Class
2
   Copyright (C) 1999, 2003, Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
package java.security;
39
 
40
import java.io.Serializable;
41
import java.util.Vector;
42
 
43
/**
44
 * The <code>Identity</code> class is used to represent people and companies
45
 * that can be authenticated using public key encryption. The identities can
46
 * also be abstract objects such as smart cards.
47
 *
48
 * <p><code>Identity</code> objects store a name and public key for each
49
 * identity. The names cannot be changed and the identities can be scoped. Each
50
 * identity (name and public key) within a scope are unique to that scope.</p>
51
 *
52
 * <p>Each identity has a set of ceritificates which all specify the same
53
 * public key, but not necessarily the same name.</p>
54
 *
55
 * <p>The <code>Identity</code> class can be subclassed to allow additional
56
 * information to be attached to it.</p>
57
 *
58
 * @author Mark Benvenuto
59
 * @see IdentityScope
60
 * @see Signer
61
 * @see Principal
62
 * @deprecated Replaced by <code>java.security.KeyStore</code>, the
63
 * <code>java.security.cert</code> package, and
64
 * <code>java.security.Principal</code>.
65
 */
66
public abstract class Identity implements Principal, Serializable
67
{
68
  private static final long serialVersionUID = 3609922007826600659L;
69
 
70
  private String name;
71
  private IdentityScope scope;
72
  private PublicKey publicKey;
73
  private String info;
74
  private Vector certificates;
75
 
76
  /** Constructor for serialization only. */
77
  protected Identity()
78
  {
79
  }
80
 
81
  /**
82
   * Constructs a new instance of <code>Identity</code> with the specified
83
   * name and scope.
84
   *
85
   * @param name
86
   *          the name to use.
87
   * @param scope
88
   *          the scope to use.
89
   * @throws KeyManagementException
90
   *           if the identity is already present.
91
   */
92
  public Identity(String name, IdentityScope scope)
93
    throws KeyManagementException
94
  {
95
    this.name = name;
96
    this.scope = scope;
97
  }
98
 
99
  /**
100
   * Constructs a new instance of <code>Identity</code> with the specified
101
   * name and no scope.
102
   *
103
   * @param name
104
   *          the name to use.
105
   */
106
  public Identity(String name)
107
  {
108
    this.name = name;
109
    this.scope = null;
110
  }
111
 
112
  /** @return the name of this identity. */
113
  public final String getName()
114
  {
115
    return name;
116
  }
117
 
118
  /** @return the scope of this identity. */
119
  public final IdentityScope getScope()
120
  {
121
    return scope;
122
  }
123
 
124
  /**
125
   * @return the public key of this identity.
126
   * @see #setPublicKey(java.security.PublicKey)
127
   */
128
  public PublicKey getPublicKey()
129
  {
130
    return publicKey;
131
  }
132
 
133
  /**
134
   * Sets the public key for this identity. The old key and all certificates
135
   * are removed.
136
   *
137
   * @param key
138
   *          the public key to use.
139
   * @throws KeyManagementException
140
   *           if this public key is used by another identity in the current
141
   *           scope.
142
   * @throws SecurityException
143
   *           if a {@link SecurityManager} is installed which disallows this
144
   *           operation.
145
   */
146
  public void setPublicKey(PublicKey key) throws KeyManagementException
147
  {
148
    SecurityManager sm = System.getSecurityManager();
149
    if (sm != null)
150
      sm.checkSecurityAccess("setIdentityPublicKey");
151
 
152
    this.publicKey = key;
153
  }
154
 
155
  /**
156
   * Sets the general information string.
157
   *
158
   * @param info
159
   *          the general information string.
160
   * @throws SecurityException
161
   *           if a {@link SecurityManager} is installed which disallows this
162
   *           operation.
163
   */
164
  public void setInfo(String info)
165
  {
166
    SecurityManager sm = System.getSecurityManager();
167
    if (sm != null)
168
      sm.checkSecurityAccess("setIdentityInfo");
169
 
170
    this.info = info;
171
  }
172
 
173
  /**
174
   * @return the general information string of this identity.
175
   * @see #setInfo(String)
176
   */
177
  public String getInfo()
178
  {
179
    return info;
180
  }
181
 
182
  /**
183
   * Adds a certificate to the list of ceritificates for this identity. The
184
   * public key in this certificate must match the existing public key if it
185
   * exists.
186
   *
187
   * @param certificate
188
   *          the certificate to add.
189
   * @throws KeyManagementException
190
   *           if the certificate is invalid, or the public key conflicts.
191
   * @throws SecurityException
192
   *           if a {@link SecurityManager} is installed which disallows this
193
   *           operation.
194
   */
195
  public void addCertificate(Certificate certificate)
196
    throws KeyManagementException
197
  {
198
    SecurityManager sm = System.getSecurityManager();
199
    if (sm != null)
200
      sm.checkSecurityAccess("addIdentityCertificate");
201
 
202
    // Check public key of this certificate against the first one in the vector
203
    if (certificates.size() > 0)
204
      {
205
        if (((Certificate) certificates.firstElement()).getPublicKey() != publicKey)
206
          throw new KeyManagementException("Public key does not match");
207
      }
208
    certificates.addElement(certificate);
209
  }
210
 
211
  /**
212
   * Removes a certificate from the list of ceritificates for this identity.
213
   *
214
   * @param certificate
215
   *          the certificate to remove.
216
   * @throws KeyManagementException
217
   *           if the certificate is invalid.
218
   * @throws SecurityException
219
   *           if a {@link SecurityManager} is installed which disallows this
220
   *           operation.
221
   */
222
  public void removeCertificate(Certificate certificate)
223
    throws KeyManagementException
224
  {
225
    SecurityManager sm = System.getSecurityManager();
226
    if (sm != null)
227
      sm.checkSecurityAccess("removeIdentityCertificate");
228
 
229
    if (certificates.contains(certificate) == false)
230
      throw new KeyManagementException("Certificate not found");
231
 
232
    certificates.removeElement(certificate);
233
  }
234
 
235
  /** @return an array of {@link Certificate}s for this identity. */
236
  public Certificate[] certificates()
237
  {
238
    Certificate[] certs = new Certificate[certificates.size()];
239
    int max = certificates.size();
240
    for (int i = 0; i < max; i++)
241
      certs[i] = (Certificate) certificates.elementAt(i);
242
 
243
    return certs;
244
  }
245
 
246
  /**
247
   * Checks for equality between this Identity and a specified object. It first
248
   * checks if they are the same object, then if the name and scope match and
249
   * returns <code>true</code> if successful. If these tests fail, the
250
   * {@link #identityEquals(Identity)} method is called.
251
   *
252
   * @return <code>true</code> if they are equal, <code>false</code>
253
   *         otherwise.
254
   */
255
  public final boolean equals(Object identity)
256
  {
257
    if (identity instanceof Identity)
258
      {
259
        if (identity == this)
260
          return true;
261
 
262
        if ((((Identity) identity).getName().equals(this.name)) &&
263
            (((Identity) identity).getScope().equals(this.scope)))
264
          return true;
265
 
266
        return identityEquals((Identity) identity);
267
      }
268
    return false;
269
  }
270
 
271
  /**
272
   * Checks for equality between this Identity and a specified object. A
273
   * subclass should override this method. The default behavior is to return
274
   * <code>true</code> if the public key and names match.
275
   *
276
   * @return <code>true</code> if they are equal, <code>false</code>
277
   *         otherwise.
278
   */
279
  protected boolean identityEquals(Identity identity)
280
  {
281
    return ((identity.getName().equals(this.name)) &&
282
            (identity.getPublicKey().equals(this.publicKey)));
283
  }
284
 
285
  /**
286
   * Returns a string representation of this Identity.
287
   *
288
   * @return a string representation of this Identity.
289
   * @throws SecurityException
290
   *           if a {@link SecurityManager} is installed which disallows this
291
   *           operation.
292
   */
293
  public String toString()
294
  {
295
    SecurityManager sm = System.getSecurityManager();
296
    if (sm != null)
297
      sm.checkSecurityAccess("printIdentity");
298
 
299
    /* TODO: Insert proper format here */
300
    return (name + ":@" + scope + " Public Key: " + publicKey);
301
  }
302
 
303
  /**
304
   * Returns a detailed string representation of this Identity.
305
   *
306
   * @param detailed
307
   *          indicates whether or detailed information is desired.
308
   * @return a string representation of this Identity.
309
   * @throws SecurityException
310
   *           if a {@link SecurityManager} is installed which disallows this
311
   *           operation.
312
   */
313
  public String toString(boolean detailed)
314
  {
315
    SecurityManager sm = System.getSecurityManager();
316
    if (sm != null)
317
      sm.checkSecurityAccess("printIdentity");
318
 
319
    if (detailed)
320
      {
321
        /* TODO: Insert proper detailed format here */
322
        return (name + ":@" + scope + " Public Key: " + publicKey);
323
      }
324
    else
325
      {
326
        /* TODO: Insert proper format here */
327
        return (name + ":@" + scope + " Public Key: " + publicKey);
328
      }
329
  }
330
 
331
  /** @return a hashcode of this identity. */
332
  public int hashCode()
333
  {
334
    int ret = name.hashCode();
335
    if (publicKey != null)
336
      ret |= publicKey.hashCode();
337
    if (scope != null)
338
      ret |= scope.hashCode();
339
    if (info != null)
340
      ret |= info.hashCode();
341
    if (certificates != null)
342
      ret |= certificates.hashCode();
343
 
344
    return ret;
345
  }
346
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.