#
# Copyright (c) 2000, 2025, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

NEWLINE=\n
STAR=*******************************************
STARNN=*******************************************\n\n
# keytool: Help part
.OPTION.=\u0020[OPTION]...
Options.=Options:
option.1.set.twice=The %s option is specified multiple times. All except the last one will be ignored.
multiple.commands.1.2=Only one command is allowed: both %1$s and %2$s were specified.
Use.keytool.help.for.all.available.commands=Use "keytool -?, -h, or --help" for this help message
Key.and.Certificate.Management.Tool=Key and Certificate Management Tool
Commands.=Commands:
Use.keytool.command.name.help.for.usage.of.command.name=Use "keytool -command_name --help" for usage of command_name.\n\
Use the -conf <url> option to specify a pre-configured options file.
# keytool: help: commands
Generates.a.certificate.request=Generates a certificate request
Changes.an.entry.s.alias=Changes an entry's alias
Deletes.an.entry=Deletes an entry
Exports.certificate=Exports certificate
Generates.a.key.pair=Generates a key pair
Generates.a.secret.key=Generates a secret key
Generates.certificate.from.a.certificate.request=Generates certificate from a certificate request
Generates.CRL=Generates CRL
Generated.keyAlgName.secret.key=Generated {0} secret key
Generated.keysize.bit.keyAlgName.secret.key=Generated {0}-bit {1} secret key
key.algorithm.weak=%1$s uses the %2$s algorithm which is considered a security risk.
key.size.weak=%1$s uses a %2$s which is considered a security risk.
Imports.entries.from.a.JDK.1.1.x.style.identity.database=Imports entries from a JDK 1.1.x-style identity database
Imports.a.certificate.or.a.certificate.chain=Imports a certificate or a certificate chain
Imports.a.password=Imports a password
Imports.one.or.all.entries.from.another.keystore=Imports one or all entries from another keystore
Clones.a.key.entry=Clones a key entry
Changes.the.key.password.of.an.entry=Changes the key password of an entry
Lists.entries.in.a.keystore=Lists entries in a keystore
Prints.the.content.of.a.certificate=Prints the content of a certificate
Prints.the.content.of.a.certificate.request=Prints the content of a certificate request
Prints.the.content.of.a.CRL.file=Prints the content of a CRL file
Generates.a.self.signed.certificate=Generates a self-signed certificate
Changes.the.store.password.of.a.keystore=Changes the store password of a keystore
showinfo.command.help=Displays security-related information
Prints.the.program.version=Prints the program version
# keytool: help: options
alias.name.of.the.entry.to.process=alias name of the entry to process
groupname.option.help=Group name. For example, an Elliptic Curve name.
destination.alias=destination alias
destination.key.password=destination key password
destination.keystore.name=destination keystore name
destination.keystore.password.protected=destination keystore password protected
destination.keystore.provider.name=destination keystore provider name
destination.keystore.password=destination keystore password
destination.keystore.type=destination keystore type
distinguished.name=distinguished name
X.509.extension=X.509 extension
output.file.name=output file name
input.file.name=input file name
key.algorithm.name=key algorithm name
key.password=key password
key.bit.size=key bit size
keystore.name=keystore name
access.the.cacerts.keystore=access the cacerts keystore
warning.cacerts.option=Warning: use -cacerts option to access cacerts keystore
new.password=new password
do.not.prompt=do not prompt
password.through.protected.mechanism=password through protected mechanism
tls.option.help=Displays TLS configuration information
# The following 2 values should span 2 lines, the first for the
# option itself, the second for its -providerArg value.
addprovider.option=add security provider by name (e.g. SunPKCS11)\n\
configure argument for -addprovider
provider.class.option=add security provider by fully-qualified class name\n\
configure argument for -providerclass

