# Copyright (c) 2024 VEXXHOST, Inc.
#
# 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.

- secret:
    name: atmosphere-harbor-credentials
    data:
      harbor.atmosphere.dev:
        username: robot$zuul
        password: !encrypted/pkcs1-oaep
          - OOykjodZE21qsYYLpzplp+PV0QbsKQ1B3+kI7bY97VQI/d5RlewqlNABc10eQnyYFSDvq
            z2gSigSHxaVcV5qKJLTNVDgzSBHBj349OaTh6dXsxplvoArehfYMMZGuNmFlucoeN8K6w
            yLRViN7tCS39CAYdjeNX1X7mQ7gBC61jUQ++JB+R5MhXmALJxzPfQRl9jsYmjx9ZXjEwE
            tjKLSyQifQU20eXbhZOUW2nr+ItTikS3AOSo6Ja6jCI1c9lj6mJtUOorGsuxfdhEigPws
            Qnz539imGcyqySSxvbJvgoEYxhE3dHFV5cJkomoHHHwLH0wbjAgBQtCMX3CvpxNX8sBfJ
            MxvUkxY8VWt3CtJkdq+/eaCovCRn6GN5enI5tlUJgpAyV+PO6PvkTan6yC8lHMM5pD4jX
            Hdo6gt6m9WyA5VxUHdoYYMaDO/rvCxxrUevzPn8do5I96madr9S9lFARqw74mgXG5I6pZ
            M7zDXnorUFyv9dUIB2rOZrp7o0OC2thujjDTKXb4qfmfXGOwlkNmtCLo6BaDo9pSdRN8p
            k0YnUAItZ64qUR7paEUKGy4rzsZjDYvIj7DrCFvLL2CXcyjPGcmcblpSHe5vJ15CFVH8X
            o39FIIhSmehvrYJziGYUgf4JY1B6ktBtFc9l78WeoJRHNce+viSSkBj1fhbUaI=

- secret:
    name: ansible_galaxy_info
    data:
      url: https://galaxy.ansible.com
      token: !encrypted/pkcs1-oaep
        - GlYV1vSho2Q5FmS2awPcOVKuatGFm7rjrlUl9LpOdqbQa49ZxxEPAJtOcQWm77NYCDsFa
          BhD3XBdH8QGgGqy0PqRgw48/kDw+3eVrXsBnaAUO583ElbMumcZdevYxHPRibR3FESinU
          zDmc4VIAGJRkE5D0QYyp6jtJhhcaKUnBKNz3qvyTW4Lh03PHIuUR2UcaopJbfJiU+xMcE
          gHZj9UZ7HwIE//q10euv/mxDwyICkdcU9UuWrNm16WdzIVtpwygJTaQNRo7pFN3POgmps
          aNILKXp7Hfp0J6Hx1Hc7GmpJ9EmyYaNyktvOSf4jqpZCJvQ5CRWKHJC+jryHYBxOoT524
          hU3Hoc32DOnytb1EZwzwu4iJbRMe1xEHWqBf9wpf3sV6B5Pvc7/IHTnU91/dlawOh5eOp
          8wq45eO5w0c+PcITu9OUhWULKhEJcPunGNr0e96wdfK7L4khiPopHUTSbFF4dOhfF1GfV
          GgFTakyVg9jKYKre0aLGW2Gah3gzXuX2IQ9XGXebsnFLdtQL5ac7ET0hKDR8tZBGrwKj6
          c8bL2vzVKjOOD+sSnv4h7l+p8igtjczyVV83pn6dJ/v1GCMCFzGdOhaKJ2DIO1KtKK4jV
          c80+tpz0x/Cr/4Ld4rJU4mqqC8Y3Kk6AC2cNzsiYh1iPlpw+D/yoE0Lgugjjzc=

- secret:
    name: cosign_key
    data:
      public: |
        -----BEGIN PUBLIC KEY-----
        MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf5DzGuQLAvNIfiv/b7JULemWZcpU
        4uCefCqflA7wpypGLM+1lBo0pjBc/9QJAj+lG61ZNwpDx8Zk1jFGJUUl9A==
        -----END PUBLIC KEY-----
      private: !encrypted/pkcs1-oaep
        - lHcfMc85t12hzas/feMTOr1+pZVMZfQdxTMJouKIvSHpHjSQt6EwyMmWIhc+q03HUBGb5
          setWiSl1YNZIprZLyqCNCq8NjZlcBWVnw9zkkMdwN2Q6JkAe78mPHRLmVUdNqKuOVHmmr
          ThCUkQHxbieKW7ZGzAtUSouSWhfjLdx9poUf5wJx2ujotcNcCQ2Bkb7PPzWNBdzBJjRlE
          2PXW+Ni99wNZisEcjxan7QhrhFxcS+sou0R9FPds66zO9GgAYYD+4SRwF7dSUM2BXA7AZ
          0zeU6w+e2qd09eHUbHVYXeWDhYKx7FlsUetVHWzyVFg4LfnHCFC/tIWTvJnzyJIfbXziP
          KLSuv3wGlNCRZOPI7xgB0oeky++xzuTfnX2Ra9pNVZ9eAzpBArJRTOCCgltXjfWNS3QiZ
          LR3cmizPL53BUHX92MBBXPXqaEYfbkUcbcAlYYgnjYUT8rak4NW7R5qZMI0d8IWGAnC7w
          z0MGuT61LWhaPq63TusWpXPbh1GK6n8RxSAQeV9W69KSrbgirRKET2/HyW/WnDwrvYiCY
          866xxq/vtqkfB5ck/YtW6UCE5pVPzqnGBLKd+3/t9tu1j0UY/tuegi+3tLbm18E1hPg/T
          XDvEm7qkl8QerJFfI3XX8YVUcgc1/tzRHFslNXGsUFkgl6BxS9FIu5hXOIv3hQ=
        - CwAHQQkYQwM2uc4rDihEw+2jJQ0c/FxsutON5u/D48hRBxeUAzj8fTnAar+Co7jWkNHYV
          +dI/LvhT7y++gzi4kG41B2L+FJELnh2TI3+hz7XorUALHuei5aYsyIFFzVow2fP0t6nW+
          mBAYFlbO8stkDg9veIiBxv0RXaISQVNOfzOo428zt0EPJYSqno4FJ9by6plO/jY3A5h8j
          ElEs/J35vrDbWcWy80htZNKuLo6nBOaDPM1Esfd6uBsMVxxaPzUSa6yaov4pS8WV172CW
          98IaCSYY1+GGkpm+69nQmi6Ik9qILhn3yu3XqfnF/8rlrXXzhN2bDevMyPiWh/KXL4mAq
          UMWyNyXdNNY2g+5s3dCB/qoZVIdiilsDX9tvP7pQvKW4tNqLXm9+8RVbfPxVaWfKpb3JD
          02RZtvB0W+jpCk/tC3JNKpW3JVnlOGidYyLMsrMqDoKlohorq/LZ/hM4qDyYCoXr5NzJv
          Wq1JuqYu3+/gpx/PE+RI17lCKbA0vYI86L1qMkoQMK0rvShurWanz8/q7slDorWcfgHW8
          UbB4Rqd9xgk8jtHnxHNlafZrfjIJbE5W5PddzH5Q5Aw7l4sPlJ4V2hnF+mhVegCwhc7s7
          D/tlTTxjnHrQBLw9+vwDhkk/RADQbLExTIXFt6TH0No94zdTiUrTPg90s+rn6A=
