# ===========================================================================
# Licensed Materials - Property of IBM
# "Restricted Materials of IBM"
#
# IBM SDK, Java(tm) Technology Edition, v6
#  (C) Copyright IBM Corp. 1999, 2018. All Rights Reserved
#
# US Government Users Restricted Rights - Use, duplication or disclosure
# restricted by GSA ADP Schedule Contract with IBM Corp.
# ===========================================================================

#
# This is the "master security properties file".
#
# In this file, various security properties are set for use by
# java.security classes. This is where users can statically register
# Cryptography Package Providers ("providers" for short). The term
# "provider" refers to a package or set of packages that supply a
# concrete implementation of a subset of the cryptography aspects of
# the Java Security API. A provider may, for example, implement one or
# more digital signature algorithms or message digest algorithms.
#
# Each provider must implement a subclass of the Provider class.
# To register a provider in this master security properties file,
# specify the Provider subclass name and priority in the format
#
#    security.provider.<n>=<className>
#
# This declares a provider, and specifies its preference
# order n. The preference order is the order in which providers are
# searched for requested algorithms (when no specific provider is
# requested). The order is 1-based; 1 is the most preferred, followed
# by 2, and so on.
#
# <className> must specify the subclass of the Provider class whose
# constructor sets the values of various properties that are required
# for the Java Security API to look up the algorithms or other
# facilities implemented by the provider.
#
# There must be at least one provider specification in java.security.
#
# The number 1 is used for the default provider. 
#
# Note: Statically registered Provider subclasses are instantiated 
# when the system is initialized. Providers can be dynamically 
# registered instead by calls to either the addProvider or 
# insertProviderAt method in the Security class.
#
# If you wish to use the IBM CMS keystore, register the following provider class
# by adding it to the provider list below:
# security.provider.<n>=com.ibm.security.cmskeystore.CMSProvider
#
# This provider is not enabled by default for performance reasons.
#
# Note: Providers can be dynamically registered instead by calls to
# either the addProvider or insertProviderAt method in the Security
# class.

#
# List of providers and their preference orders (see above):
#
security.provider.1=com.ibm.jsse2.IBMJSSEProvider2
security.provider.2=com.ibm.crypto.provider.IBMJCE
security.provider.3=com.ibm.security.jgss.IBMJGSSProvider
security.provider.4=com.ibm.security.cert.IBMCertPath
security.provider.5=com.ibm.security.sasl.IBMSASL
security.provider.6=com.ibm.xml.crypto.IBMXMLCryptoProvider
security.provider.7=com.ibm.xml.enc.IBMXMLEncProvider
security.provider.8=org.apache.harmony.security.provider.PolicyProvider
security.provider.9=com.ibm.security.jgss.mech.spnego.IBMSPNEGO

#
# The entropy gathering device is described as a URL and can 
# also be specified with the property "java.security.egd". For example,
#   -Djava.security.egd=file:/dev/urandom
# Specifying this system property will override the securerandom.source 
# setting.

#
# Class to instantiate as the javax.security.auth.login.Configuration
# provider.
#
login.configuration.provider=com.ibm.security.auth.login.ConfigFile

#
# Default login configuration file
#
#login.config.url.1=file:${user.home}/.java.login.config

#
# Class to instantiate as the system Policy. This is the name of the class
# that will be used as the Policy object.
#
policy.provider=org.apache.harmony.security.fortress.DefaultPolicy

# The default is to have a single system-wide policy file,
# and a policy file in the user's home directory.
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${java.home}/lib/security/java.pol
policy.url.3=file:///${user.home}/.java.policy

# whether or not we expand properties in the policy file
# if this is set to false, properties (${...}) will not be expanded in policy
# files.
policy.expandProperties=true

# whether or not we allow an extra policy to be passed on the command line
# with -Djava.security.policy=somefile. Comment out this line to disable
# this feature.
policy.allowSystemProperty=true

# whether or not we look into the IdentityScope for trusted Identities
# when encountering a 1.1 signed JAR file. If the identity is found
# and is trusted, we grant it AllPermission.
policy.ignoreIdentityScope=false

#
# Default keystore type.
#
keystore.type=jks

#
# Class to instantiate as the system scope:
#
system.scope=org.apache.harmony.security.SystemScope