provider.name=provider name
provider.classpath=provider classpath
output.in.RFC.style=output in RFC style
signature.algorithm.name=signature algorithm name
signer.alias=signer alias
signer.key.password=signer key password
source.alias=source alias
source.key.password=source key password
source.keystore.name=source keystore name
source.keystore.password.protected=source keystore password protected
source.keystore.provider.name=source keystore provider name
source.keystore.password=source keystore password
source.keystore.type=source keystore type
SSL.server.host.and.port=SSL server host and port
signed.jar.file=signed jar file
certificate.validity.start.date.time=certificate validity start date/time
keystore.password=keystore password
keystore.type=keystore type
trust.certificates.from.cacerts=trust certificates from cacerts
verbose.output=verbose output
validity.number.of.days=validity number of days
Serial.ID.of.cert.to.revoke=Serial ID of cert to revoke
# keytool: Running part
keytool.error.=keytool error:\u0020
Illegal.option.=Illegal option: \u0020
Illegal.value.=Illegal value:\u0020
Unknown.password.type.=Unknown password type:\u0020
Cannot.find.environment.variable.=Cannot find environment variable:\u0020
Cannot.find.file.=Cannot find file:\u0020
Command.option.flag.needs.an.argument.=Command option {0} needs an argument.
Warning.Different.store.and.key.passwords.not.supported.for.PKCS12.KeyStores.Ignoring.user.specified.command.value.=Warning:  Different store and key passwords not supported for PKCS12 KeyStores. Ignoring user-specified {0} value.
the.keystore.or.storetype.option.cannot.be.used.with.the.cacerts.option=The -keystore or -storetype option cannot be used with the -cacerts option
.keystore.must.be.NONE.if.storetype.is.{0}=-keystore must be NONE if -storetype is {0}
Too.many.retries.program.terminated=Too many retries, program terminated
.storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}=-storepasswd and -keypasswd commands not supported if -storetype is {0}
.keypasswd.commands.not.supported.if.storetype.is.PKCS12=-keypasswd commands not supported if -storetype is PKCS12
.keypass.and.new.can.not.be.specified.if.storetype.is.{0}=-keypass and -new can not be specified if -storetype is {0}
if.protected.is.specified.then.storepass.keypass.and.new.must.not.be.specified=if -protected is specified, then -storepass, -keypass, and -new must not be specified
if.srcprotected.is.specified.then.srcstorepass.and.srckeypass.must.not.be.specified=if -srcprotected is specified, then -srcstorepass and -srckeypass must not be specified
if.keystore.is.not.password.protected.then.storepass.keypass.and.new.must.not.be.specified=if keystore is not password protected, then -storepass, -keypass, and -new must not be specified
if.source.keystore.is.not.password.protected.then.srcstorepass.and.srckeypass.must.not.be.specified=if source keystore is not password protected, then -srcstorepass and -srckeypass must not be specified
Illegal.startdate.value=Illegal startdate value
Validity.must.be.greater.than.zero=Validity must be greater than zero
provclass.not.a.provider=%s not a provider
provider.name.not.found=Provider named "%s" not found
provider.class.not.found=Provider "%s" not found
Usage.error.no.command.provided=Usage error: no command provided
Source.keystore.file.exists.but.is.empty.=Source keystore file exists, but is empty:\u0020
Please.specify.srckeystore=Please specify -srckeystore
Must.not.specify.both.v.and.rfc.with.list.command=Must not specify both -v and -rfc with 'list' command
Key.password.must.be.at.least.6.characters=Key password must be at least 6 characters
New.password.must.be.at.least.6.characters=New password must be at least 6 characters
Keystore.file.exists.but.is.empty.=Keystore file exists, but is empty:\u0020
Keystore.file.does.not.exist.=Keystore file does not exist:\u0020
Must.specify.destination.alias=Must specify destination alias
Must.specify.alias=Must specify alias
Keystore.password.must.be.at.least.6.characters=Keystore password must be at least 6 characters
Enter.the.password.to.be.stored.=Enter the password to be stored: \u0020
Enter.keystore.password.=Enter keystore password: \u0020
Enter.source.keystore.password.=Enter source keystore password: \u0020
Enter.destination.keystore.password.=Enter destination keystore password: \u0020
Keystore.password.is.too.short.must.be.at.least.6.characters=Keystore password is too short - must be at least 6 characters
Unknown.Entry.Type=Unknown Entry Type
Entry.for.alias.alias.successfully.imported.=Entry for alias {0} successfully imported.
Entry.for.alias.alias.not.imported.=Entry for alias {0} not imported.
Problem.importing.entry.for.alias.alias.exception.Entry.for.alias.alias.not.imported.=Problem importing entry for alias {0}: {1}.\nEntry for alias {0} not imported.
Import.command.completed.ok.entries.successfully.imported.fail.entries.failed.or.cancelled=Import command completed:  {0} entries successfully imported, {1} entries failed or cancelled
Warning.Overwriting.existing.alias.alias.in.destination.keystore=Warning: Overwriting existing alias {0} in destination keystore
Existing.entry.alias.alias.exists.overwrite.no.=Existing entry alias {0} exists, overwrite? [no]: \u0020
Too.many.failures.try.later=Too many failures - try later
Certification.request.stored.in.file.filename.=Certification request stored in file <{0}>
Submit.this.to.your.CA=Submit this to your CA
if.alias.not.specified.destalias.and.srckeypass.must.not.be.specified=if alias not specified, destalias and srckeypass must not be specified
The.destination.pkcs12.keystore.has.different.storepass.and.keypass.Please.retry.with.destkeypass.specified.=The destination pkcs12 keystore has different storepass and keypass. Please retry with -destkeypass specified.
Certificate.stored.in.file.filename.=Certificate stored in file <{0}>
Certificate.reply.was.installed.in.keystore=Certificate reply was installed in keystore
Certificate.reply.was.not.installed.in.keystore=Certificate reply was not installed in keystore
Certificate.was.added.to.keystore=Certificate was added to keystore
Certificate.was.not.added.to.keystore=Certificate was not added to keystore
.Storing.ksfname.=[Storing {0}]
alias.has.no.public.key.certificate.={0} has no public key (certificate)
Cannot.derive.signature.algorithm=Cannot derive signature algorithm
Alias.alias.does.not.exist=Alias <{0}> does not exist
Alias.alias.has.no.certificate=Alias <{0}> has no certificate
groupname.keysize.coexist=Cannot specify both -groupname and -keysize
deprecate.keysize.for.ec=Specifying -keysize for generating EC keys is deprecated, please use "-groupname %s" instead.
Key.pair.not.generated.alias.alias.already.exists=Key pair not generated, alias <{0}> already exists
size.bit.alg=%1$d-bit %2$s
Generating.full.keyAlgName.key.pair.and.self.signed.certificate.sigAlgName.with.a.validity.of.days.for=Generating {0} key pair and self-signed certificate ({1}) with a validity of {2} days\n\tfor: {3}
Generating.full.keyAlgName.key.pair.and.a.certificate.sigAlgName.issued.by.signerAlias.with.a.validity.of.days.for=Generating {0} key pair and a certificate ({1}) issued by <{2}> with a validity of {3} days\n\tfor: {4}
Enter.key.password.for.alias.=Enter key password for <{0}>
.RETURN.if.same.as.keystore.password.=\t(RETURN if same as keystore password): \u0020
Key.password.is.too.short.must.be.at.least.6.characters=Key password is too short - must be at least 6 characters
Too.many.failures.key.not.added.to.keystore=Too many failures - key not added to keystore
Destination.alias.dest.already.exists=Destination alias <{0}> already exists
Password.is.too.short.must.be.at.least.6.characters=Password is too short - must be at least 6 characters
Too.many.failures.Key.entry.not.cloned=Too many failures. Key entry not cloned
key.password.for.alias.=key password for <{0}>
No.entries.from.identity.database.added=No entries from identity database added
Alias.name.alias=Alias name: {0}
Creation.date.keyStore.getCreationDate.alias.=Creation date: {0,date}
alias.keyStore.getCreationDate.alias.={0}, {1,date},\u0020
alias.={0},\u0020
Entry.type.type.=Entry type: {0}
Certificate.chain.length.=Certificate chain length:\u0020
Certificate.i.1.=Certificate[{0,number,integer}]:
Certificate.fingerprint.SHA.256.=Certificate fingerprint (SHA-256):\u0020
Keystore.type.=Keystore type:\u0020
Keystore.provider.=Keystore provider:\u0020
Your.keystore.contains.keyStore.size.entry=Your keystore contains {0,number,integer} entry
Your.keystore.contains.keyStore.size.entries=Your keystore contains {0,number,integer} entries
Failed.to.parse.input=Failed to parse input
Empty.input=Empty input
Not.X.509.certificate=Not X.509 certificate
alias.has.no.public.key={0} has no public key
alias.has.no.X.509.certificate={0} has no X.509 certificate
New.certificate.self.signed.=New certificate (self-signed):
Reply.has.no.certificates=Reply has no certificates
Certificate.not.imported.alias.alias.already.exists=Certificate not imported, alias <{0}> already exists
Input.not.an.X.509.certificate=Input not an X.509 certificate
Certificate.already.exists.in.keystore.under.alias.trustalias.=Certificate already exists in keystore under alias <{0}>
Do.you.still.want.to.add.it.no.=Do you still want to add it? [no]: \u0020
Certificate.already.exists.in.system.wide.CA.keystore.under.alias.trustalias.=Certificate already exists in system-wide CA keystore under alias <{0}>
Do.you.still.want.to.add.it.to.your.own.keystore.no.=Do you still want to add it to your own keystore? [no]: \u0020
Trust.this.certificate.no.=Trust this certificate? [no]: \u0020
New.prompt.=New {0}:\u0020
Passwords.must.differ=Passwords must differ
Re.enter.new.prompt.=Re-enter new {0}:\u0020
Re.enter.password.=Re-enter password:\u0020
Re.enter.new.password.=Re-enter new password:\u0020
They.don.t.match.Try.again=They don't match. Try again
Enter.prompt.alias.name.=Enter {0} alias name: \u0020
Enter.new.alias.name.RETURN.to.cancel.import.for.this.entry.=Enter new alias name\t(RETURN to cancel import for this entry): \u0020
Enter.alias.name.=Enter alias name: \u0020
.RETURN.if.same.as.for.otherAlias.=\t(RETURN if same as for <{0}>)
enter.dname.components=Enter the distinguished name. Provide a single dot (.) to leave a sub-component empty or press ENTER to use the default value in braces.
What.is.your.first.and.last.name.=What is your first and last name?
What.is.the.name.of.your.organizational.unit.=What is the name of your organizational unit?
What.is.the.name.of.your.organization.=What is the name of your organization?
What.is.the.name.of.your.City.or.Locality.=What is the name of your City or Locality?
What.is.the.name.of.your.State.or.Province.=What is the name of your State or Province?
What.is.the.two.letter.country.code.for.this.unit.=What is the two-letter country code for this unit?
no.field.in.dname=At least one field must be provided. Enter again.
Is.name.correct.=Is {0} correct?
no=no
yes=yes
y=y
.defaultValue.=\u0020 [{0}]: \u0020
Alias.alias.has.no.key=Alias <{0}> has no key
Alias.alias.references.an.entry.type.that.is.not.a.private.key.entry.The.keyclone.command.only.supports.cloning.of.private.key=Alias <{0}> references an entry type that is not a private key entry.  The -keyclone command only supports cloning of private key entries

