Author: simons
Date: Wed Feb 22 20:28:54 2012
New Revision: 32479
URL: https://nixos.org/websvn/nix/?rev=32479&sc=1

Log:
sshd: choose host key type

Modified:
   nixos/trunk/modules/services/networking/ssh/sshd.nix

Modified: nixos/trunk/modules/services/networking/ssh/sshd.nix
==============================================================================
--- nixos/trunk/modules/services/networking/ssh/sshd.nix        Wed Feb 22 
20:28:51 2012        (r32478)
+++ nixos/trunk/modules/services/networking/ssh/sshd.nix        Wed Feb 22 
20:28:54 2012        (r32479)
@@ -14,6 +14,21 @@
     v == "forced-commands-only" ||
     v == "no";
 
+  hostKeyTypeNames = {
+    dsa1024  = "dsa";
+    rsa1024  = "rsa";
+    ecdsa521 = "ecdsa";
+  };
+
+  hostKeyTypeBits = {
+    dsa1024  = 1024;
+    rsa1024  = 1024;
+    ecdsa521 = 521;
+  };
+
+  hktn = attrByPath [cfg.hostKeyType] (throw "unknown host key type 
`${cfg.hostKeyType}'") hostKeyTypeNames;
+  hktb = attrByPath [cfg.hostKeyType] (throw "unknown host key type 
`${cfg.hostKeyType}'") hostKeyTypeBits;
+
   userOptions = {
     openssh.authorizedKeys = {
 
@@ -187,6 +202,11 @@
         '';
       };
 
+      hostKeyType = mkOption {
+        default = "dsa1024";
+        description = "Type of host key to generate 
(dsa1024/rsa1024/ecdsa521)";
+      };
+
       extraConfig = mkOption {
         default = "";
         description = "Verbatim contents of <filename>sshd_config</filename>.";
@@ -235,8 +255,8 @@
 
             mkdir -m 0755 -p /etc/ssh
 
-            if ! test -f /etc/ssh/ssh_host_dsa_key; then
-                ${pkgs.openssh}/bin/ssh-keygen -t dsa -b 1024 -f 
/etc/ssh/ssh_host_dsa_key -N ""
+            if ! test -f /etc/ssh/ssh_host_${hktn}_key; then
+                ${pkgs.openssh}/bin/ssh-keygen -t ${hktn} -b ${toString hktb} 
-f /etc/ssh/ssh_host_${hktn}_key -N ""
             fi
           '';
 
@@ -244,7 +264,7 @@
 
         exec =
           ''
-            ${pkgs.openssh}/sbin/sshd -h /etc/ssh/ssh_host_dsa_key \
+            ${pkgs.openssh}/sbin/sshd -h /etc/ssh/ssh_host_${hktn}_key \
               -f ${pkgs.writeText "sshd_config" cfg.extraConfig}
           '';
       };
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to