#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageAccess unless the
# corresponding RuntimePermission ("accessClassInPackage."+package) has
# been granted.
package.access=sun.,\
               com.sun.xml.internal.,\
               org.apache.harmony.security.fortress.,\
               com.ibm.oti.,\
               com.intel.fortress.,\
               com.sun.imageio.,\
               com.sun.istack.internal.,\
               com.sun.jmx.,\
               com.sun.naming.internal.,\
               com.sun.proxy.,\
               com.sun.corba.se.,\
               com.sun.script.,\
               com.ibm.xml.jaxp.datatype.,\
               com.ibm.xml.resolver.,\
               com.ibm.xml.xlxp.api.event.,\
               com.ibm.xml.xlxp.api.jaxp.impl.,\
               com.ibm.xml.xlxp.api.sax.impl.,\
               com.ibm.xml.xlxp.api.stax.events.,\
               com.ibm.xml.xlxp.api.stax.msg.,\
               com.ibm.xml.xlxp.api.stax.serializer.,\
               com.ibm.xml.xlxp.api.util.,\
               com.ibm.xml.xlxp.scan.msg.,\
               com.ibm.xml.xlxp.scan.util.,\
               com.ibm.xtq.ast.parsers.xpath.,\
               com.ibm.xtq.ast.parsers.xslt.,\
               com.ibm.xtq.ast.res.,\
               com.ibm.xtq.ast.visit.,\
               com.ibm.xtq.bcel.,\
               com.ibm.xtq.common.utils.,\
               com.ibm.xtq.utils.,\
               com.ibm.xtq.xml.datamodel.,\
               com.ibm.xtq.xml.dtm.ref.sax2dtm.,\
               com.ibm.xtq.xml.dtm.utils.,\
               com.ibm.xtq.xml.experimental.,\
               com.ibm.xtq.xml.res.,\
               com.ibm.xtq.xml.types.,\
               com.ibm.xtq.xml.unicode.normalize.,\
               com.ibm.xtq.xml.utils.,\
               com.ibm.xtq.xml.xdm.dom.,\
               com.ibm.xtq.xml.xdm.ref.,\
               com.ibm.xtq.xml.xdm.res.,\
               com.ibm.xtq.xpath.jaxp.,\
               com.ibm.xtq.xslt.cmdline.,\
               com.ibm.xtq.xslt.jaxp.interpreter.,\
               com.ibm.xtq.xslt.res.,\
               com.ibm.xtq.xslt.runtime.debug.,\
               com.ibm.xtq.xslt.runtime.output.,\
               com.ibm.xtq.xslt.runtime.res.,\
               com.ibm.xtq.xslt.runtime.v2.,\
               com.ibm.xtq.xslt.translator.v1.,\
               com.ibm.xtq.xslt.translator.v2.,\
               com.ibm.xtq.xslt.typechecker.,\
               com.ibm.xtq.xslt.xylem.autof.,\
               com.ibm.xtq.xslt.xylem.codegen.,\
               com.ibm.xtq.xslt.xylem.interpreter.,\
               com.ibm.xtq.xslt.xylem.optimizers.,\
               com.ibm.xtq.xslt.xylem.parser.,\
               com.ibm.xtq.xslt.xylem.partialeval.,\
               com.ibm.xtq.xslt.xylem.types.,\
               com.ibm.xtq.xslt.xylem.xpath20.analysis.,\
               com.ibm.xtq.xslt.xylem.xpath20.parser.,\
               com.ibm.xtq.xslt.xylem.xpath20.typesystem.,\
               com.ibm.xylem.annot.meta.,\
               com.ibm.xylem.builders.,\
               com.ibm.xylem.codegen.,\
               com.ibm.xylem.commandline.,\
               com.ibm.xylem.config.,\
               com.ibm.xylem.drivers.,\
               com.ibm.xylem.interpreter.,\
               com.ibm.xylem.parser.,\
               com.ibm.xylem.res.,\
               com.ibm.xylem.types.,\
               com.ibm.xylem.utils.,\
               org.apache.html.dom.,\
               org.apache.wml.,\
               org.apache.xalan.client.,\
               org.apache.xalan.extensions.,\
               org.apache.xalan.lib.sql.,\
               org.apache.xalan.res.,\
               org.apache.xalan.serialize.,\
               org.apache.xalan.templates.,\
               org.apache.xalan.trace.,\
               org.apache.xalan.transformer.,\
               org.apache.xalan.xslt.,\
               org.apache.xalan.xsltc.cmdline.,\
               org.apache.xerces.dom.events.,\
               org.apache.xerces.dom3.as.,\
               org.apache.xerces.impl.dtd.,\
               org.apache.xerces.impl.dv.util.,\
               org.apache.xerces.impl.io.,\
               org.apache.xerces.impl.msg.,\
               org.apache.xerces.impl.validation.,\
               org.apache.xerces.impl.xpath.,\
               org.apache.xerces.impl.xs.,\
               org.apache.xerces.util.,\
               org.apache.xerces.xinclude.,\
               org.apache.xerces.xni.grammars.,\
               org.apache.xerces.xpointer.,\
               org.apache.xerces.xs.datatypes.,\
               org.apache.xml.dtm.ref.dom2dtm.,\
               org.apache.xml.dtm.ref.sax2dtm.,\
               org.apache.xml.res.,\
               org.apache.xml.serializer.charmap.,\
               org.apache.xml.serializer.dom3.,\
               org.apache.xml.serializer.unicode.,\
               org.apache.xml.serializer.utils.,\
               org.apache.xml.utils.,\
               org.apache.xmlcommons.,\
               org.apache.xpath.axes.,\
               org.apache.xpath.compiler.,\
               org.apache.xpath.functions.,\
               org.apache.xpath.objects.,\
               org.apache.xpath.operations.,\
               org.apache.xpath.patterns.,\
               org.apache.xpath.res.,\
               com.ibm.rmi.channel.,\
               com.ibm.rmi.corba.,\
               com.ibm.rmi.iiop.,\
               com.ibm.rmi.io.,\
               com.ibm.rmi.pi.,\
               com.ibm.rmi.poa.,\
               com.ibm.rmi.ras.,\
               com.ibm.rmi.transport.,\
               com.ibm.rmi.util.,\
               com.ibm.CORBA.channel.orb.,\
               com.ibm.CORBA.iiop.,\
               com.ibm.CORBA.nio.,\
               com.ibm.CORBA.poa.,\
               com.ibm.CORBA.transport.

