Skip to content

Commit d3e1a7a

Browse files
committed
Add keygen permissions
1 parent 5f2fcdc commit d3e1a7a

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

src/main/kotlin/org/exploit/keeper/constant/Permission.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ object Permission {
1111
private const val STORE_WRITE = "bitkeeper.storage.write"
1212
private const val STORE_READ = "bitkeeper.storage.read"
1313

14+
private const val GENERATE_KEY = "bitkeeper.dkg.generate"
15+
1416
fun systemUnseal(): String = SYSTEM_UNSEAL
1517

1618
fun systemSeal(): String = SYSTEM_SEAL
@@ -21,6 +23,8 @@ object Permission {
2123

2224
fun storageRead(): String = STORE_READ
2325

26+
fun generateKey() = GENERATE_KEY
27+
2428
fun keyGetPublicKey(key: String): String = KEY_GET_PUBLICKEY.format(key)
2529

2630
fun keySign(key: String): String = KEY_SIGN.format(key)

src/main/kotlin/org/exploit/keeper/controller/keygen/KeyGenController.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,24 @@ package org.exploit.keeper.controller.keygen
33
import io.smallrye.mutiny.Uni
44
import jakarta.ws.rs.POST
55
import jakarta.ws.rs.Path
6+
import jakarta.ws.rs.container.ContainerRequestContext
67
import org.exploit.keeper.constant.KeeperCurve
8+
import org.exploit.keeper.constant.Permission
79
import org.exploit.keeper.model.request.Generate
10+
import org.exploit.keeper.service.auth.policy.MachinePolicyChecker
811
import org.exploit.keeper.service.keygen.starter.DKGenerator
912

1013
@Path("/v1/keeper/dkg")
11-
class KeyGenController(private val dkg: DKGenerator) {
14+
class KeyGenController(
15+
private val dkg: DKGenerator,
16+
private val policyChecker: MachinePolicyChecker,
17+
private val ctx: ContainerRequestContext
18+
) {
1219
@POST
1320
@Path("/generate")
1421
fun generate(body: Generate): Uni<Void> {
22+
policyChecker.ensureHasPermission(ctx, Permission.generateKey())
23+
1524
return dkg.generateKey(
1625
keyId = body.keyId,
1726
curve = KeeperCurve.fromName(body.curve),

src/main/kotlin/org/exploit/keeper/filter/MachineAuthFilter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ class MachineAuthFilter(
2121
private val matchers = listOf(
2222
AntPathMatcher.of("/v1/keeper/sign/**"),
2323
AntPathMatcher.of("/v1/keeper/publicKey/**"),
24-
AntPathMatcher.of("/v1/keeper/system/**")
24+
AntPathMatcher.of("/v1/keeper/system/**"),
25+
AntPathMatcher.of("/v1/keeper/dkg/**")
2526
)
2627

2728
override fun filter(ctx: ContainerRequestContext) {

0 commit comments

Comments
 (0)