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