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