1 /*
   2  * Copyright (c) 2000, 2005, 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 
  26 package sun.security.util;
  27 
  28 /**
  29  * <p> This class represents the <code>ResourceBundle</code>
  30  * for javax.security.auth and sun.security.
  31  *
  32  */
  33 public class Resources extends java.util.ListResourceBundle {
  34 
  35     private static final Object[][] contents = {
  36 
  37         // shared (from jarsigner)
  38         {" ", " "},
  39         {"  ", "  "},
  40         {"      ", "      "},
  41         {", ", ", "},
  42         // shared (from keytool)
  43         {"\n", "\n"},
  44         {"*******************************************",
  45                 "*******************************************"},
  46         {"*******************************************\n\n",
  47                 "*******************************************\n\n"},
  48 
  49         // keytool
  50         {"keytool error: ", "keytool error: "},
  51         {"Illegal option:  ", "Illegal option:  "},
  52         {"Try keytool -help","Try keytool -help"},
  53         {"Command option <flag> needs an argument.", "Command option {0} needs an argument."},
  54         {"Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified <command> value.",
  55                 "Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified {0} value."},
  56         {"-keystore must be NONE if -storetype is {0}",
  57                 "-keystore must be NONE if -storetype is {0}"},
  58         {"Too may retries, program terminated",
  59                  "Too may retries, program terminated"},
  60         {"-storepasswd and -keypasswd commands not supported if -storetype is {0}",
  61                 "-storepasswd and -keypasswd commands not supported if -storetype is {0}"},
  62         {"-keypasswd commands not supported if -storetype is PKCS12",
  63                 "-keypasswd commands not supported if -storetype is PKCS12"},
  64         {"-keypass and -new can not be specified if -storetype is {0}",
  65                 "-keypass and -new can not be specified if -storetype is {0}"},
  66         {"if -protected is specified, then -storepass, -keypass, and -new must not be specified",
  67                 "if -protected is specified, then -storepass, -keypass, and -new must not be specified"},
  68         {"if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified",
  69                 "if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified"},
  70         {"if keystore is not password protected, then -storepass, -keypass, and -new must not be specified",
  71                 "if keystore is not password protected, then -storepass, -keypass, and -new must not be specified"},
  72         {"if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified",
  73                 "if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified"},
  74         {"Validity must be greater than zero",
  75                 "Validity must be greater than zero"},
  76         {"provName not a provider", "{0} not a provider"},
  77         {"Usage error: no command provided", "Usage error: no command provided"},
  78         {"Usage error, <arg> is not a legal command", "Usage error, {0} is not a legal command"},
  79         {"Source keystore file exists, but is empty: ", "Source keystore file exists, but is empty: "},
  80         {"Please specify -srckeystore", "Please specify -srckeystore"},
  81         {"Must not specify both -v and -rfc with 'list' command",
  82                 "Must not specify both -v and -rfc with 'list' command"},
  83         {"Key password must be at least 6 characters",
  84                 "Key password must be at least 6 characters"},
  85         {"New password must be at least 6 characters",
  86                 "New password must be at least 6 characters"},
  87         {"Keystore file exists, but is empty: ",
  88                 "Keystore file exists, but is empty: "},
  89         {"Keystore file does not exist: ",
  90                 "Keystore file does not exist: "},
  91         {"Must specify destination alias", "Must specify destination alias"},
  92         {"Must specify alias", "Must specify alias"},
  93         {"Keystore password must be at least 6 characters",
  94                 "Keystore password must be at least 6 characters"},
  95         {"Enter keystore password:  ", "Enter keystore password:  "},
  96         {"Enter source keystore password:  ", "Enter source keystore password:  "},
  97         {"Enter destination keystore password:  ", "Enter destination keystore password:  "},
  98         {"Keystore password is too short - must be at least 6 characters",
  99          "Keystore password is too short - must be at least 6 characters"},
 100         {"Unknown Entry Type", "Unknown Entry Type"},
 101         {"Too many failures. Alias not changed", "Too many failures. Alias not changed"},
 102         {"Entry for alias <alias> successfully imported.",
 103                  "Entry for alias {0} successfully imported."},
 104         {"Entry for alias <alias> not imported.", "Entry for alias {0} not imported."},
 105         {"Problem importing entry for alias <alias>: <exception>.\nEntry for alias <alias> not imported.",
 106                  "Problem importing entry for alias {0}: {1}.\nEntry for alias {0} not imported."},
 107         {"Import command completed:  <ok> entries successfully imported, <fail> entries failed or cancelled",
 108                  "Import command completed:  {0} entries successfully imported, {1} entries failed or cancelled"},
 109         {"Warning: Overwriting existing alias <alias> in destination keystore",
 110                  "Warning: Overwriting existing alias {0} in destination keystore"},
 111         {"Existing entry alias <alias> exists, overwrite? [no]:  ",
 112                  "Existing entry alias {0} exists, overwrite? [no]:  "},
 113         {"Too many failures - try later", "Too many failures - try later"},
 114         {"Certification request stored in file <filename>",
 115                 "Certification request stored in file <{0}>"},
 116         {"Submit this to your CA", "Submit this to your CA"},
 117         {"if alias not specified, destalias, srckeypass, and destkeypass must not be specified",
 118             "if alias not specified, destalias, srckeypass, and destkeypass must not be specified"},
 119         {"Certificate stored in file <filename>",
 120                 "Certificate stored in file <{0}>"},
 121         {"Certificate reply was installed in keystore",
 122                 "Certificate reply was installed in keystore"},
 123         {"Certificate reply was not installed in keystore",
 124                 "Certificate reply was not installed in keystore"},
 125         {"Certificate was added to keystore",
 126                 "Certificate was added to keystore"},
 127         {"Certificate was not added to keystore",
 128                 "Certificate was not added to keystore"},
 129         {"[Storing ksfname]", "[Storing {0}]"},
 130         {"alias has no public key (certificate)",
 131                 "{0} has no public key (certificate)"},
 132         {"Cannot derive signature algorithm",
 133                 "Cannot derive signature algorithm"},
 134         {"Alias <alias> does not exist",
 135                 "Alias <{0}> does not exist"},
 136         {"Alias <alias> has no certificate",
 137                 "Alias <{0}> has no certificate"},
 138         {"Key pair not generated, alias <alias> already exists",
 139                 "Key pair not generated, alias <{0}> already exists"},
 140         {"Cannot derive signature algorithm",
 141                 "Cannot derive signature algorithm"},
 142         {"Generating keysize bit keyAlgName key pair and self-signed certificate (sigAlgName) with a validity of validality days\n\tfor: x500Name",
 143                 "Generating {0} bit {1} key pair and self-signed certificate ({2}) with a validity of {3} days\n\tfor: {4}"},
 144         {"Enter key password for <alias>", "Enter key password for <{0}>"},
 145         {"\t(RETURN if same as keystore password):  ",
 146                 "\t(RETURN if same as keystore password):  "},
 147         {"Key password is too short - must be at least 6 characters",
 148                 "Key password is too short - must be at least 6 characters"},
 149         {"Too many failures - key not added to keystore",
 150                 "Too many failures - key not added to keystore"},
 151         {"Destination alias <dest> already exists",
 152                 "Destination alias <{0}> already exists"},
 153         {"Password is too short - must be at least 6 characters",
 154                 "Password is too short - must be at least 6 characters"},
 155         {"Too many failures. Key entry not cloned",
 156                 "Too many failures. Key entry not cloned"},
 157         {"key password for <alias>", "key password for <{0}>"},
 158         {"Keystore entry for <id.getName()> already exists",
 159                 "Keystore entry for <{0}> already exists"},
 160         {"Creating keystore entry for <id.getName()> ...",
 161                 "Creating keystore entry for <{0}> ..."},
 162         {"No entries from identity database added",
 163                 "No entries from identity database added"},
 164         {"Alias name: alias", "Alias name: {0}"},
 165         {"Creation date: keyStore.getCreationDate(alias)",
 166                 "Creation date: {0,date}"},
 167         {"alias, keyStore.getCreationDate(alias), ",
 168                 "{0}, {1,date}, "},
 169         {"alias, ", "{0}, "},
 170         {"Entry type: <type>", "Entry type: {0}"},
 171         {"Certificate chain length: ", "Certificate chain length: "},
 172         {"Certificate[(i + 1)]:", "Certificate[{0,number,integer}]:"},
 173         {"Certificate fingerprint (MD5): ", "Certificate fingerprint (MD5): "},
 174         {"Entry type: trustedCertEntry\n", "Entry type: trustedCertEntry\n"},
 175         {"trustedCertEntry,", "trustedCertEntry,"},
 176         {"Keystore type: ", "Keystore type: "},
 177         {"Keystore provider: ", "Keystore provider: "},
 178         {"Your keystore contains keyStore.size() entry",
 179                 "Your keystore contains {0,number,integer} entry"},
 180         {"Your keystore contains keyStore.size() entries",
 181                 "Your keystore contains {0,number,integer} entries"},
 182         {"Failed to parse input", "Failed to parse input"},
 183         {"Empty input", "Empty input"},
 184         {"Not X.509 certificate", "Not X.509 certificate"},
 185         {"Cannot derive signature algorithm",
 186                 "Cannot derive signature algorithm"},
 187         {"alias has no public key", "{0} has no public key"},
 188         {"alias has no X.509 certificate", "{0} has no X.509 certificate"},
 189         {"New certificate (self-signed):", "New certificate (self-signed):"},
 190         {"Reply has no certificates", "Reply has no certificates"},
 191         {"Certificate not imported, alias <alias> already exists",
 192                 "Certificate not imported, alias <{0}> already exists"},
 193         {"Input not an X.509 certificate", "Input not an X.509 certificate"},
 194         {"Certificate already exists in keystore under alias <trustalias>",
 195                 "Certificate already exists in keystore under alias <{0}>"},
 196         {"Do you still want to add it? [no]:  ",
 197                 "Do you still want to add it? [no]:  "},
 198         {"Certificate already exists in system-wide CA keystore under alias <trustalias>",
 199                 "Certificate already exists in system-wide CA keystore under alias <{0}>"},
 200         {"Do you still want to add it to your own keystore? [no]:  ",
 201                 "Do you still want to add it to your own keystore? [no]:  "},
 202         {"Trust this certificate? [no]:  ", "Trust this certificate? [no]:  "},
 203         {"YES", "YES"},
 204         {"New prompt: ", "New {0}: "},
 205         {"Passwords must differ", "Passwords must differ"},
 206         {"Re-enter new prompt: ", "Re-enter new {0}: "},
 207         {"Re-enter new password: ", "Re-enter new password: "},
 208         {"They don't match. Try again", "They don't match. Try again"},
 209         {"Enter prompt alias name:  ", "Enter {0} alias name:  "},
 210         {"Enter new alias name\t(RETURN to cancel import for this entry):  ",
 211                  "Enter new alias name\t(RETURN to cancel import for this entry):  "},
 212         {"Enter alias name:  ", "Enter alias name:  "},
 213         {"\t(RETURN if same as for <otherAlias>)",
 214                 "\t(RETURN if same as for <{0}>)"},
 215         {"*PATTERN* printX509Cert",
 216                 "Owner: {0}\nIssuer: {1}\nSerial number: {2}\nValid from: {3} until: {4}\nCertificate fingerprints:\n\t MD5:  {5}\n\t SHA1: {6}\n\t Signature algorithm name: {7}\n\t Version: {8}"},
 217         {"What is your first and last name?",
 218                 "What is your first and last name?"},
 219         {"What is the name of your organizational unit?",
 220                 "What is the name of your organizational unit?"},
 221         {"What is the name of your organization?",
 222                 "What is the name of your organization?"},
 223         {"What is the name of your City or Locality?",
 224                 "What is the name of your City or Locality?"},
 225         {"What is the name of your State or Province?",
 226                 "What is the name of your State or Province?"},
 227         {"What is the two-letter country code for this unit?",
 228                 "What is the two-letter country code for this unit?"},
 229         {"Is <name> correct?", "Is {0} correct?"},
 230         {"no", "no"},
 231         {"yes", "yes"},
 232         {"y", "y"},
 233         {"  [defaultValue]:  ", "  [{0}]:  "},
 234         {"Alias <alias> has no key",
 235                 "Alias <{0}> has no key"},
 236         {"Alias <alias> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries",
 237                  "Alias <{0}> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries"},
 238 
 239         {"*****************  WARNING WARNING WARNING  *****************",
 240             "*****************  WARNING WARNING WARNING  *****************"},
 241 
 242         // Translators of the following 5 pairs, ATTENTION:
 243         // the next 5 string pairs are meant to be combined into 2 paragraphs,
 244         // 1+3+4 and 2+3+5. make sure your translation also does.
 245         {"* The integrity of the information stored in your keystore  *",
 246             "* The integrity of the information stored in your keystore  *"},
 247         {"* The integrity of the information stored in the srckeystore*",
 248             "* The integrity of the information stored in the srckeystore*"},
 249         {"* has NOT been verified!  In order to verify its integrity, *",
 250             "* has NOT been verified!  In order to verify its integrity, *"},
 251         {"* you must provide your keystore password.                  *",
 252             "* you must provide your keystore password.                  *"},
 253         {"* you must provide the srckeystore password.                *",
 254             "* you must provide the srckeystore password.                *"},
 255 
 256 
 257         {"Certificate reply does not contain public key for <alias>",
 258                 "Certificate reply does not contain public key for <{0}>"},
 259         {"Incomplete certificate chain in reply",
 260                 "Incomplete certificate chain in reply"},
 261         {"Certificate chain in reply does not verify: ",
 262                 "Certificate chain in reply does not verify: "},
 263         {"Top-level certificate in reply:\n",
 264                 "Top-level certificate in reply:\n"},
 265         {"... is not trusted. ", "... is not trusted. "},
 266         {"Install reply anyway? [no]:  ", "Install reply anyway? [no]:  "},
 267         {"NO", "NO"},
 268         {"Public keys in reply and keystore don't match",
 269                 "Public keys in reply and keystore don't match"},
 270         {"Certificate reply and certificate in keystore are identical",
 271                 "Certificate reply and certificate in keystore are identical"},
 272         {"Failed to establish chain from reply",
 273                 "Failed to establish chain from reply"},
 274         {"n", "n"},
 275         {"Wrong answer, try again", "Wrong answer, try again"},
 276         {"Secret key not generated, alias <alias> already exists",
 277                 "Secret Key not generated, alias <{0}> already exists"},
 278         {"Please provide -keysize for secret key generation",
 279                 "Please provide -keysize for secret key generation"},
 280         {"keytool usage:\n", "keytool usage:\n"},
 281 
 282         {"Extensions: ", "Extensions: "},
 283 
 284         {"-certreq     [-v] [-protected]",
 285                 "-certreq     [-v] [-protected]"},
 286         {"\t     [-alias <alias>] [-sigalg <sigalg>]",
 287                 "\t     [-alias <alias>] [-sigalg <sigalg>]"},
 288         {"\t     [-file <csr_file>] [-keypass <keypass>]",
 289                 "\t     [-file <csr_file>] [-keypass <keypass>]"},
 290         {"\t     [-keystore <keystore>] [-storepass <storepass>]",
 291                 "\t     [-keystore <keystore>] [-storepass <storepass>]"},
 292         {"\t     [-storetype <storetype>] [-providername <name>]",
 293                 "\t     [-storetype <storetype>] [-providername <name>]"},
 294         {"\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ...",
 295                 "\t     [-providerclass <provider_class_name> [-providerarg <arg>]] ..."},
 296         {"\t     [-providerpath <pathlist>]",
 297                 "\t     [-providerpath <pathlist>]"},
 298         {"-delete      [-v] [-protected] -alias <alias>",
 299                 "-delete      [-v] [-protected] -alias <alias>"},
 300         /** rest is same as -certreq starting from -keystore **/
 301 
 302         //{"-export      [-v] [-rfc] [-protected]",
 303         //       "-export      [-v] [-rfc] [-protected]"},
 304         {"-exportcert  [-v] [-rfc] [-protected]",
 305                 "-exportcert  [-v] [-rfc] [-protected]"},
 306         {"\t     [-alias <alias>] [-file <cert_file>]",
 307                 "\t     [-alias <alias>] [-file <cert_file>]"},
 308         /** rest is same as -certreq starting from -keystore **/
 309 
 310         //{"-genkey      [-v] [-protected]",
 311         //        "-genkey      [-v] [-protected]"},
 312         {"-genkeypair  [-v] [-protected]",
 313                 "-genkeypair  [-v] [-protected]"},
 314         {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
 315         {"\t     [-keyalg <keyalg>] [-keysize <keysize>]",
 316                 "\t     [-keyalg <keyalg>] [-keysize <keysize>]"},
 317         {"\t     [-sigalg <sigalg>] [-dname <dname>]",
 318                 "\t     [-sigalg <sigalg>] [-dname <dname>]"},
 319         {"\t     [-validity <valDays>] [-keypass <keypass>]",
 320                 "\t     [-validity <valDays>] [-keypass <keypass>]"},
 321         /** rest is same as -certreq starting from -keystore **/
 322 
 323         {"-genseckey   [-v] [-protected]",
 324                 "-genseckey   [-v] [-protected]"},
 325         /** rest is same as -certreq starting from -keystore **/
 326 
 327         {"-help", "-help"},
 328         //{"-identitydb  [-v] [-protected]",
 329         //      "-identitydb  [-v] [-protected]"},
 330         //{"\t     [-file <idb_file>]", "\t     [-file <idb_file>]"},
 331         /** rest is same as -certreq starting from -keystore **/
 332 
 333         //{"-import      [-v] [-noprompt] [-trustcacerts] [-protected]",
 334         //       "-import      [-v] [-noprompt] [-trustcacerts] [-protected]"},
 335         {"-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]",
 336                 "-importcert  [-v] [-noprompt] [-trustcacerts] [-protected]"},
 337         {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
 338         {"\t     [-alias <alias>] [-keypass <keypass>]",
 339             "\t     [-alias <alias>] [-keypass <keypass>]"},
 340         {"\t     [-file <cert_file>] [-keypass <keypass>]",
 341                 "\t     [-file <cert_file>] [-keypass <keypass>]"},
 342         /** rest is same as -certreq starting from -keystore **/
 343 
 344         {"-importkeystore [-v] ",
 345                 "-importkeystore [-v] "},
 346         {"\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]",
 347                 "\t     [-srckeystore <srckeystore>] [-destkeystore <destkeystore>]"},
 348         {"\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]",
 349                 "\t     [-srcstoretype <srcstoretype>] [-deststoretype <deststoretype>]"},
 350         {"\t     [-srcprotected] [-destprotected]",
 351                 "\t     [-srcprotected] [-destprotected]"},
 352         {"\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]",
 353                 "\t     [-srcstorepass <srcstorepass>] [-deststorepass <deststorepass>]"},
 354         {"\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]",  // line too long, split to 2
 355                  "\t     [-srcprovidername <srcprovidername>]\n\t     [-destprovidername <destprovidername>]"},
 356         {"\t     [-srcalias <srcalias> [-destalias <destalias>]",
 357                 "\t     [-srcalias <srcalias> [-destalias <destalias>]"},
 358         {"\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]",
 359                 "\t       [-srckeypass <srckeypass>] [-destkeypass <destkeypass>]]"},
 360         {"\t     [-noprompt]", "\t     [-noprompt]"},
 361         /** rest is same as -certreq starting from -keystore **/
 362 
 363         {"-changealias [-v] [-protected] -alias <alias> -destalias <destalias>",
 364                 "-changealias [-v] [-protected] -alias <alias> -destalias <destalias>"},
 365         {"\t     [-keypass <keypass>]", "\t     [-keypass <keypass>]"},
 366 
 367         //{"-keyclone    [-v] [-protected]",
 368         //      "-keyclone    [-v] [-protected]"},
 369         //{"\t     [-alias <alias>] -dest <dest_alias>",
 370         //      "\t     [-alias <alias>] -dest <dest_alias>"},
 371         //{"\t     [-keypass <keypass>] [-new <new_keypass>]",
 372         //      "\t     [-keypass <keypass>] [-new <new_keypass>]"},
 373         /** rest is same as -certreq starting from -keystore **/
 374 
 375         {"-keypasswd   [-v] [-alias <alias>]",
 376                 "-keypasswd   [-v] [-alias <alias>]"},
 377         {"\t     [-keypass <old_keypass>] [-new <new_keypass>]",
 378                 "\t     [-keypass <old_keypass>] [-new <new_keypass>]"},
 379         /** rest is same as -certreq starting from -keystore **/
 380 
 381         {"-list        [-v | -rfc] [-protected]",
 382                 "-list        [-v | -rfc] [-protected]"},
 383         {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
 384         /** rest is same as -certreq starting from -keystore **/
 385 
 386         {"-printcert   [-v] [-file <cert_file>]",
 387                 "-printcert   [-v] [-file <cert_file>]"},
 388 
 389         //{"-selfcert    [-v] [-protected]",
 390         //      "-selfcert    [-v] [-protected]"},
 391         {"\t     [-alias <alias>]", "\t     [-alias <alias>]"},
 392         //{"\t     [-dname <dname>] [-validity <valDays>]",
 393         //      "\t     [-dname <dname>] [-validity <valDays>]"},
 394         //{"\t     [-keypass <keypass>] [-sigalg <sigalg>]",
 395         //      "\t     [-keypass <keypass>] [-sigalg <sigalg>]"},
 396         /** rest is same as -certreq starting from -keystore **/
 397 
 398         {"-storepasswd [-v] [-new <new_storepass>]",
 399                 "-storepasswd [-v] [-new <new_storepass>]"},
 400         /** rest is same as -certreq starting from -keystore **/
 401 
 402         // policytool
 403         {"Warning: A public key for alias 'signers[i]' does not exist.  Make sure a KeyStore is properly configured.",
 404                 "Warning: A public key for alias {0} does not exist.  Make sure a KeyStore is properly configured."},
 405         {"Warning: Class not found: class", "Warning: Class not found: {0}"},
 406         {"Warning: Invalid argument(s) for constructor: arg",
 407                 "Warning: Invalid argument(s) for constructor: {0}"},
 408         {"Illegal Principal Type: type", "Illegal Principal Type: {0}"},
 409         {"Illegal option: option", "Illegal option: {0}"},
 410         {"Usage: policytool [options]", "Usage: policytool [options]"},
 411         {"  [-file <file>]    policy file location",
 412                 "  [-file <file>]    policy file location"},
 413         {"New", "New"},
 414         {"Open", "Open"},
 415         {"Save", "Save"},
 416         {"Save As", "Save As"},
 417         {"View Warning Log", "View Warning Log"},
 418         {"Exit", "Exit"},
 419         {"Add Policy Entry", "Add Policy Entry"},
 420         {"Edit Policy Entry", "Edit Policy Entry"},
 421         {"Remove Policy Entry", "Remove Policy Entry"},
 422         {"Edit", "Edit"},
 423         {"Retain", "Retain"},
 424 
 425         {"Warning: File name may include escaped backslash characters. " +
 426                         "It is not necessary to escape backslash characters " +
 427                         "(the tool escapes characters as necessary when writing " +
 428                         "the policy contents to the persistent store).\n\n" +
 429                         "Click on Retain to retain the entered name, or click on " +
 430                         "Edit to edit the name.",
 431             "Warning: File name may include escaped backslash characters. " +
 432                         "It is not necessary to escape backslash characters " +
 433                         "(the tool escapes characters as necessary when writing " +
 434                         "the policy contents to the persistent store).\n\n" +
 435                         "Click on Retain to retain the entered name, or click on " +
 436                         "Edit to edit the name."},
 437 
 438         {"Add Public Key Alias", "Add Public Key Alias"},
 439         {"Remove Public Key Alias", "Remove Public Key Alias"},
 440         {"File", "File"},
 441         {"KeyStore", "KeyStore"},
 442         {"Policy File:", "Policy File:"},
 443         {"Could not open policy file: policyFile: e.toString()",
 444                 "Could not open policy file: {0}: {1}"},
 445         {"Policy Tool", "Policy Tool"},
 446         {"Errors have occurred while opening the policy configuration.  View the Warning Log for more information.",
 447                 "Errors have occurred while opening the policy configuration.  View the Warning Log for more information."},
 448         {"Error", "Error"},
 449         {"OK", "OK"},
 450         {"Status", "Status"},
 451         {"Warning", "Warning"},
 452         {"Permission:                                                       ",
 453                 "Permission:                                                       "},
 454         {"Principal Type:", "Principal Type:"},
 455         {"Principal Name:", "Principal Name:"},
 456         {"Target Name:                                                    ",
 457                 "Target Name:                                                    "},
 458         {"Actions:                                                             ",
 459                 "Actions:                                                             "},
 460         {"OK to overwrite existing file filename?",
 461                 "OK to overwrite existing file {0}?"},
 462         {"Cancel", "Cancel"},
 463         {"CodeBase:", "CodeBase:"},
 464         {"SignedBy:", "SignedBy:"},
 465         {"Add Principal", "Add Principal"},
 466         {"Edit Principal", "Edit Principal"},
 467         {"Remove Principal", "Remove Principal"},
 468         {"Principals:", "Principals:"},
 469         {"  Add Permission", "  Add Permission"},
 470         {"  Edit Permission", "  Edit Permission"},
 471         {"Remove Permission", "Remove Permission"},
 472         {"Done", "Done"},
 473         {"KeyStore URL:", "KeyStore URL:"},
 474         {"KeyStore Type:", "KeyStore Type:"},
 475         {"KeyStore Provider:", "KeyStore Provider:"},
 476         {"KeyStore Password URL:", "KeyStore Password URL:"},
 477         {"Principals", "Principals"},
 478         {"  Edit Principal:", "  Edit Principal:"},
 479         {"  Add New Principal:", "  Add New Principal:"},
 480         {"Permissions", "Permissions"},
 481         {"  Edit Permission:", "  Edit Permission:"},
 482         {"  Add New Permission:", "  Add New Permission:"},
 483         {"Signed By:", "Signed By:"},
 484         {"Cannot Specify Principal with a Wildcard Class without a Wildcard Name",
 485             "Cannot Specify Principal with a Wildcard Class without a Wildcard Name"},
 486         {"Cannot Specify Principal without a Name",
 487             "Cannot Specify Principal without a Name"},
 488         {"Permission and Target Name must have a value",
 489                 "Permission and Target Name must have a value"},
 490         {"Remove this Policy Entry?", "Remove this Policy Entry?"},
 491         {"Overwrite File", "Overwrite File"},
 492         {"Policy successfully written to filename",
 493                 "Policy successfully written to {0}"},
 494         {"null filename", "null filename"},
 495         {"Save changes?", "Save changes?"},
 496         {"Yes", "Yes"},
 497         {"No", "No"},
 498         {"Policy Entry", "Policy Entry"},
 499         {"Save Changes", "Save Changes"},
 500         {"No Policy Entry selected", "No Policy Entry selected"},
 501         {"Unable to open KeyStore: ex.toString()",
 502                 "Unable to open KeyStore: {0}"},
 503         {"No principal selected", "No principal selected"},
 504         {"No permission selected", "No permission selected"},
 505         {"name", "name"},
 506         {"configuration type", "configuration type"},
 507         {"environment variable name", "environment variable name"},
 508         {"library name", "library name"},
 509         {"package name", "package name"},
 510         {"policy type", "policy type"},
 511         {"property name", "property name"},
 512         {"provider name", "provider name"},
 513         {"Principal List", "Principal List"},
 514         {"Permission List", "Permission List"},
 515         {"Code Base", "Code Base"},
 516         {"KeyStore U R L:", "KeyStore U R L:"},
 517         {"KeyStore Password U R L:", "KeyStore Password U R L:"},
 518 
 519 
 520         // javax.security.auth.PrivateCredentialPermission
 521         {"invalid null input(s)", "invalid null input(s)"},
 522         {"actions can only be 'read'", "actions can only be 'read'"},
 523         {"permission name [name] syntax invalid: ",
 524                 "permission name [{0}] syntax invalid: "},
 525         {"Credential Class not followed by a Principal Class and Name",
 526                 "Credential Class not followed by a Principal Class and Name"},
 527         {"Principal Class not followed by a Principal Name",
 528                 "Principal Class not followed by a Principal Name"},
 529         {"Principal Name must be surrounded by quotes",
 530                 "Principal Name must be surrounded by quotes"},
 531         {"Principal Name missing end quote",
 532                 "Principal Name missing end quote"},
 533         {"PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value",
 534                 "PrivateCredentialPermission Principal Class can not be a wildcard (*) value if Principal Name is not a wildcard (*) value"},
 535         {"CredOwner:\n\tPrincipal Class = class\n\tPrincipal Name = name",
 536                 "CredOwner:\n\tPrincipal Class = {0}\n\tPrincipal Name = {1}"},
 537 
 538         // javax.security.auth.x500
 539         {"provided null name", "provided null name"},
 540         {"provided null keyword map", "provided null keyword map"},
 541         {"provided null OID map", "provided null OID map"},
 542 
 543         // javax.security.auth.Subject
 544         {"invalid null AccessControlContext provided",
 545                 "invalid null AccessControlContext provided"},
 546         {"invalid null action provided", "invalid null action provided"},
 547         {"invalid null Class provided", "invalid null Class provided"},
 548         {"Subject:\n", "Subject:\n"},
 549         {"\tPrincipal: ", "\tPrincipal: "},
 550         {"\tPublic Credential: ", "\tPublic Credential: "},
 551         {"\tPrivate Credentials inaccessible\n",
 552                 "\tPrivate Credentials inaccessible\n"},
 553         {"\tPrivate Credential: ", "\tPrivate Credential: "},
 554         {"\tPrivate Credential inaccessible\n",
 555                 "\tPrivate Credential inaccessible\n"},
 556         {"Subject is read-only", "Subject is read-only"},
 557         {"attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set",
 558                 "attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set"},
 559         {"attempting to add an object which is not an instance of class",
 560                 "attempting to add an object which is not an instance of {0}"},
 561 
 562         // javax.security.auth.login.AppConfigurationEntry
 563         {"LoginModuleControlFlag: ", "LoginModuleControlFlag: "},
 564 
 565         // javax.security.auth.login.LoginContext
 566         {"Invalid null input: name", "Invalid null input: name"},
 567         {"No LoginModules configured for name",
 568          "No LoginModules configured for {0}"},
 569         {"invalid null Subject provided", "invalid null Subject provided"},
 570         {"invalid null CallbackHandler provided",
 571                 "invalid null CallbackHandler provided"},
 572         {"null subject - logout called before login",
 573                 "null subject - logout called before login"},
 574         {"unable to instantiate LoginModule, module, because it does not provide a no-argument constructor",
 575                 "unable to instantiate LoginModule, {0}, because it does not provide a no-argument constructor"},
 576         {"unable to instantiate LoginModule",
 577                 "unable to instantiate LoginModule"},
 578         {"unable to instantiate LoginModule: ",
 579                 "unable to instantiate LoginModule: "},
 580         {"unable to find LoginModule class: ",
 581                 "unable to find LoginModule class: "},
 582         {"unable to access LoginModule: ",
 583                 "unable to access LoginModule: "},
 584         {"Login Failure: all modules ignored",
 585                 "Login Failure: all modules ignored"},
 586 
 587         // sun.security.provider.PolicyFile
 588 
 589         {"java.security.policy: error parsing policy:\n\tmessage",
 590                 "java.security.policy: error parsing {0}:\n\t{1}"},
 591         {"java.security.policy: error adding Permission, perm:\n\tmessage",
 592                 "java.security.policy: error adding Permission, {0}:\n\t{1}"},
 593         {"java.security.policy: error adding Entry:\n\tmessage",
 594                 "java.security.policy: error adding Entry:\n\t{0}"},
 595         {"alias name not provided (pe.name)", "alias name not provided ({0})"},
 596         {"unable to perform substitution on alias, suffix",
 597                 "unable to perform substitution on alias, {0}"},
 598         {"substitution value, prefix, unsupported",
 599                 "substitution value, {0}, unsupported"},
 600         {"(", "("},
 601         {")", ")"},
 602         {"type can't be null","type can't be null"},
 603 
 604         // sun.security.provider.PolicyParser
 605         {"keystorePasswordURL can not be specified without also specifying keystore",
 606                 "keystorePasswordURL can not be specified without also specifying keystore"},
 607         {"expected keystore type", "expected keystore type"},
 608         {"expected keystore provider", "expected keystore provider"},
 609         {"multiple Codebase expressions",
 610                 "multiple Codebase expressions"},
 611         {"multiple SignedBy expressions","multiple SignedBy expressions"},
 612         {"SignedBy has empty alias","SignedBy has empty alias"},
 613         {"can not specify Principal with a wildcard class without a wildcard name",
 614                 "can not specify Principal with a wildcard class without a wildcard name"},
 615         {"expected codeBase or SignedBy or Principal",
 616                 "expected codeBase or SignedBy or Principal"},
 617         {"expected permission entry", "expected permission entry"},
 618         {"number ", "number "},
 619         {"expected [expect], read [end of file]",
 620                 "expected [{0}], read [end of file]"},
 621         {"expected [;], read [end of file]",
 622                 "expected [;], read [end of file]"},
 623         {"line number: msg", "line {0}: {1}"},
 624         {"line number: expected [expect], found [actual]",
 625                 "line {0}: expected [{1}], found [{2}]"},
 626         {"null principalClass or principalName",
 627                 "null principalClass or principalName"},
 628 
 629         // sun.security.pkcs11.SunPKCS11
 630         {"PKCS11 Token [providerName] Password: ",
 631                 "PKCS11 Token [{0}] Password: "},
 632 
 633         /* --- DEPRECATED --- */
 634         // javax.security.auth.Policy
 635         {"unable to instantiate Subject-based policy",
 636                 "unable to instantiate Subject-based policy"}
 637     };
 638 
 639 
 640     /**
 641      * Returns the contents of this <code>ResourceBundle</code>.
 642      *
 643      * <p>
 644      *
 645      * @return the contents of this <code>ResourceBundle</code>.
 646      */
 647     public Object[][] getContents() {
 648         return contents;
 649     }
 650 }