#
# List of comma-separated packages that start with or equal this string
# will cause a security exception to be thrown when
# passed to checkPackageDefinition unless the
# corresponding RuntimePermission ("defineClassInPackage."+package) has
# been granted.
#
# by default, no packages are restricted for definition, and none of
# the class loaders supplied with the JDK call checkPackageDefinition.
#
package.definition=sun.,\
                   com.sun.xml.internal.,\
                   com.sun.imageio.,\
                   com.sun.istack.internal.,\
                   com.sun.jmx.,\
                   com.sun.naming.internal.,\
                   com.sun.proxy.,\
                   com.sun.corba.se.,\
                   com.sun.script.,\
                   com.ibm.xml.jaxp.datatype.,\
                   com.ibm.xml.resolver.,\
                   com.ibm.xml.xlxp.api.event.,\
                   com.ibm.xml.xlxp.api.jaxp.impl.,\
                   com.ibm.xml.xlxp.api.sax.impl.,\
                   com.ibm.xml.xlxp.api.stax.events.,\
                   com.ibm.xml.xlxp.api.stax.msg.,\
                   com.ibm.xml.xlxp.api.stax.serializer.,\
                   com.ibm.xml.xlxp.api.util.,\
                   com.ibm.xml.xlxp.scan.msg.,\
                   com.ibm.xml.xlxp.scan.util.,\
                   com.ibm.xtq.ast.parsers.xpath.,\
                   com.ibm.xtq.ast.parsers.xslt.,\
                   com.ibm.xtq.ast.res.,\
                   com.ibm.xtq.ast.visit.,\
                   com.ibm.xtq.bcel.,\
                   com.ibm.xtq.common.utils.,\
                   com.ibm.xtq.utils.,\
                   com.ibm.xtq.xml.datamodel.,\
                   com.ibm.xtq.xml.dtm.ref.sax2dtm.,\
                   com.ibm.xtq.xml.dtm.utils.,\
                   com.ibm.xtq.xml.experimental.,\
                   com.ibm.xtq.xml.res.,\
                   com.ibm.xtq.xml.types.,\
                   com.ibm.xtq.xml.unicode.normalize.,\
                   com.ibm.xtq.xml.utils.,\
                   com.ibm.xtq.xml.xdm.dom.,\
                   com.ibm.xtq.xml.xdm.ref.,\
                   com.ibm.xtq.xml.xdm.res.,\
                   com.ibm.xtq.xpath.jaxp.,\
                   com.ibm.xtq.xslt.cmdline.,\
                   com.ibm.xtq.xslt.jaxp.interpreter.,\
                   com.ibm.xtq.xslt.res.,\
                   com.ibm.xtq.xslt.runtime.debug.,\
                   com.ibm.xtq.xslt.runtime.output.,\
                   com.ibm.xtq.xslt.runtime.res.,\
                   com.ibm.xtq.xslt.runtime.v2.,\
                   com.ibm.xtq.xslt.translator.v1.,\
                   com.ibm.xtq.xslt.translator.v2.,\
                   com.ibm.xtq.xslt.typechecker.,\
                   com.ibm.xtq.xslt.xylem.autof.,\
                   com.ibm.xtq.xslt.xylem.codegen.,\
                   com.ibm.xtq.xslt.xylem.interpreter.,\
                   com.ibm.xtq.xslt.xylem.optimizers.,\
                   com.ibm.xtq.xslt.xylem.parser.,\
                   com.ibm.xtq.xslt.xylem.partialeval.,\
                   com.ibm.xtq.xslt.xylem.types.,\
                   com.ibm.xtq.xslt.xylem.xpath20.analysis.,\
                   com.ibm.xtq.xslt.xylem.xpath20.parser.,\
                   com.ibm.xtq.xslt.xylem.xpath20.typesystem.,\
                   com.ibm.xylem.annot.meta.,\
                   com.ibm.xylem.builders.,\
                   com.ibm.xylem.codegen.,\
                   com.ibm.xylem.commandline.,\
                   com.ibm.xylem.config.,\
                   com.ibm.xylem.drivers.,\
                   com.ibm.xylem.interpreter.,\
                   com.ibm.xylem.parser.,\
                   com.ibm.xylem.res.,\
                   com.ibm.xylem.types.,\
                   com.ibm.xylem.utils.,\
                   org.apache.html.dom.,\
                   org.apache.wml.,\
                   org.apache.xalan.client.,\
                   org.apache.xalan.extensions.,\
                   org.apache.xalan.lib.sql.,\
                   org.apache.xalan.res.,\
                   org.apache.xalan.serialize.,\
                   org.apache.xalan.templates.,\
                   org.apache.xalan.trace.,\
                   org.apache.xalan.transformer.,\
                   org.apache.xalan.xslt.,\
                   org.apache.xalan.xsltc.cmdline.,\
                   org.apache.xerces.dom.events.,\
                   org.apache.xerces.dom3.as.,\
                   org.apache.xerces.impl.dtd.,\
                   org.apache.xerces.impl.dv.util.,\
                   org.apache.xerces.impl.io.,\
                   org.apache.xerces.impl.msg.,\
                   org.apache.xerces.impl.validation.,\
                   org.apache.xerces.impl.xpath.,\
                   org.apache.xerces.impl.xs.,\
                   org.apache.xerces.util.,\
                   org.apache.xerces.xinclude.,\
                   org.apache.xerces.xni.grammars.,\
                   org.apache.xerces.xpointer.,\
                   org.apache.xerces.xs.datatypes.,\
                   org.apache.xml.dtm.ref.dom2dtm.,\
                   org.apache.xml.dtm.ref.sax2dtm.,\
                   org.apache.xml.res.,\
                   org.apache.xml.serializer.charmap.,\
                   org.apache.xml.serializer.dom3.,\
                   org.apache.xml.serializer.unicode.,\
                   org.apache.xml.serializer.utils.,\
                   org.apache.xml.utils.,\
                   org.apache.xmlcommons.,\
                   org.apache.xpath.axes.,\
                   org.apache.xpath.compiler.,\
                   org.apache.xpath.functions.,\
                   org.apache.xpath.objects.,\
                   org.apache.xpath.operations.,\
                   org.apache.xpath.patterns.,\
                   org.apache.xpath.res. 