.WARNING.WARNING.WARNING.=*****************  WARNING WARNING WARNING  *****************
Signer.d.=Signer #%d:
Certificate.d.=Certificate #%d:
Timestamp.=Timestamp:
Certificate.owner.=Certificate owner:\u0020
Not.a.signed.jar.file=Not a signed jar file
No.certificate.from.the.SSL.server=No certificate from the SSL server

.The.integrity.of.the.information.stored.in.your.keystore.=* The integrity of the information stored in your keystore  *\n\
* has NOT been verified!  In order to verify its integrity, *\n\
* you must provide your keystore password.                  *
.The.integrity.of.the.information.stored.in.the.srckeystore.=* The integrity of the information stored in the srckeystore*\n\
* has NOT been verified!  In order to verify its integrity, *\n\
* you must provide the srckeystore password.                *

Certificate.reply.does.not.contain.public.key.for.alias.=Certificate reply does not contain public key for <{0}>
Incomplete.certificate.chain.in.reply=Incomplete certificate chain in reply
Top.level.certificate.in.reply.=Top-level certificate in reply:\n
.is.not.trusted.=... is not trusted.\u0020
Install.reply.anyway.no.=Install reply anyway? [no]: \u0020
Public.keys.in.reply.and.keystore.don.t.match=Public keys in reply and keystore don't match
Certificate.reply.and.certificate.in.keystore.are.identical=Certificate reply and certificate in keystore are identical
Failed.to.establish.chain.from.reply=Failed to establish chain from reply
n=n
Wrong.answer.try.again=Wrong answer, try again
Secret.key.not.generated.alias.alias.already.exists=Secret Key not generated, alias <{0}> already exists
Please.provide.keysize.for.secret.key.generation=Please provide -keysize for secret key generation

