io.contek.invoker.security.SimpleCredential Maven / Gradle / Ivy
package io.contek.invoker.security;
import com.google.common.collect.ImmutableMap;
import com.google.common.io.BaseEncoding;
import javax.annotation.concurrent.Immutable;
import static com.google.common.base.Charsets.UTF_8;
@Immutable
public final class SimpleCredential implements ICredential {
private final ApiKey apiKey;
private final SecretKeyAlgorithm algorithm;
private final BaseEncoding encoding;
SimpleCredential(ApiKey apiKey, SecretKeyAlgorithm algorithm, BaseEncoding encoding) {
this.apiKey = apiKey;
this.algorithm = algorithm;
this.encoding = encoding;
}
@Override
public boolean isAnonymous() {
return false;
}
@Override
public String getApiKeyId() {
return apiKey.getId();
}
@Override
public SecretKeyAlgorithm getAlgorithm() {
return algorithm;
}
@Override
public ImmutableMap getProperties() {
return apiKey.getProperties();
}
@Override
public final String sign(String payload) {
return encoding.encode(algorithm.setupMac(apiKey.getSecret()).doFinal(payload.getBytes(UTF_8)));
}
}