implemented EncryptedKeyStore

for this to work, the KeyStorage interface had to be extended

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2024-09-29 00:16:56 +02:00
parent 32f773c184
commit 9ea6148583
10 changed files with 141 additions and 44 deletions

View File

@@ -3,11 +3,19 @@ package de.srsoftware.oidc.api;
import java.io.IOException;
import java.util.List;
import org.jose4j.jwk.JsonWebKey;
import org.jose4j.jwk.PublicJsonWebKey;
import org.jose4j.lang.JoseException;
public interface KeyStorage {
public KeyStorage drop(String keyId);
public List<String> listKeys();
public PublicJsonWebKey load(String keyId) throws IOException, KeyManager.KeyCreationException;
public KeyStorage store(PublicJsonWebKey jsonWebKey) throws IOException;
public KeyStorage drop(String keyId);
public List<String> listKeys();
public default PublicJsonWebKey load(String keyId) throws IOException, JoseException {
return PublicJsonWebKey.Factory.newPublicJwk(loadJson(keyId));
}
public String loadJson(String keyId) throws IOException;
public KeyStorage store(String keyId, String json) throws IOException;
public default KeyStorage store(PublicJsonWebKey key) throws IOException {
return store(key.getKeyId(), key.toJson(JsonWebKey.OutputControlLevel.INCLUDE_PRIVATE));
}
}