pl.allegro.tech.hermes.domain.NodePassword Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hermes-common Show documentation
Show all versions of hermes-common Show documentation
Fast and reliable message broker built on top of Kafka.
package pl.allegro.tech.hermes.domain;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.commons.codec.digest.DigestUtils;
import java.util.Arrays;
public class NodePassword {
private static final int DEFAULT_STRING_LENGTH = 12;
private final byte[] hashedPassword;
@JsonCreator
public NodePassword(@JsonProperty("hashedPassword") byte[] hashedPassword) {
this.hashedPassword = Arrays.copyOf(hashedPassword, hashedPassword.length);
}
public NodePassword(String password) {
this.hashedPassword = NodePassword.hashString(password);
}
public byte[] getHashedPassword() {
return Arrays.copyOf(hashedPassword, hashedPassword.length);
}
private static byte[] hashString(String string) {
return DigestUtils.sha256(string);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null) {
return false;
}
if (o instanceof String) {
return this.equals(NodePassword.fromString((String) o));
}
if (getClass() != o.getClass()) {
return false;
}
NodePassword that = (NodePassword) o;
return Arrays.equals(hashedPassword, that.hashedPassword);
}
@Override
public int hashCode() {
return Arrays.hashCode(hashedPassword);
}
public static NodePassword fromString(String string) {
return new NodePassword(string);
}
}