#
# Determines whether this properties file can be appended to
# or overridden on the command line via -Djava.security.properties
#
security.overridePropertiesFile=true

#
# Determines the default key and trust manager factory algorithms for 
# the javax.net.ssl package.
#
ssl.KeyManagerFactory.algorithm=IbmX509
ssl.TrustManagerFactory.algorithm=PKIX

#
# Determines the default SSLSocketFactory and SSLServerSocketFactory
# provider implementations for the javax.net.ssl package.  If, due to
# export and/or import regulations, the providers are not allowed to be
# replaced, changing these values will produce non-functional
# SocketFactory or ServerSocketFactory implementations.
#
#ssl.SocketFactory.provider=
#ssl.ServerSocketFactory.provider=

#
# The Java-level namelookup cache policy for successful lookups:
#
# any negative value: caching forever
# any positive value: the number of seconds to cache an address for
# zero: do not cache
#
# default value is forever (FOREVER). For security reasons, this
# caching is made forever when a security manager is set.
#
# NOTE: setting this to anything other than the default value can have
#       serious security implications. Do not set it unless 
#       you are sure you are not exposed to DNS spoofing attack.
#
#networkaddress.cache.ttl=-1 

# The Java-level namelookup cache policy for failed lookups:
#
# any negative value: cache forever
# any positive value: the number of seconds to cache negative lookup results
# zero: do not cache
#
# In some Microsoft Windows networking environments that employ
# the WINS name service in addition to DNS, name service lookups
# that fail may take a noticeably long time to return (approx. 5 seconds).
# For this reason the default caching policy is to maintain these
# results for 10 seconds. 
#
#
networkaddress.cache.negative.ttl=10

