From 55d19e4676de668970d2ee0796d1b29a5b27d168 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Sun, 29 Nov 2015 19:27:36 +0200
Subject: [PATCH] Initial implementation, further testing is needed.

---
 .gitignore |  3 +++
 Makefile   |  6 ++++--
 ssh-ca     | 22 ++++++++++++++++++----
 3 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/.gitignore b/.gitignore
index eb9b1f6..4f2b5d7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,6 @@
 *~
 *.swp
 *.swo
+CA*
+users/
+hosts/
diff --git a/Makefile b/Makefile
index 566d81e..99bd3d8 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,9 @@ install:
 	chmod 755 /usr/local/bin/ssh-ca
 
 clean:
-	rm -rf CA CA.pub
+	rm -rf CA CA.pub users hosts
 
 test: clean
-	echo Not implemented.
+	./ssh-ca init
+	./ssh-ca newuser john
+	./ssh-ca newhost www
diff --git a/ssh-ca b/ssh-ca
index 620e52e..0b9b929 100755
--- a/ssh-ca
+++ b/ssh-ca
@@ -7,20 +7,31 @@ usage () {
 }
 
 init () {
+    echo Initializing new CA.
     mkdir -p hosts users
-    ssh-keygen -qf CA -P /dev/null
+    ssh-keygen -qf CA -P "" -C ssh-ca
 }
 
 signuser () {
-    echo Not implemented.
+    echo "Signing user $1 key."
+    ssh-keygen -s CA -I "$1" -n "$1" "users/$1.pub"
 }
 
 signhost () {
-    echo Not implemented.
+    echo "Signing host $1 key."
+    ssh-keygen -s CA -I "$1" -h -n "$1" "hosts/$1.pub"
 }
 
 newhost () {
-    echo Not implemented.
+    echo "Creating new host $1 keypair."
+    ssh-keygen -qf "hosts/$1" -P "" -C "$1"
+    signhost "$1"
+}
+
+newuser () {
+    echo "Creating new user $1 keypair."
+    ssh-keygen -qf "users/$1" -P "" -C "$1"
+    signuser "$1"
 }
 
 if [ $# -lt 1 ]
@@ -42,6 +53,9 @@ case "$1" in
     newhost)
         newhost "$2"
         ;;
+    newuser)
+        newuser "$2"
+        ;;
     *)
         usage
         exit 1
-- 
GitLab