Skip to content

Commit cc312dc

Browse files
committed
Add special permission for overwriting keys via DKG
1 parent 577dc77 commit cc312dc

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ object Permission {
1313

1414
private const val STORE_WRITE = "bitkeeper.storage.write"
1515
private const val GENERATE_KEY = "bitkeeper.dkg.generate"
16+
private const val GENERATE_KEY_OVERWRITE = "bitkeeper.dkg.generate.overwrite"
1617

1718
fun systemUnseal(): String = SYSTEM_UNSEAL
1819

@@ -24,6 +25,8 @@ object Permission {
2425

2526
fun generateKey() = GENERATE_KEY
2627

28+
fun generateKeyOverwrite() = GENERATE_KEY_OVERWRITE
29+
2730
fun systemStatus(): String = SYSTEM_STATUS
2831

2932
fun keyGetPublicKey(key: String): String = KEY_GET_PUBLICKEY.format(key)

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ class KeyGenController(
2222
fun generate(@NotNull body: Generate): Uni<Void> {
2323
policyChecker.ensureHasPermission(ctx, Permission.generateKey())
2424

25+
if (body.overwrite) {
26+
policyChecker.ensureHasPermission(ctx, Permission.generateKeyOverwrite())
27+
}
2528
return dkg.generateKey(
2629
keyId = body.keyId,
2730
curve = KeeperCurve.fromName(body.curve),

src/main/kotlin/org/exploit/keeper/model/key/KeyData.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,5 @@ data class KeyData(val name: String? = null, val permissions: List<String> = emp
88
}
99

1010
fun hasPermission(permission: String): Boolean =
11-
antPermissions.any {
12-
it.matches(permission)
13-
}
11+
antPermissions.any { it.matches(permission) } && antPermissions.none { it.matches("-$permission") }
1412
}

0 commit comments

Comments
 (0)