# 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-registry-credentials
    data:
      registry.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=
