diff --git a/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java b/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java
index 465b82b0dc3a484740d39c992ccaaba7754f91c2..8b6ef2b5c99690a91066af00de6d4de548aa6c01 100644
--- a/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java
+++ b/TD4/src/main/java/fr/miage23/filestore/api/validation/ValidationPattern.java
@@ -1,6 +1,7 @@
 package fr.miage23.filestore.api.validation;
 
 public class ValidationPattern {
-    public static final String FILE_PATTERN = "^[^*&%/\\~]+$";
+    // On interdit les caractères interdits par windows dans les noms de fichiers
+    public static final String FILE_PATTERN = "^[^\\/:*?\"<>|]+$";
 }
 
diff --git a/TD4/src/main/resources/ValidationMessages.properties b/TD4/src/main/resources/ValidationMessages.properties
index a58bc6359acb30ffa67e0ccf9b6d735185ef54da..dc0d43f4b21944c4c8ec8b96edc56ee4fbc56c0f 100644
--- a/TD4/src/main/resources/ValidationMessages.properties
+++ b/TD4/src/main/resources/ValidationMessages.properties
@@ -1 +1 @@
-invalid.filename=Le nom du fichier contient des caract�res interdits
+invalid.filename=The filename contains forbidden characters
diff --git a/keySSH b/keySSH
new file mode 100644
index 0000000000000000000000000000000000000000..d085c8b81e756aa71f829add405c99780ee738b2
--- /dev/null
+++ b/keySSH
@@ -0,0 +1,49 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+-----END OPENSSH PRIVATE KEY-----
diff --git a/keySSH.pub b/keySSH.pub
new file mode 100644
index 0000000000000000000000000000000000000000..5a590d0ca6011a9c455ca3066b48ff15660c5295
--- /dev/null
+++ b/keySSH.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDJS2AMJanGMui96I135vsFgWSYgIykbqGCbKFCK4iK2ijKY2rImH7x6aQb3tvIM9w2arF4qfP26ymXv/OGXj2CvpBaacqKBohkuZ+y40R1KSteG3gox0Q+lfJZCCL4YVYoaDNautYQJEjrfmQgtSx9g5B52chgGfYe/m4yon2MfqOIR1jEjiICgJlVv9xv9T6AYVfqP0CaAR3PCEnLn45R1QnWeD8aulCWqROniAGVSSXcb2Ly4mBBfdIoIpaKkDwnoud6B+EtVgMPHiuTvTeEyCSLNNh+MjuxtaG5pZ+3IZuanHHhYvTuQM7ic2h7kKq7mfzuqkWHfawsc6UPV7QU8l43i/3Rhkp6t+VPuvUKKJKIk2yCot8DD7fwoYZNpoh+Cs/hZh1NikGdjRGQ64oBEvrJZN1i7ZoCjABePFrUeQDekKIzYiJ6tp2IXwSzQr/XMyX59v9WRNhv3YSizMGd3A7hE83GnFw3r6WdmtIwfpS1Pc+DV8DIqk7xdbps+gMxueJrWK6/slXWu8D6qbKYlZZvz7CVWQvEPZLBW9kkW0Jbe+QHvCc6d0HHCcWyS4HbLl/TIKAKsWDwmxvH4m99WHXHrFcYk/B2VoDpiK7fni2SovgLJDWRHqR1wH1QrxR8wKGG/aZDc710mOpgF8kQOKL17Yv+OdjEfqYhVm2K3w== lb-c@LAPTOP-FAA3AURK