## ---------------------------------------------------------------------------
## Licensed to the Apache Software Foundation (ASF) under one or more
## contributor license agreements.  See the NOTICE file distributed with
## this work for additional information regarding copyright ownership.
## The ASF licenses this file to You under the Apache License, Version 2.0
## (the "License"); you may not use this file except in compliance with
## the License.  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
## ---------------------------------------------------------------------------

spring.main.banner-mode = off
# unencryped properties

unencrypted.property = unEncrYpteD

# encrypted properties
encrypted.password = ENC(ngTGZvEjfnNnKMTrbRCR3tHEnFShMGdBSgfW5K9mlg23u+ygbtNCgJGmDriQBVcB)


camel.component.jasypt.enabled = true
camel.component.jasypt.algorithm= PBEWITHHMACSHA256ANDAES_256
camel.component.jasypt.password = sysenv:JASYPT_ENCRYPTION_PASSWORD
camel.component.jasypt.iv-generator-class-name = org.jasypt.iv.RandomIvGenerator
camel.component.jasypt.salt-generator-class-name = org.jasypt.salt.RandomSaltGenerator
camel.component.jasypt.provider-class-name = com.sun.crypto.provider.SunJCE
