diff options
Diffstat (limited to 'gnu')
| -rw-r--r-- | gnu/machine/hetzner.scm | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gnu/machine/hetzner.scm b/gnu/machine/hetzner.scm index bc8d2efbd34..e8484e4d51e 100644 --- a/gnu/machine/hetzner.scm +++ b/gnu/machine/hetzner.scm | |||
| @@ -77,6 +77,7 @@ | |||
| 77 | hetzner-configuration-location | 77 | hetzner-configuration-location |
| 78 | hetzner-configuration-server-type | 78 | hetzner-configuration-server-type |
| 79 | hetzner-configuration-ssh-key | 79 | hetzner-configuration-ssh-key |
| 80 | hetzner-configuration-ssh-public-key | ||
| 80 | hetzner-configuration? | 81 | hetzner-configuration? |
| 81 | hetzner-environment-type)) | 82 | hetzner-environment-type)) |
| 82 | 83 | ||
| @@ -204,20 +205,24 @@ Have you run 'guix archive --generate-key'?") | |||
| 204 | (default "fsn1")) | 205 | (default "fsn1")) |
| 205 | (server-type hetzner-configuration-server-type ; string | 206 | (server-type hetzner-configuration-server-type ; string |
| 206 | (default "cx42")) | 207 | (default "cx42")) |
| 207 | (ssh-key hetzner-configuration-ssh-key)) ; string | 208 | (ssh-public-key hetzner-configuration-ssh-public-key ; public-key | string |
| 209 | (thunked) | ||
| 210 | (default (public-key-from-file (hetzner-configuration-ssh-key this-hetzner-configuration))) | ||
| 211 | (sanitize | ||
| 212 | (lambda (value) | ||
| 213 | (if (string? value) (public-key-from-file value) value)))) | ||
| 214 | (ssh-key hetzner-configuration-ssh-key | ||
| 215 | (default #f))) ; #f | string | ||
| 208 | 216 | ||
| 209 | (define (hetzner-configuration-ssh-key-fingerprint config) | 217 | (define (hetzner-configuration-ssh-key-fingerprint config) |
| 210 | "Return the SSH public key fingerprint of CONFIG as a string." | 218 | "Return the SSH public key fingerprint of CONFIG as a string." |
| 211 | (and-let* ((file-name (hetzner-configuration-ssh-key config)) | 219 | (and-let* ((pubkey (hetzner-configuration-ssh-public-key config)) |
| 212 | (privkey (private-key-from-file file-name)) | ||
| 213 | (pubkey (private-key->public-key privkey)) | ||
| 214 | (hash (get-public-key-hash pubkey 'md5))) | 220 | (hash (get-public-key-hash pubkey 'md5))) |
| 215 | (bytevector->hex-string hash))) | 221 | (bytevector->hex-string hash))) |
| 216 | 222 | ||
| 217 | (define (hetzner-configuration-ssh-key-public config) | 223 | (define (hetzner-configuration-ssh-key-public config) |
| 218 | "Return the SSH public key of CONFIG as a string." | 224 | "Return the SSH public key of CONFIG as a string." |
| 219 | (and-let* ((ssh-key (hetzner-configuration-ssh-key config)) | 225 | (let ((public-key (hetzner-configuration-ssh-public-key config))) |
| 220 | (public-key (public-key-from-file ssh-key))) | ||
| 221 | (format #f "ssh-~a ~a" (get-key-type public-key) | 226 | (format #f "ssh-~a ~a" (get-key-type public-key) |
| 222 | (public-key->string public-key)))) | 227 | (public-key->string public-key)))) |
| 223 | 228 | ||
