From 049efb1eef4172eab5febe25715650331f3a11ae Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Fri, 22 Dec 2017 17:13:48 +0100 Subject: [PATCH] Add LSformRule :: ssh_pub_key --- doc/conf/LSattribute/check-data.docbook | 1 + .../LSattribute-check_data.entities.xml | 1 + .../check_data/ssh_pub_key.docbook | 10 ++++ .../class/class.LSformRule_ssh_pub_key.php | 48 +++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 doc/conf/LSattribute/check_data/ssh_pub_key.docbook create mode 100644 public_html/includes/class/class.LSformRule_ssh_pub_key.php diff --git a/doc/conf/LSattribute/check-data.docbook b/doc/conf/LSattribute/check-data.docbook index 6d7e5891..041906b3 100644 --- a/doc/conf/LSattribute/check-data.docbook +++ b/doc/conf/LSattribute/check-data.docbook @@ -64,6 +64,7 @@ règles. &conf-LSattribute-check-data-rangelength; &conf-LSattribute-check-data-regex; &conf-LSattribute-check-data-required; +&conf-LSattribute-check-data-ssh_pub_key; &conf-LSattribute-check-data-telephonenumber; diff --git a/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml b/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml index 4ac461fd..e13378e8 100644 --- a/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml +++ b/doc/conf/LSattribute/check_data/LSattribute-check_data.entities.xml @@ -19,4 +19,5 @@ + diff --git a/doc/conf/LSattribute/check_data/ssh_pub_key.docbook b/doc/conf/LSattribute/check_data/ssh_pub_key.docbook new file mode 100644 index 00000000..dfb019d2 --- /dev/null +++ b/doc/conf/LSattribute/check_data/ssh_pub_key.docbook @@ -0,0 +1,10 @@ + + ssh_pub_key + Cette règle vérifie que la valeur est une clé publique SSH. + Cette vérification utilise tout d'abord une expression régulière + pour valider la forme syntaxique de la clé publique + (ssh-[type] [clé au format base64] [commentaire]) puis + tente de décoder la partie en base64 de la clé pour vérifier qu'il s'agit + bien d'une chaine de caractères dans laquelle on retrouve bien le type de + la clé (ssh-[type]). + diff --git a/public_html/includes/class/class.LSformRule_ssh_pub_key.php b/public_html/includes/class/class.LSformRule_ssh_pub_key.php new file mode 100644 index 00000000..1a93ec53 --- /dev/null +++ b/public_html/includes/class/class.LSformRule_ssh_pub_key.php @@ -0,0 +1,48 @@ + + */ +class LSformRule_ssh_pub_key extends LSformRule { + + /** + * Validate SSH public key value + * + * @param string $values The value to validate + * @param array $options Validation options + * @param object $formElement The related formElement object + * + * @return boolean true if the value is valide, false if not + */ + function validate($value,$options,$formElement) { + if (preg_match('/^(ssh-[a-z0-9]+) +([^ ]+) +(.*)$/', $value, $m)) { + $data=@base64_decode($m[2]); + if (is_string($data) && strpos($data, $m[1])) + return true; + } + return false; + } + +}