1 /*
   2  * Copyright (c) 2000, 2013, 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.tools.keytool;
  27 
  28 /**
  29  * <p> This class represents the <code>ResourceBundle</code>
  30  * for the keytool.
  31  *
  32  */
  33 public class Resources extends java.util.ListResourceBundle {
  34 
  35     private static final Object[][] contents = {
  36         {"NEWLINE", "\n"},
  37         {"STAR",
  38                 "*******************************************"},
  39         {"STARNN",
  40                 "*******************************************\n\n"},
  41 
  42         // keytool: Help part
  43         {".OPTION.", " [OPTION]..."},
  44         {"Options.", "Options:"},
  45         {"Use.keytool.help.for.all.available.commands",
  46                  "Use \"keytool -help\" for all available commands"},
  47         {"Key.and.Certificate.Management.Tool",
  48                  "Key and Certificate Management Tool"},
  49         {"Commands.", "Commands:"},
  50         {"Use.keytool.command.name.help.for.usage.of.command.name",
  51                 "Use \"keytool -command_name -help\" for usage of command_name"},
  52         // keytool: help: commands
  53         {"Generates.a.certificate.request",
  54                 "Generates a certificate request"}, //-certreq
  55         {"Changes.an.entry.s.alias",
  56                 "Changes an entry's alias"}, //-changealias
  57         {"Deletes.an.entry",
  58                 "Deletes an entry"}, //-delete
  59         {"Exports.certificate",
  60                 "Exports certificate"}, //-exportcert
  61         {"Generates.a.key.pair",
  62                 "Generates a key pair"}, //-genkeypair
  63         {"Generates.a.secret.key",
  64                 "Generates a secret key"}, //-genseckey
  65         {"Generates.certificate.from.a.certificate.request",
  66                 "Generates certificate from a certificate request"}, //-gencert
  67         {"Generates.CRL", "Generates CRL"}, //-gencrl
  68         {"Generated.keyAlgName.secret.key",
  69                 "Generated {0} secret key"}, //-genseckey
  70         {"Generated.keysize.bit.keyAlgName.secret.key",
  71                 "Generated {0}-bit {1} secret key"}, //-genseckey
  72         {"Imports.entries.from.a.JDK.1.1.x.style.identity.database",
  73                 "Imports entries from a JDK 1.1.x-style identity database"}, //-identitydb
  74         {"Imports.a.certificate.or.a.certificate.chain",
  75                 "Imports a certificate or a certificate chain"}, //-importcert
  76         {"Imports.a.password",
  77                 "Imports a password"}, //-importpass
  78         {"Imports.one.or.all.entries.from.another.keystore",
  79                 "Imports one or all entries from another keystore"}, //-importkeystore
  80         {"Clones.a.key.entry",
  81                 "Clones a key entry"}, //-keyclone
  82         {"Changes.the.key.password.of.an.entry",
  83                 "Changes the key password of an entry"}, //-keypasswd
  84         {"Lists.entries.in.a.keystore",
  85                 "Lists entries in a keystore"}, //-list
  86         {"Prints.the.content.of.a.certificate",
  87                 "Prints the content of a certificate"}, //-printcert
  88         {"Prints.the.content.of.a.certificate.request",
  89                 "Prints the content of a certificate request"}, //-printcertreq
  90         {"Prints.the.content.of.a.CRL.file",
  91                 "Prints the content of a CRL file"}, //-printcrl
  92         {"Generates.a.self.signed.certificate",
  93                 "Generates a self-signed certificate"}, //-selfcert
  94         {"Changes.the.store.password.of.a.keystore",
  95                 "Changes the store password of a keystore"}, //-storepasswd
  96         // keytool: help: options
  97         {"alias.name.of.the.entry.to.process",
  98                 "alias name of the entry to process"}, //-alias
  99         {"destination.alias",
 100                 "destination alias"}, //-destalias
 101         {"destination.key.password",
 102                 "destination key password"}, //-destkeypass
 103         {"destination.keystore.name",
 104                 "destination keystore name"}, //-destkeystore
 105         {"destination.keystore.password.protected",
 106                 "destination keystore password protected"}, //-destprotected
 107         {"destination.keystore.provider.name",
 108                 "destination keystore provider name"}, //-destprovidername
 109         {"destination.keystore.password",
 110                 "destination keystore password"}, //-deststorepass
 111         {"destination.keystore.type",
 112                 "destination keystore type"}, //-deststoretype
 113         {"distinguished.name",
 114                 "distinguished name"}, //-dname
 115         {"X.509.extension",
 116                 "X.509 extension"}, //-ext
 117         {"output.file.name",
 118                 "output file name"}, //-file and -outfile
 119         {"input.file.name",
 120                 "input file name"}, //-file and -infile
 121         {"key.algorithm.name",
 122                 "key algorithm name"}, //-keyalg
 123         {"key.password",
 124                 "key password"}, //-keypass
 125         {"key.bit.size",
 126                 "key bit size"}, //-keysize
 127         {"keystore.name",
 128                 "keystore name"}, //-keystore
 129         {"new.password",
 130                 "new password"}, //-new
 131         {"do.not.prompt",
 132                 "do not prompt"}, //-noprompt
 133         {"password.through.protected.mechanism",
 134                 "password through protected mechanism"}, //-protected
 135         {"provider.argument",
 136                 "provider argument"}, //-providerarg
 137         {"provider.class.name",
 138                 "provider class name"}, //-providerclass
 139         {"provider.name",
 140                 "provider name"}, //-providername
 141         {"provider.classpath",
 142                 "provider classpath"}, //-providerpath
 143         {"output.in.RFC.style",
 144                 "output in RFC style"}, //-rfc
 145         {"signature.algorithm.name",
 146                 "signature algorithm name"}, //-sigalg
 147         {"source.alias",
 148                 "source alias"}, //-srcalias
 149         {"source.key.password",
 150                 "source key password"}, //-srckeypass
 151         {"source.keystore.name",
 152                 "source keystore name"}, //-srckeystore
 153         {"source.keystore.password.protected",
 154                 "source keystore password protected"}, //-srcprotected
 155         {"source.keystore.provider.name",
 156                 "source keystore provider name"}, //-srcprovidername
 157         {"source.keystore.password",
 158                 "source keystore password"}, //-srcstorepass
 159         {"source.keystore.type",
 160                 "source keystore type"}, //-srcstoretype
 161         {"SSL.server.host.and.port",
 162                 "SSL server host and port"}, //-sslserver
 163         {"signed.jar.file",
 164                 "signed jar file"}, //=jarfile
 165         {"certificate.validity.start.date.time",
 166                 "certificate validity start date/time"}, //-startdate
 167         {"keystore.password",
 168                 "keystore password"}, //-storepass
 169         {"keystore.type",
 170                 "keystore type"}, //-storetype
 171         {"trust.certificates.from.cacerts",
 172                 "trust certificates from cacerts"}, //-trustcacerts
 173         {"verbose.output",
 174                 "verbose output"}, //-v
 175         {"validity.number.of.days",
 176                 "validity number of days"}, //-validity
 177         {"Serial.ID.of.cert.to.revoke",
 178                  "Serial ID of cert to revoke"}, //-id
 179         // keytool: Running part
 180         {"keytool.error.", "keytool error: "},
 181         {"Illegal.option.", "Illegal option:  "},
 182         {"Illegal.value.", "Illegal value: "},
 183         {"Unknown.password.type.", "Unknown password type: "},
 184         {"Cannot.find.environment.variable.",
 185                 "Cannot find environment variable: "},
 186         {"Cannot.find.file.", "Cannot find file: "},
 187         {"Command.option.flag.needs.an.argument.", "Command option {0} needs an argument."},
 188         {"Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.",
 189                 "Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified {0} value."},
 190         {".keystore.must.be.NONE.if.storetype.is.{0}",
 191                 "-keystore must be NONE if -storetype is {0}"},
 192         {"Too.many.retries.program.terminated",
 193                  "Too many retries, program terminated"},
 194         {".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}",
 195                 "-storepasswd and -keypasswd commands not supported if -storetype is {0}"},
 196         {".keypasswd.commands.not.supported.if.storetype.is.PKCS12",
 197                 "-keypasswd commands not supported if -storetype is PKCS12"},
 198         {".keypass.and.new.can.not.be.specified.if.storetype.is.{0}",
 199                 "-keypass and -new can not be specified if -storetype is {0}"},
 200         {"if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified",
 201                 "if -protected is specified, then -storepass, -keypass, and -new must not be specified"},
 202         {"if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified",
 203                 "if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified"},
 204         {"if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified",
 205                 "if keystore is not password protected, then -storepass, -keypass, and -new must not be specified"},
 206         {"if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified",
 207                 "if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified"},
 208         {"Illegal.startdate.value", "Illegal startdate value"},
 209         {"Validity.must.be.greater.than.zero",
 210                 "Validity must be greater than zero"},
 211         {"provName.not.a.provider", "{0} not a provider"},
 212         {"Usage.error.no.command.provided", "Usage error: no command provided"},
 213         {"Source.keystore.file.exists.but.is.empty.", "Source keystore file exists, but is empty: "},
 214         {"Please.specify.srckeystore", "Please specify -srckeystore"},
 215         {"Must.not.specify.both.v.and.rfc.with.list.command",
 216                 "Must not specify both -v and -rfc with 'list' command"},
 217         {"Key.password.must.be.at.least.6.characters",
 218                 "Key password must be at least 6 characters"},
 219         {"New.password.must.be.at.least.6.characters",
 220                 "New password must be at least 6 characters"},
 221         {"Keystore.file.exists.but.is.empty.",
 222                 "Keystore file exists, but is empty: "},
 223         {"Keystore.file.does.not.exist.",
 224                 "Keystore file does not exist: "},
 225         {"Must.specify.destination.alias", "Must specify destination alias"},
 226         {"Must.specify.alias", "Must specify alias"},
 227         {"Keystore.password.must.be.at.least.6.characters",
 228                 "Keystore password must be at least 6 characters"},
 229         {"Enter.the.password.to.be.stored.",
 230                 "Enter the password to be stored:  "},
 231         {"Enter.keystore.password.", "Enter keystore password:  "},
 232         {"Enter.source.keystore.password.", "Enter source keystore password:  "},
 233         {"Enter.destination.keystore.password.", "Enter destination keystore password:  "},
 234         {"Keystore.password.is.too.short.must.be.at.least.6.characters",
 235          "Keystore password is too short - must be at least 6 characters"},
 236         {"Unknown.Entry.Type", "Unknown Entry Type"},
 237         {"Too.many.failures.Alias.not.changed", "Too many failures. Alias not changed"},
 238         {"Entry.for.alias.alias.successfully.imported.",
 239                  "Entry for alias {0} successfully imported."},
 240         {"Entry.for.alias.alias.not.imported.", "Entry for alias {0} not imported."},
 241         {"Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.",
 242                  "Problem importing entry for alias {0}: {1}.\nEntry for alias {0} not imported."},
 243         {"Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled",
 244                  "Import command completed:  {0} entries successfully imported, {1} entries failed or cancelled"},
 245         {"Warning.Overwriting.existing.alias.alias.in.destination.keystore",
 246                  "Warning: Overwriting existing alias {0} in destination keystore"},
 247         {"Existing.entry.alias.alias.exists.overwrite.no.",
 248                  "Existing entry alias {0} exists, overwrite? [no]:  "},
 249         {"Too.many.failures.try.later", "Too many failures - try later"},
 250         {"Certification.request.stored.in.file.filename.",
 251                 "Certification request stored in file <{0}>"},
 252         {"Submit.this.to.your.CA", "Submit this to your CA"},
 253         {"if.alias.not.specified.destalias.and.srckeypass.must.not.be.specified",
 254             "if alias not specified, destalias and srckeypass must not be specified"},
 255         {"The.destination.pkcs12.keystore.has.different.storepass.and.keypass.Please.retry.with.destkeypass.specified.",
 256             "The destination pkcs12 keystore has different storepass and keypass. Please retry with -destkeypass specified."},
 257         {"Certificate.stored.in.file.filename.",
 258                 "Certificate stored in file <{0}>"},
 259         {"Certificate.reply.was.installed.in.keystore",
 260                 "Certificate reply was installed in keystore"},
 261         {"Certificate.reply.was.not.installed.in.keystore",
 262                 "Certificate reply was not installed in keystore"},
 263         {"Certificate.was.added.to.keystore",
 264                 "Certificate was added to keystore"},
 265         {"Certificate.was.not.added.to.keystore",
 266                 "Certificate was not added to keystore"},
 267         {".Storing.ksfname.", "[Storing {0}]"},
 268         {"alias.has.no.public.key.certificate.",
 269                 "{0} has no public key (certificate)"},
 270         {"Cannot.derive.signature.algorithm",
 271                 "Cannot derive signature algorithm"},
 272         {"Alias.alias.does.not.exist",
 273                 "Alias <{0}> does not exist"},
 274         {"Alias.alias.has.no.certificate",
 275                 "Alias <{0}> has no certificate"},
 276         {"Key.pair.not.generated.alias.alias.already.exists",
 277                 "Key pair not generated, alias <{0}> already exists"},
 278         {"Generating.keysize.bit.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.validality.days.for",
 279                 "Generating {0} bit {1} key pair and self-signed certificate ({2}) with a validity of {3} days\n\tfor: {4}"},
 280         {"Enter.key.password.for.alias.", "Enter key password for <{0}>"},
 281         {".RETURN.if.same.as.keystore.password.",
 282                 "\t(RETURN if same as keystore password):  "},
 283         {"Key.password.is.too.short.must.be.at.least.6.characters",
 284                 "Key password is too short - must be at least 6 characters"},
 285         {"Too.many.failures.key.not.added.to.keystore",
 286                 "Too many failures - key not added to keystore"},
 287         {"Destination.alias.dest.already.exists",
 288                 "Destination alias <{0}> already exists"},
 289         {"Password.is.too.short.must.be.at.least.6.characters",
 290                 "Password is too short - must be at least 6 characters"},
 291         {"Too.many.failures.Key.entry.not.cloned",
 292                 "Too many failures. Key entry not cloned"},
 293         {"key.password.for.alias.", "key password for <{0}>"},
 294         {"Keystore.entry.for.id.getName.already.exists",
 295                 "Keystore entry for <{0}> already exists"},
 296         {"Creating.keystore.entry.for.id.getName.",
 297                 "Creating keystore entry for <{0}> ..."},
 298         {"No.entries.from.identity.database.added",
 299                 "No entries from identity database added"},
 300         {"Alias.name.alias", "Alias name: {0}"},
 301         {"Creation.date.keyStore.getCreationDate.alias.",
 302                 "Creation date: {0,date}"},
 303         {"alias.keyStore.getCreationDate.alias.",
 304                 "{0}, {1,date}, "},
 305         {"alias.", "{0}, "},
 306         {"Entry.type.type.", "Entry type: {0}"},
 307         {"Certificate.chain.length.", "Certificate chain length: "},
 308         {"Certificate.i.1.", "Certificate[{0,number,integer}]:"},
 309         {"Certificate.fingerprint.SHA1.", "Certificate fingerprint (SHA1): "},
 310         {"Keystore.type.", "Keystore type: "},
 311         {"Keystore.provider.", "Keystore provider: "},
 312         {"Your.keystore.contains.keyStore.size.entry",
 313                 "Your keystore contains {0,number,integer} entry"},
 314         {"Your.keystore.contains.keyStore.size.entries",
 315                 "Your keystore contains {0,number,integer} entries"},
 316         {"Failed.to.parse.input", "Failed to parse input"},
 317         {"Empty.input", "Empty input"},
 318         {"Not.X.509.certificate", "Not X.509 certificate"},
 319         {"alias.has.no.public.key", "{0} has no public key"},
 320         {"alias.has.no.X.509.certificate", "{0} has no X.509 certificate"},
 321         {"New.certificate.self.signed.", "New certificate (self-signed):"},
 322         {"Reply.has.no.certificates", "Reply has no certificates"},
 323         {"Certificate.not.imported.alias.alias.already.exists",
 324                 "Certificate not imported, alias <{0}> already exists"},
 325         {"Input.not.an.X.509.certificate", "Input not an X.509 certificate"},
 326         {"Certificate.already.exists.in.keystore.under.alias.trustalias.",
 327                 "Certificate already exists in keystore under alias <{0}>"},
 328         {"Do.you.still.want.to.add.it.no.",
 329                 "Do you still want to add it? [no]:  "},
 330         {"Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.",
 331                 "Certificate already exists in system-wide CA keystore under alias <{0}>"},
 332         {"Do.you.still.want.to.add.it.to.your.own.keystore.no.",
 333                 "Do you still want to add it to your own keystore? [no]:  "},
 334         {"Trust.this.certificate.no.", "Trust this certificate? [no]:  "},
 335         {"YES", "YES"},
 336         {"New.prompt.", "New {0}: "},
 337         {"Passwords.must.differ", "Passwords must differ"},
 338         {"Re.enter.new.prompt.", "Re-enter new {0}: "},
 339         {"Re.enter.password.", "Re-enter password: "},
 340         {"Re.enter.new.password.", "Re-enter new password: "},
 341         {"They.don.t.match.Try.again", "They don't match. Try again"},
 342         {"Enter.prompt.alias.name.", "Enter {0} alias name:  "},
 343         {"Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.",
 344                  "Enter new alias name\t(RETURN to cancel import for this entry):  "},
 345         {"Enter.alias.name.", "Enter alias name:  "},
 346         {".RETURN.if.same.as.for.otherAlias.",
 347                 "\t(RETURN if same as for <{0}>)"},
 348         {"What.is.your.first.and.last.name.",
 349                 "What is your first and last name?"},
 350         {"What.is.the.name.of.your.organizational.unit.",
 351                 "What is the name of your organizational unit?"},
 352         {"What.is.the.name.of.your.organization.",
 353                 "What is the name of your organization?"},
 354         {"What.is.the.name.of.your.City.or.Locality.",
 355                 "What is the name of your City or Locality?"},
 356         {"What.is.the.name.of.your.State.or.Province.",
 357                 "What is the name of your State or Province?"},
 358         {"What.is.the.two.letter.country.code.for.this.unit.",
 359                 "What is the two-letter country code for this unit?"},
 360         {"Is.name.correct.", "Is {0} correct?"},
 361         {"no", "no"},
 362         {"yes", "yes"},
 363         {"y", "y"},
 364         {".defaultValue.", "  [{0}]:  "},
 365         {"Alias.alias.has.no.key",
 366                 "Alias <{0}> has no key"},
 367         {"Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key",
 368                  "Alias <{0}> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries"},
 369 
 370         {".WARNING.WARNING.WARNING.",
 371             "*****************  WARNING WARNING WARNING  *****************"},
 372         {"Signer.d.", "Signer #%d:"},
 373         {"Timestamp.", "Timestamp:"},
 374         {"Signature.", "Signature:"},
 375         {"CRLs.", "CRLs:"},
 376         {"Certificate.owner.", "Certificate owner: "},
 377         {"Not.a.signed.jar.file", "Not a signed jar file"},
 378         {"No.certificate.from.the.SSL.server",
 379                 "No certificate from the SSL server"},
 380 
 381         {".The.integrity.of.the.information.stored.in.your.keystore.",
 382             "* The integrity of the information stored in your keystore  *\n" +
 383             "* has NOT been verified!  In order to verify its integrity, *\n" +
 384             "* you must provide your keystore password.                  *"},
 385         {".The.integrity.of.the.information.stored.in.the.srckeystore.",
 386             "* The integrity of the information stored in the srckeystore*\n" +
 387             "* has NOT been verified!  In order to verify its integrity, *\n" +
 388             "* you must provide the srckeystore password.                *"},
 389 
 390         {"Certificate.reply.does.not.contain.public.key.for.alias.",
 391                 "Certificate reply does not contain public key for <{0}>"},
 392         {"Incomplete.certificate.chain.in.reply",
 393                 "Incomplete certificate chain in reply"},
 394         {"Certificate.chain.in.reply.does.not.verify.",
 395                 "Certificate chain in reply does not verify: "},
 396         {"Top.level.certificate.in.reply.",
 397                 "Top-level certificate in reply:\n"},
 398         {".is.not.trusted.", "... is not trusted. "},
 399         {"Install.reply.anyway.no.", "Install reply anyway? [no]:  "},
 400         {"NO", "NO"},
 401         {"Public.keys.in.reply.and.keystore.don.t.match",
 402                 "Public keys in reply and keystore don't match"},
 403         {"Certificate.reply.and.certificate.in.keystore.are.identical",
 404                 "Certificate reply and certificate in keystore are identical"},
 405         {"Failed.to.establish.chain.from.reply",
 406                 "Failed to establish chain from reply"},
 407         {"n", "n"},
 408         {"Wrong.answer.try.again", "Wrong answer, try again"},
 409         {"Secret.key.not.generated.alias.alias.already.exists",
 410                 "Secret Key not generated, alias <{0}> already exists"},
 411         {"Please.provide.keysize.for.secret.key.generation",
 412                 "Please provide -keysize for secret key generation"},
 413 
 414         {"warning.not.verified.make.sure.keystore.is.correct",
 415             "WARNING: not verified. Make sure -keystore is correct."},
 416 
 417         {"Extensions.", "Extensions: "},
 418         {".Empty.value.", "(Empty value)"},
 419         {"Extension.Request.", "Extension Request:"},
 420         {"Unknown.keyUsage.type.", "Unknown keyUsage type: "},
 421         {"Unknown.extendedkeyUsage.type.", "Unknown extendedkeyUsage type: "},
 422         {"Unknown.AccessDescription.type.", "Unknown AccessDescription type: "},
 423         {"Unrecognized.GeneralName.type.", "Unrecognized GeneralName type: "},
 424         {"This.extension.cannot.be.marked.as.critical.",
 425                  "This extension cannot be marked as critical. "},
 426         {"Odd.number.of.hex.digits.found.", "Odd number of hex digits found: "},
 427         {"Unknown.extension.type.", "Unknown extension type: "},
 428         {"command.{0}.is.ambiguous.", "command {0} is ambiguous:"},
 429 
 430         // 8171319: keytool should print out warnings when reading or
 431         // generating cert/cert req using weak algorithms
 432         {"the.certificate.request", "The certificate request"},
 433         {"the.issuer", "The issuer"},
 434         {"the.generated.certificate", "The generated certificate"},
 435         {"the.generated.crl", "The generated CRL"},
 436         {"the.generated.certificate.request", "The generated certificate request"},
 437         {"the.certificate", "The certificate"},
 438         {"the.crl", "The CRL"},
 439         {"the.tsa.certificate", "The TSA certificate"},
 440         {"the.input", "The input"},
 441         {"reply", "Reply"},
 442         {"one.in.many", "%s #%d of %d"},
 443         {"alias.in.cacerts", "Issuer <%s> in cacerts"},
 444         {"alias.in.keystore", "Issuer <%s>"},
 445         {"with.weak", "%s (weak)"},
 446         {"key.bit", "%d-bit %s key"},
 447         {"key.bit.weak", "%d-bit %s key (weak)"},
 448         {".PATTERN.printX509Cert.with.weak",
 449                 "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}\nSignature algorithm name: {8}\nSubject Public Key Algorithm: {9}\nVersion: {10}"},
 450         {"PKCS.10.with.weak",
 451                 "PKCS #10 Certificate Request (Version 1.0)\n" +
 452                         "Subject: %s\nFormat: %s\nPublic Key: %s\nSignature algorithm: %s\n"},
 453         {"verified.by.s.in.s.weak", "Verified by %s in %s with a %s"},
 454         {"whose.sigalg.risk", "%s uses the %s signature algorithm which is considered a security risk."},
 455         {"whose.key.risk", "%s uses a %s which is considered a security risk."},
 456         {"jks.storetype.warning", "The %1$s keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using \"keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12\"."},
 457         {"migrate.keystore.warning", "Migrated \"%1$s\" to %4$s. The %2$s keystore is backed up as \"%3$s\"."},
 458         {"backup.keystore.warning", "The original keystore \"%1$s\" is backed up as \"%3$s\"..."},
 459         {"importing.keystore.status", "Importing keystore %1$s to %2$s..."},
 460     };
 461 
 462 
 463     /**
 464      * Returns the contents of this <code>ResourceBundle</code>.
 465      *
 466      * <p>
 467      *
 468      * @return the contents of this <code>ResourceBundle</code>.
 469      */
 470     @Override
 471     public Object[][] getContents() {
 472         return contents;
 473     }
 474 }