# Algorithm restrictions for certification path (CertPath) processing
#
# In some environments, certain algorithms or key lengths may be undesirable
# for certification path building and validation.  For example, "MD2" is
# generally no longer considered to be a secure hash algorithm.  This section
# describes the mechanism for disabling algorithms based on algorithm name
# and/or key length.  This includes algorithms used in certificates, as well
# as revocation information such as CRLs and signed OCSP Responses.
#
# The syntax of the disabled algorithm string is described as this Java
# BNF-style:
#   DisabledAlgorithms:
#       " DisabledAlgorithm { , DisabledAlgorithm } "
#
#   DisabledAlgorithm:
#       AlgorithmName [Constraint] { '&' Constraint }
#
#   AlgorithmName:
#       (see below)
#
#   Constraint:
#       KeySizeConstraint, CertConstraint
#
#   KeySizeConstraint:
#       keySize Operator DecimalInteger
#
#   Operator:
#       <= | < | == | != | >= | >
#
#   DecimalInteger:
#       DecimalDigits
#
#   DecimalDigits:
#       DecimalDigit {DecimalDigit}
#
#   DecimalDigit: one of
#       1 2 3 4 5 6 7 8 9 0
#
#   CertConstraint
#       jdkCA
#
# The "AlgorithmName" is the standard algorithm name of the disabled
# algorithm. See "Java Cryptography Architecture Standard Algorithm Name
# Documentation" for information about Standard Algorithm Names.  Matching
# is performed using a case-insensitive sub-element matching rule.  (For
# example, in "SHA1withECDSA" the sub-elements are "SHA1" for hashing and
# "ECDSA" for signatures.)  If the assertion "AlgorithmName" is a
# sub-element of the certificate algorithm name, the algorithm will be
# rejected during certification path building and validation.  For example,
# the assertion algorithm name "DSA" will disable all certificate algorithms
# that rely on DSA, such as NONEwithDSA, SHA1withDSA.  However, the assertion
# will not disable algorithms related to "ECDSA".
#
# A "Constraint" provides further guidance for the algorithm being specified.
# The "KeySizeConstraint" requires a key of a valid size range if the
# "AlgorithmName" is of a key algorithm.  The "DecimalInteger" indicates the
# key size specified in number of bits.  For example, "RSA keySize <= 1024"
# indicates that any RSA key with key size less than or equal to 1024 bits
# should be disabled, and "RSA keySize < 1024, RSA keySize > 2048" indicates
# that any RSA key with key size less than 1024 or greater than 2048 should
# be disabled. Note that the "KeySizeConstraint" only makes sense to key
# algorithms.
#
# "CertConstraint" specifies additional constraints for
# certificates that contain algorithms that are restricted:
#
#   "jdkCA" prohibits the specified algorithm only if the algorithm is used
#     in a certificate chain that terminates at a marked trust anchor in the
#     lib/security/cacerts keystore.  All other chains are not affected.
#     If the jdkCA constraint is not set, then all chains using the
#     specified algorithm are restricted.  jdkCA may only be used once in
#     a DisabledAlgorithm expression.
#     Example:  To apply this constraint to SHA-1 certificates, include
#     the following:  "SHA1 jdkCA"
#
# When an algorithm must satisfy more than one constraint, it must be
# delimited by an ampersand '&'.  For example, to restrict certificates in a
# chain that terminate at a distribution provided trust anchor and contain
# RSA keys that are less than or equal to 1024 bits, add the following
# constraint:  "RSA keySize <= 1024 & jdkCA".
#
# All DisabledAlgorithms expressions are processed in the order defined in the
# property.  This requires lower keysize constraints to be specified
# before larger keysize constraints of the same algorithm.  For example:
# "RSA keySize < 1024 & jdkCA, RSA keySize < 2048".
#
# Note: This property is currently used by Oracle's PKIX implementation. It
# is not guaranteed to be examined and used by other implementations.
#
# Example:
#   jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048
#
#
jdk.certpath.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, \
    DSA keySize < 1024, EC keySize < 224
#
# Properties to configure OCSP for certificate revocation checking
#

# Enable OCSP 
#
# By default, OCSP is not used for certificate revocation checking.
# This property enables the use of OCSP when set to the value "true".
#
# NOTE: SocketPermission is required to connect to an OCSP responder.
#
# Example,
#   ocsp.enable=true
 
#
# Location of the OCSP responder
#
# By default, the location of the OCSP responder is determined implicitly
# from the certificate being validated. This property explicitly specifies
# the location of the OCSP responder. The property is used when the
# Authority Information Access extension (defined in RFC 3280) is absent
# from the certificate or when it requires overriding.
#
# Example,
#   ocsp.responderURL=http://ocsp.example.net:80
 
#
# Subject name of the OCSP responder's certificate
#
# By default, the certificate of the OCSP responder is that of the issuer
# of the certificate being validated. This property identifies the certificate
# of the OCSP responder when the default does not apply. Its value is a string 
# distinguished name (defined in RFC 2253) which identifies a certificate in 
# the set of certificates supplied during cert path validation. In cases where 
# the subject name alone is not sufficient to uniquely identify the certificate
# then both the "ocsp.responderCertIssuerName" and
# "ocsp.responderCertSerialNumber" properties must be used instead. When this
# property is set then those two properties are ignored.
#
# Example,
#   ocsp.responderCertSubjectName="CN=OCSP Responder, O=XYZ Corp"

#
# Issuer name of the OCSP responder's certificate
#
# By default, the certificate of the OCSP responder is that of the issuer
# of the certificate being validated. This property identifies the certificate
# of the OCSP responder when the default does not apply. Its value is a string
# distinguished name (defined in RFC 2253) which identifies a certificate in
# the set of certificates supplied during cert path validation. When this 
# property is set then the "ocsp.responderCertSerialNumber" property must also 
# be set. When the "ocsp.responderCertSubjectName" property is set then this 
# property is ignored.
#
# Example,
#   ocsp.responderCertIssuerName="CN=Enterprise CA, O=XYZ Corp"
 
#
# Serial number of the OCSP responder's certificate
#
# By default, the certificate of the OCSP responder is that of the issuer
# of the certificate being validated. This property identifies the certificate
# of the OCSP responder when the default does not apply. Its value is a string
# of hexadecimal digits (colon or space separators may be present) which
# identifies a certificate in the set of certificates supplied during cert path
# validation. When this property is set then the "ocsp.responderCertIssuerName"
# property must also be set. When the "ocsp.responderCertSubjectName" property
# is set then this property is ignored.
#
# Example,
#   ocsp.responderCertSerialNumber=2A:FF:00

