diff --git a/TP3/src/main/java/authentication/AuthenticationService.java b/TP3/src/main/java/authentication/AuthenticationService.java
new file mode 100644
index 0000000000000000000000000000000000000000..fe90cd50ff3ad3c5e3ef3885ad910b7a78532d9c
--- /dev/null
+++ b/TP3/src/main/java/authentication/AuthenticationService.java
@@ -0,0 +1,6 @@
+package authentication;
+
+public interface AuthenticationService {
+    boolean isAMatch(String identifier, String autenthicationData);
+    Strength dataStrenth(String autenthicationData);
+}
diff --git a/TP3/src/main/java/authentication/Strength.java b/TP3/src/main/java/authentication/Strength.java
new file mode 100644
index 0000000000000000000000000000000000000000..be909d1f254944e3acddf3874ba8a59e3b1b0568
--- /dev/null
+++ b/TP3/src/main/java/authentication/Strength.java
@@ -0,0 +1,5 @@
+package authentication;
+
+public enum Strength {
+    VERY_WEAK, WEAK, REGULAR, STRONG
+}
diff --git a/TP3/src/main/java/interfacemanualmocking/AuthenticationByBiometryService.java b/TP3/src/main/java/interfacemanualmocking/AuthenticationByBiometryService.java
new file mode 100644
index 0000000000000000000000000000000000000000..aaa4ced0c74c423c43e46269405c83ca90e89a3d
--- /dev/null
+++ b/TP3/src/main/java/interfacemanualmocking/AuthenticationByBiometryService.java
@@ -0,0 +1,26 @@
+package interfacemanualmocking;
+
+import authentication.AuthenticationService;
+import authentication.Strength;
+
+public class AuthenticationByBiometryService  implements AuthenticationService {
+    private DirectoryInterface directory;
+    private StrengthEstimationServiceInterface strengthEstimationService;
+
+    public AuthenticationByBiometryService(DirectoryInterface directory, StrengthEstimationServiceInterface strengthEstimationService) {
+        this.directory = directory;
+        this.strengthEstimationService = strengthEstimationService;
+    }
+
+
+    @Override
+    public boolean isAMatch(String identifier, String autenthicationData) {
+        String match = directory.getMatch(identifier);
+        return match.equals(autenthicationData);
+    }
+
+    @Override
+    public Strength dataStrenth(String autenthicationData) {
+        return Strength.STRONG;
+    }
+}
diff --git a/TP3/src/main/java/interfacemanualmocking/AuthenticationByPasswordService.java b/TP3/src/main/java/interfacemanualmocking/AuthenticationByPasswordService.java
new file mode 100644
index 0000000000000000000000000000000000000000..e6ce7d3a8944bd460ccce8a11d866f521cd1ab15
--- /dev/null
+++ b/TP3/src/main/java/interfacemanualmocking/AuthenticationByPasswordService.java
@@ -0,0 +1,50 @@
+package interfacemanualmocking;
+
+import authentication.AuthenticationService;
+import authentication.Strength;
+
+public class AuthenticationByPasswordService implements AuthenticationService {
+    private DirectoryInterface directory;
+    private StrengthEstimationServiceInterface strengthEstimationService;
+
+    public AuthenticationByPasswordService(DirectoryInterface directory, StrengthEstimationServiceInterface strengthEstimationService) {
+        this.directory = directory;
+        this.strengthEstimationService = strengthEstimationService;
+    }
+
+
+    @Override
+    public boolean isAMatch(String identifier, String autenthicationData) {
+        String match = directory.getMatch(identifier);
+        return match.equals(autenthicationData);
+    }
+
+    @Override
+    public Strength dataStrenth(String autenthicationData) {
+        int datasize = autenthicationData.length();
+        int alphabetSize = 142;
+        int strength = strengthEstimationService.equivalentBitLength(alphabetSize,datasize)
+        if( strength >= 0 && strength <= 49 ) {
+            return Strength.VERY_WEAK;
+        }
+        if( strength >= 50 && strength <= 79 ) {
+            return Strength.WEAK;
+        }
+        if ( strength >= 80 && strength <= 99 ) {
+            return Strength.REGULAR;
+        }
+        if ( strength >= 100 ) {
+            return Strength.STRONG;
+        }
+}
+    private boolean isMatch(String identifier, String autenthicationData) {
+        String match = directory.getMatch(identifier);
+        return match.equals(autenthicationData);
+    }
+
+    //private StrengthEstimationServiceInterface dataStrenth(String autenthicationData) {
+     //   int alphabetSize = 0;
+       // int datasize = autenthicationData.length();
+        //return strengthEstimationService.equivalentBitLength(alphabetSize, datasize);
+    }
+
diff --git a/TP3/src/main/java/interfacemanualmocking/DirectoryInterface.java b/TP3/src/main/java/interfacemanualmocking/DirectoryInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..497fa6485c4b097d3a082a630708d5b2f2896ebf
--- /dev/null
+++ b/TP3/src/main/java/interfacemanualmocking/DirectoryInterface.java
@@ -0,0 +1,5 @@
+package interfacemanualmocking;
+
+public interface DirectoryInterface {
+    String getMatch(String identifier);
+}
diff --git a/TP3/src/main/java/interfacemanualmocking/StrengthEstimationServiceInterface.java b/TP3/src/main/java/interfacemanualmocking/StrengthEstimationServiceInterface.java
new file mode 100644
index 0000000000000000000000000000000000000000..2d99e4dc506102dbe989868decdb1a4ff5215ec5
--- /dev/null
+++ b/TP3/src/main/java/interfacemanualmocking/StrengthEstimationServiceInterface.java
@@ -0,0 +1,5 @@
+package interfacemanualmocking;
+
+public interface StrengthEstimationServiceInterface {
+    int equivalentBitLength(int alphabetSize, int datasize);
+}