mirror of
https://github.com/valitydev/adapter-common-lib.git
synced 2024-11-06 02:05:18 +00:00
OPS-226: interface for secrets (#39)
This commit is contained in:
parent
98793ca223
commit
b69c9d8ded
@ -0,0 +1,4 @@
|
||||
package dev.vality.adapter.common.exception;
|
||||
|
||||
public class SecretNotFoundException extends RuntimeException {
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
package dev.vality.adapter.common.exception;
|
||||
|
||||
public class SecretPathNotFoundException extends RuntimeException {
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package dev.vality.adapter.common.secret;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum DigestAlgorithms {
|
||||
MD5("MD5"),
|
||||
SHA256("SHA-256");
|
||||
|
||||
private final String name;
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package dev.vality.adapter.common.secret;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum HmacAlgorithms {
|
||||
HMAC_MD5("HmacMD5"),
|
||||
HMAC_SHA_1("HmacSHA1"),
|
||||
HMAC_SHA_256("HmacSHA256"),
|
||||
HMAC_SHA_512("HmacSHA512");
|
||||
|
||||
private final String name;
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package dev.vality.adapter.common.secret;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Идентификатор секрета в vault
|
||||
* path - путь, по которому в vault хранятся секреты одного терминала. Хранится в options платежа.
|
||||
* key - ключ секрета в vault по указанному пути
|
||||
* Например, SecretRef{'tinkoff-merchant-882347345', 'PASSWORD'}
|
||||
*/
|
||||
|
||||
@Data
|
||||
public class SecretRef {
|
||||
private String path;
|
||||
private String key;
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
package dev.vality.adapter.common.secret;
|
||||
|
||||
import dev.vality.adapter.common.exception.SecretNotFoundException;
|
||||
import dev.vality.adapter.common.exception.SecretPathNotFoundException;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface SecretService {
|
||||
|
||||
/** Возвращает все секреты по заданному пути (по смыслу терминала)
|
||||
* @param path - путь, по которому в vault хранятся секреты одного терминала. Хранится в options платежа.
|
||||
* @return - kv всех секретов этого терминала, например {'TERMINAL_ID':'user11', 'PASSWORD':'Parolec1'}
|
||||
* @throws SecretPathNotFoundException если путь не найден
|
||||
*/
|
||||
Map<String, SecretValue> getSecrets(String path) throws SecretPathNotFoundException;
|
||||
|
||||
/**
|
||||
* Возвращает конкретный секрет из kv
|
||||
* @param secretRef Идентификатор секрета, например, SecretRef{'tinkoff-merchant-882347345', 'PASSWORD'}
|
||||
* @return Возвращает секрет
|
||||
* @throws SecretNotFoundException если секрет не найден
|
||||
*/
|
||||
SecretValue getSecret(SecretRef secretRef) throws SecretNotFoundException;
|
||||
|
||||
/**
|
||||
* Возвращает hex-encoded hmac-подпись data
|
||||
* @param data Данные для подписи, например, invoiceId=123&amount=222
|
||||
* @param secretRef Идентификатор секрета, например, SecretRef{'tinkoff-merchant-882347345', 'PASSWORD'}
|
||||
* @param hmacAlgorithm Алгоритм подписи, например, HmacSHA256
|
||||
* @return Возвращает подпись
|
||||
* @throws SecretNotFoundException если секрет не найден
|
||||
*/
|
||||
String hmac(String data, SecretRef secretRef, HmacAlgorithms hmacAlgorithm) throws SecretNotFoundException;
|
||||
|
||||
/**
|
||||
* Возвращает hex-encoded хэш от data + secret
|
||||
* @param data Данные для подписи, например, invoiceId=123&amount=222
|
||||
* @param secretRef Идентификатор секрета, например, SecretRef{'tinkoff-merchant-882347345', 'PASSWORD'}
|
||||
* @param digestAlgorithm Алгоритм хэширования, например, MD5
|
||||
* @return Возвращает подпись
|
||||
* @throws SecretNotFoundException если секрет не найден
|
||||
*/
|
||||
String digest(String data, SecretRef secretRef, DigestAlgorithms digestAlgorithm) throws SecretNotFoundException;
|
||||
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package dev.vality.adapter.common.secret;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
|
||||
@Data
|
||||
public class SecretValue {
|
||||
@ToString.Exclude
|
||||
private String value;
|
||||
}
|
Loading…
Reference in New Issue
Block a user