# Algorithm restrictions for signed JAR files
#
# In some environments, certain algorithms or key lengths may be undesirable
# for signed JAR validation.  For example, "MD2" is generally no longer
# considered to be a secure hash algorithm.  This section describes the
# mechanism for disabling algorithms based on algorithm name and/or key length.
# JARs signed with any of the disabled algorithms or key sizes will be treated
# as unsigned.
#
# The syntax of the disabled algorithm string is described as follows:
#   DisabledAlgorithms:
#       " DisabledAlgorithm { , DisabledAlgorithm } "
#
#   DisabledAlgorithm:
#       AlgorithmName [Constraint]
#
#   AlgorithmName:
#       (see below)
#
#   Constraint:
#       KeySizeConstraint
#
#   KeySizeConstraint:
#       keySize Operator KeyLength
#
#   Operator:
#       <= | < | == | != | >= | >
#
#   KeyLength:
#       Integer value of the algorithm's key length in bits
#
# Note: This property is currently used by the JDK Reference
# implementation. It is not guaranteed to be examined and used by other
# implementations.
#
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024

# Algorithm restrictions for Secure Socket Layer/Transport Layer Security
# (SSL/TLS) processing
#
# In some environments, certain algorithms or key lengths may be undesirable
# when using SSL/TLS.  This section describes the mechanism for disabling
# algorithms during SSL/TLS security parameters negotiation.  Only disabling
# protocol versions is supported in this JDK 6 update release.
#
# Disabled algorithms will not be negotiated for SSL/TLS connections, even
# if they are enabled explicitly in an application.
#
# Note: This property is currently used by Oracle's JSSE implementation.
# It is not guaranteed to be examined and used by other implementations.
#
# Example:
#   jdk.tls.disabledAlgorithms=SSLv2Hello, SSLv3
jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 1024, 3DES_EDE_CBC, \
    EC keySize < 224, DES40_CBC, RC4_40

# Legacy algorithms for Secure Socket Layer/Transport Layer Security (SSL/TLS)
# processing in JSSE implementation.
#
# In some environments, a certain algorithm may be undesirable but it
# cannot be disabled because of its use in legacy applications.  Legacy
# algorithms may still be supported, but applications should not use them
# as the security strength of legacy algorithms are usually not strong enough
# in practice.
#
# During SSL/TLS security parameters negotiation, legacy algorithms will
# not be negotiated unless there are no other candidates.
#
# The syntax of the legacy algorithms string is described as this Java
# BNF-style:
#   LegacyAlgorithms:
#       " LegacyAlgorithm { , LegacyAlgorithm } "
#
#   LegacyAlgorithm:
#       AlgorithmName (standard JSSE algorithm name)
#
# See the specification of security property "jdk.certpath.disabledAlgorithms"
# for the syntax and description of the "AlgorithmName" notation.
#
# Per SSL/TLS specifications, cipher suites have the form:
#       SSL_KeyExchangeAlg_WITH_CipherAlg_MacAlg
# or
#       TLS_KeyExchangeAlg_WITH_CipherAlg_MacAlg
#
# For example, the cipher suite TLS_RSA_WITH_AES_128_CBC_SHA uses RSA as the
# key exchange algorithm, AES_128_CBC (128 bits AES cipher algorithm in CBC
# mode) as the cipher (encryption) algorithm, and SHA-1 as the message digest
# algorithm for HMAC.
#
# The LegacyAlgorithm can be one of the following standard algorithm names:
#     1. JSSE cipher suite name, e.g., TLS_RSA_WITH_AES_128_CBC_SHA
#     2. JSSE key exchange algorithm name, e.g., RSA
#     3. JSSE cipher (encryption) algorithm name, e.g., AES_128_CBC
#     4. JSSE message digest algorithm name, e.g., SHA
#
# See SSL/TLS specifications and "Java Cryptography Architecture Standard
# Algorithm Name Documentation" for information about the algorithm names.
#
# Note: This property is currently used by the JDK Reference implementation.
# It is not guaranteed to be examined and used by other implementations.
# There is no guarantee the property will continue to exist or be of the
# same syntax in future releases.
#
# Example:
#   jdk.tls.legacyAlgorithms=DH_anon, DES_CBC, SSL_RSA_WITH_RC4_128_MD5
#
jdk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL, \
        DH_anon, ECDH_anon, \
        RC4_128, RC4_40, DES_CBC, DES40_CBC

# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
#
# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
# negotiation mechanism is not used, the server offers the client group
# parameters, base generator g and prime modulus p, for DHE key exchange.
# It is recommended to use dynamic group parameters.  This property defines
# a mechanism that allows you to specify custom group parameters.
#
# The syntax of this property string is described as this Java BNF-style:
#   DefaultDHEParameters:
#       DefinedDHEParameters { , DefinedDHEParameters }
#
#   DefinedDHEParameters:
#       "{" DHEPrimeModulus , DHEBaseGenerator "}"
#
#   DHEPrimeModulus:
#       HexadecimalDigits
#
#   DHEBaseGenerator:
#       HexadecimalDigits
#
#   HexadecimalDigits:
#       HexadecimalDigit { HexadecimalDigit }
#
#   HexadecimalDigit: one of
#       0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
#
# Whitespace characters are ignored.
#
# The "DefinedDHEParameters" defines the custom group parameters, prime
# modulus p and base generator g, for a particular size of prime modulus p.
# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
# parameter.  It is recommended to use safe primes for the custom group
# parameters.
#
# If this property is not defined or the value is empty, the underlying JSSE
# provider's default group parameter is used for each connection.
#
# If the property value does not follow the grammar, or a particular group
# parameter is not valid, the connection will fall back and use the
# underlying JSSE provider's default group parameter.
#
# Note: This property is currently used by OpenJDK's JSSE implementation. It
# is not guaranteed to be examined and used by other implementations.
#
# Example:
#   jdk.tls.server.defaultDHEParameters=
#       { \
#       FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
#       29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
#       EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
#       E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
#       EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
#       FFFFFFFF FFFFFFFF, 2}

# Cryptographic Jurisdiction Policy defaults
#
# Import and export control rules on cryptographic software vary from
# country to country.  By default, the JDK provides two different sets of
# cryptographic policy files:
#
#     unlimited:  These policy files contain no restrictions on cryptographic
#                 strengths or algorithms.
#
#     limited:    These policy files contain more restricted cryptographic
#                 strengths, and are still available if your country or
#                 usage requires the traditional restrictive policy.
#
# The JDK JCE framework uses the unlimited policy files by default.
# However the user may explicitly choose a set either by defining the
# "crypto.policy" Security property or by installing valid JCE policy
# jar files into the traditional JDK installation location.  To better
# support older JDK Update releases, the "crypto.policy" property is not
# defined by default.  See below for more information.
#
# The following logic determines which policy files are used:
#
#         <java-home> refers to the directory where the JRE was
#         installed and may be determined using the "java.home"
#         System property.
#
# 1.  If the Security property "crypto.policy" has been defined,
#     then the following mechanism is used:
#
#     The policy files are stored as jar files in subdirectories of
#     <java-home>/lib/security/policy.  Each directory contains a complete
#     set of policy files.
#
#     The "crypto.policy" Security property controls the directory
#     selection, and thus the effective cryptographic policy.
#
#     The default set of directories is:
#
#         limited | unlimited
#
# 2.  If the "crypto.policy" property is not set and the traditional
#     US_export_policy.jar and local_policy.jar files
#     (e.g. limited/unlimited) are found in the legacy
#     <java-home>/lib/security directory, then the rules embedded within
#     those jar files will be used. This helps preserve compatibility
#     for users upgrading from an older installation.
#
# 3.  If the jar files are not present in the legacy location
#     and the "crypto.policy" Security property is not defined,
#     then the JDK will use the unlimited settings (equivalent to
#     crypto.policy=unlimited)
#
# Please see the JCA documentation for additional information on these
# files and formats.
#
# YOU ARE ADVISED TO CONSULT YOUR EXPORT/IMPORT CONTROL COUNSEL OR ATTORNEY
# TO DETERMINE THE EXACT REQUIREMENTS.
#
# Please note that the JCE for Java SE, including the JCE framework,
# cryptographic policy files, and standard JCE providers provided with
# the Java SE, have been reviewed and approved for export as mass market
# encryption item by the US Bureau of Industry and Security.
#
# Note: This property is currently used by the JDK Reference implementation.
# It is not guaranteed to be examined and used by other implementations.
#
#crypto.policy=unlimited

#
# The policy for the XML Signature secure validation mode. The mode is
# enabled by setting the property "org.jcp.xml.dsig.secureValidation" to
# true with the javax.xml.crypto.XMLCryptoContext.setProperty() method,
# or by running the code with a SecurityManager.
#
#   Policy:
#       Constraint {"," Constraint }
#   Constraint:
#       AlgConstraint | MaxTransformsConstraint | MaxReferencesConstraint |
#       ReferenceUriSchemeConstraint | KeySizeConstraint | OtherConstraint
#   AlgConstraint
#       "disallowAlg" Uri
#   MaxTransformsConstraint:
#       "maxTransforms" Integer
#   MaxReferencesConstraint:
#       "maxReferences" Integer
#   ReferenceUriSchemeConstraint:
#       "disallowReferenceUriSchemes" String { String }
#   KeySizeConstraint:
#       "minKeySize" KeyAlg Integer
#   OtherConstraint:
#       "noDuplicateIds" | "noRetrievalMethodLoops"
#
# For AlgConstraint, Uri is the algorithm URI String that is not allowed.
# See the XML Signature Recommendation for more information on algorithm
# URI Identifiers. For KeySizeConstraint, KeyAlg is the standard algorithm
# name of the key type (ex: "RSA"). If the MaxTransformsConstraint,
# MaxReferencesConstraint or KeySizeConstraint (for the same key type) is
# specified more than once, only the last entry is enforced.
#
# Note: This property is currently used by the JDK Reference implementation. It
# is not guaranteed to be examined and used by other implementations.
#
jdk.xml.dsig.secureValidationPolicy=\
    disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\
    disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\
    disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\
    disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\
    maxTransforms 5,\
    maxReferences 30,\
    disallowReferenceUriSchemes file http https,\
    minKeySize RSA 1024,\
    minKeySize DSA 1024,\
    noDuplicateIds,\
    noRetrievalMethodLoops

