<!--
  ~ Copyright (c) 2010-2021 Evolveum
  ~
  ~ Licensed 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.
  -->

<task xmlns="http://midpoint.evolveum.com/xml/ns/public/common/common-3"
      xmlns:s="http://midpoint.evolveum.com/xml/ns/public/model/scripting-3"
      oid="b427848b-ea98-4da1-acba-c16cbb0e9c22">
    <name>List encryption keys</name>
    <ownerRef oid="00000000-0000-0000-0000-000000000002"/>
    <executionState>runnable</executionState>
    <activity>
        <work>
            <iterativeScripting>
                <objects>
                    <type>ObjectType</type>
                    <useRepositoryDirectly>true</useRepositoryDirectly>
                </objects>
                <scriptExecutionRequest>
                    <s:execute>
                        <s:script>
                            <code>
                                import com.evolveum.midpoint.common.crypto.CryptoUtil

                                midpoint.applyDefinition(input)
                                keys = CryptoUtil.getEncryptionKeyNames(input.asPrismObject())
                                clear = CryptoUtil.containsCleartext(input.asPrismObject())
                                hashed = CryptoUtil.containsHashedData(input.asPrismObject())
                                if (!keys.isEmpty() || clear || hashed) {
                                    append = ""
                                    if (clear) {
                                        append += " [CLEARTEXT]"
                                    }
                                    if (hashed) {
                                        append += " [HASHED]"
                                    }
                                    log.info(sprintf('Object: %-100s uses keys: %s%s', input, keys, append))
                                }
                            </code>
                        </s:script>
                        <s:quiet>true</s:quiet>
                    </s:execute>
                </scriptExecutionRequest>
            </iterativeScripting>
        </work>
    </activity>
</task>
