Skip to content

Commit 01272cf

Browse files
afaranhaxek
authored andcommitted
Create Fernet keys
1 parent ee903c5 commit 01272cf

File tree

1 file changed

+33
-25
lines changed

1 file changed

+33
-25
lines changed

controllers/keystoneapi_controller.go

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1379,38 +1379,46 @@ func (r *KeystoneAPIReconciler) ensureFernetKeys(
13791379
//
13801380
secretName := keystone.ServiceName
13811381
secret, hash, err := oko_secret.GetSecret(ctx, helper, secretName, instance.Namespace)
1382+
13821383
if err != nil && !k8s_errors.IsNotFound(err) {
13831384
return err
1384-
} else if k8s_errors.IsNotFound(err) {
1385-
fernetKeys := map[string]string{
1386-
"CredentialKeys0": keystone.GenerateFernetKey(),
1387-
"CredentialKeys1": keystone.GenerateFernetKey(),
1388-
}
1389-
var numberKeys int
1390-
fmt.Sscan(instance.Spec.FernetMaxActiveKeys, &numberKeys)
1391-
for i := 0; i < numberKeys; i++ {
1392-
fernetKeys[fmt.Sprintf("FernetKeys%d", i)] = keystone.GenerateFernetKey()
1393-
}
1394-
1395-
tmpl := []util.Template{
1396-
{
1397-
Name: secretName,
1398-
Namespace: instance.Namespace,
1399-
Type: util.TemplateTypeNone,
1400-
CustomData: fernetKeys,
1401-
Labels: labels,
1402-
},
1403-
}
1404-
err := oko_secret.EnsureSecrets(ctx, helper, instance, tmpl, envVars)
1405-
if err != nil {
1406-
return err
1407-
}
14081385
} else {
14091386
// add hash to envVars
14101387
(*envVars)[secret.Name] = env.SetValue(hash)
14111388
}
14121389

1413-
// TODO: fernet key rotation
1390+
fernetKeys := map[string]string{
1391+
"CredentialKeys0": keystone.GenerateFernetKey(),
1392+
"CredentialKeys1": keystone.GenerateFernetKey(),
1393+
}
1394+
1395+
var numberKeys int
1396+
fmt.Sscan(instance.Spec.FernetMaxActiveKeys, &numberKeys)
1397+
1398+
for i := 0; i < numberKeys; i++ {
1399+
key := fmt.Sprintf("FernetKeys%d", i)
1400+
v, exists := secret.Data[key]
1401+
if exists {
1402+
fernetKeys[key] = string(v[:])
1403+
} else {
1404+
fernetKeys[key] = keystone.GenerateFernetKey()
1405+
}
1406+
}
1407+
1408+
tmpl := []util.Template{
1409+
{
1410+
Name: secretName,
1411+
Namespace: instance.Namespace,
1412+
Type: util.TemplateTypeNone,
1413+
CustomData: fernetKeys,
1414+
Labels: labels,
1415+
},
1416+
}
1417+
1418+
err = oko_secret.EnsureSecrets(ctx, helper, instance, tmpl, envVars)
1419+
if err != nil {
1420+
return err
1421+
}
14141422

14151423
return nil
14161424
}

0 commit comments

Comments
 (0)