#
# Serialization process-wide filter
#
# A filter, if configured, is used by java.io.ObjectInputStream during
# deserialization to check the contents of the stream.
# A filter is configured as a sequence of patterns, each pattern is either
# matched against the name of a class in the stream or defines a limit.
# Patterns are separated by ";" (semicolon).
# Whitespace is significant and is considered part of the pattern.
#
# If the system property jdk.serialFilter is also specified, it supersedes
# the security property value defined here.
#
# If a pattern includes a "=", it sets a limit.
# If a limit appears more than once the last value is used.
# Limits are checked before classes regardless of the order in the sequence of patterns.
# If any of the limits are exceeded, the filter status is REJECTED.
#
#   maxdepth=value - the maximum depth of a graph
#   maxrefs=value  - the maximum number of internal references
#   maxbytes=value - the maximum number of bytes in the input stream
#   maxarray=value - the maximum array length allowed
#
# Other patterns, from left to right, match the class or package name as
# returned from Class.getName.
# If the class is an array type, the class or package to be matched is the element type.
# Arrays of any number of dimensions are treated the same as the element type.
# For example, a pattern of "!example.Foo", rejects creation of any instance or
# array of example.Foo.
#
# If the pattern starts with "!", the status is REJECTED if the remaining pattern
#   is matched; otherwise the status is ALLOWED if the pattern matches.
# If the pattern ends with ".**" it matches any class in the package and all subpackages.
# If the pattern ends with ".*" it matches any class in the package.
# If the pattern ends with "*", it matches any class with the pattern as a prefix.
# If the pattern is equal to the class name, it matches.
# Otherwise, the status is UNDECIDED.
#
#jdk.serialFilter=pattern;pattern

#
# RMI Registry Serial Filter
#
# The filter pattern uses the same format as jdk.serialFilter.
# This filter can override the builtin filter if additional types need to be
# allowed or rejected from the RMI Registry.
#
#sun.rmi.registry.registryFilter=pattern;pattern
sun.rmi.registry.registryFilter=javax.rmi.CORBA.Stub

#
# RMI Distributed Garbage Collector (DGC) Serial Filter
#
# The filter pattern uses the same format as jdk.serialFilter.
# This filter can override the builtin filter if additional types need to be
# allowed or rejected from the RMI DGC.
#
# The builtin DGC filter can approximately be represented as the filter pattern:
#
#sun.rmi.transport.dgcFilter=\
#    java.rmi.server.ObjID;\
#    java.rmi.server.UID;\
#    java.rmi.dgc.VMID;\
#    java.rmi.dgc.Lease;\
#    maxdepth=5;maxarray=10000

# CORBA ORBIorTypeCheckRegistryFilter
# Type check enhancement for ORB::string_to_object processing
#
# An IOR type check filter, if configured, is used by an ORB during
# an ORB::string_to_object invocation to check the veracity of the type encoded
# in the ior string.
#
# The filter pattern consists of a semi-colon separated list of class names.
# The configured list contains the binary class names of the IDL interface types
# corresponding to the IDL stub class to be instantiated.
# As such, a filter specifies a list of IDL stub classes that will be
# allowed by an ORB when an ORB::string_to_object is invoked.
# It is used to specify a white list configuration of acceptable
# IDL stub types which may be contained in a stringified IOR
# parameter passed as input to an ORB::string_to_object method.
#
# Note: This property is currently used by the JDK Reference implementation.
# It is not guaranteed to be examined and used by other implementations.
#
#com.sun.CORBA.ORBIorTypeCheckRegistryFilter=binary_class_name;binary_class_name

#
# JCEKS Encrypted Key Serial Filter
#
# This filter, if configured, is used by the JCEKS KeyStore during the
# deserialization of the encrypted Key object stored inside a key entry.
# If not configured or the filter result is UNDECIDED (i.e. none of the patterns
# matches), the filter configured by jdk.serialFilter will be consulted.
#
# If the system property jceks.key.serialFilter is also specified, it supersedes
# the security property value defined here.
#
# The filter pattern uses the same format as jdk.serialFilter. The default
# pattern allows javax.crypto.spec.SecretKeySpec, javax.security.auth.kerberos.*,
# com.ibm.crypto.provider.*, com.ibm.crypto.fips.provider.*, com.ibm.crypto.plus.provider.*,
# com.ibm.security.x509.*, java.math.BigInteger;,
# and java.lang.Number and rejects all the others.
jceks.key.serialFilter = javax.crypto.spec.SecretKeySpec;\
  javax.security.auth.kerberos.*;com.ibm.crypto.provider.*;\
  com.ibm.crypto.fips.provider.*;com.ibm.crypto.plus.provider.*;\
  com.ibm.security.x509.*;java.math.BigInteger;java.lang.Number;!*
