// Path: src/main/java/com/thoughtworks/go/strongauth/authentication/HashProvider.java
// public interface HashProvider {
//     boolean validateHash(final String password, final PrincipalDetail principalDetail);
// 
//     boolean canHandle(String hashConfig);
// }
// 
// Path: src/main/java/com/thoughtworks/go/strongauth/authentication/PrincipalDetail.java
// @Value
// public class PrincipalDetail {
//     private final String username;
//     private final String passwordHash;
//     private final String salt;
//     private final String hashConfiguration;
// }


import com.thoughtworks.go.strongauth.authentication.HashProvider;
import com.thoughtworks.go.strongauth.authentication.PrincipalDetail;
import org.springframework.security.crypto.bcrypt.BCrypt;
package com.thoughtworks.go.strongauth.authentication.hash;


public class BCryptProvider implements HashProvider {
    @Override
// Path: src/main/java/com/thoughtworks/go/strongauth/authentication/HashProvider.java
// public interface HashProvider {
//     boolean validateHash(final String password, final PrincipalDetail principalDetail);
// 
//     boolean canHandle(String hashConfig);
// }
// 
// Path: src/main/java/com/thoughtworks/go/strongauth/authentication/PrincipalDetail.java
// @Value
// public class PrincipalDetail {
//     private final String username;
//     private final String passwordHash;
//     private final String salt;
//     private final String hashConfiguration;
// }


// Path: src/main/java/com/thoughtworks/go/strongauth/authentication/hash/BCryptProvider.java
import com.thoughtworks.go.strongauth.authentication.HashProvider;
import com.thoughtworks.go.strongauth.authentication.PrincipalDetail;
import org.springframework.security.crypto.bcrypt.BCrypt;

package com.thoughtworks.go.strongauth.authentication.hash;


public class BCryptProvider implements HashProvider {
    @Override
    public boolean validateHash(String password, PrincipalDetail principalDetail) {