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