warning.not.verified.make.sure.keystore.is.correct=WARNING: not verified. Make sure -keystore is correct.
warning.not.verified.make.sure.keystore.is.correct.or.specify.trustcacerts=WARNING: not verified. Make sure -keystore is correct or specify -trustcacerts.

Extensions.=Extensions:\u0020
.Empty.value.=(Empty value)
Extension.Request.=Extension Request:
Unknown.keyUsage.type.=Unknown keyUsage type:\u0020
Unknown.extendedkeyUsage.type.=Unknown extendedkeyUsage type:\u0020
Unknown.AccessDescription.type.=Unknown AccessDescription type:\u0020
Unrecognized.GeneralName.type.=Unrecognized GeneralName type:\u0020
This.extension.cannot.be.marked.as.critical.=This extension cannot be marked as critical.\u0020
Odd.number.of.hex.digits.found.=Odd number of hex digits found:\u0020
Unknown.extension.type.=Unknown extension type:\u0020
command.{0}.is.ambiguous.=command {0} is ambiguous:
# 8171319: keytool should print out warnings when reading or
# generating cert/cert req using weak algorithms
the.certificate.request=The certificate request
the.issuer=The issuer
the.generated.secretkey=The generated secret key
the.generated.certificate=The generated certificate
the.generated.crl=The generated CRL
the.generated.certificate.request=The generated certificate request
the.certificate=The certificate
the.crl=The CRL
the.tsa.certificate=The TSA certificate
the.input=The input
reply=Reply
one.in.many=%1$s #%2$d of %3$d
one.in.many1=%1$s #%2$d
one.in.many2=%1$s of signer #%2$d
one.in.many3=%1$s #%2$d of signer #%3$d
alias.in.cacerts=Issuer <%s> in cacerts
alias.in.keystore=Issuer <%s>
with.weak=%s (weak)
with.disabled=%s (disabled)
key.bit=%s key
key.bit.weak=%s key (weak)
key.bit.disabled=%s key (disabled)
.PATTERN.printX509Cert.with.weak=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}
PKCS.10.with.weak=PKCS #10 Certificate Request (Version 1.0)\n\
Subject: %1$s\nFormat: %2$s\nPublic Key: %3$s\nSignature algorithm: %4$s\n
verified.by.s.in.s.weak=Verified by %1$s in %2$s with a %3$s
whose.sigalg.disabled=%1$s uses the %2$s signature algorithm which is considered a security risk and is disabled.
whose.sigalg.usagesignedjar=%1$s uses the %2$s signature algorithm which is considered a security risk and cannot be used to sign JARs after %3$s.
Unable.to.parse.denyAfter.string.in.exception.message=Unable to parse denyAfter date string in exception message
whose.sigalg.weak=%1$s uses the %2$s signature algorithm which is considered a security risk.
whose.key.disabled=%1$s uses a %2$s which is considered a security risk and is disabled.
whose.key.weak=%1$s uses a %2$s which is considered a security risk. It will be disabled in a future update.
jks.storetype.warning=%1$s uses outdated cryptographic algorithms and will be removed in a future release. Migrate to PKCS12 using:\n\
keytool -importkeystore -srckeystore %2$s -destkeystore %2$s -deststoretype pkcs12
migrate.keystore.warning=Migrated "%1$s" to %4$s. The %2$s keystore is backed up as "%3$s".
backup.keystore.warning=The original keystore "%1$s" is backed up as "%3$s"...
importing.keystore.status=Importing keystore %1$s to %2$s...
keyalg.option.missing.error=The -keyalg option must be specified.
showinfo.no.option=Missing option for -showinfo. Try "keytool -showinfo -tls".
