aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/juick/SignatureManager.java
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2022-04-07 20:15:28 +0300
committerGravatar Vitaly Takmazov2022-04-08 15:17:01 +0300
commita77884b98032bde77cb3667da03809b2b9858de6 (patch)
tree1d3e0fe2e6815dd544d64f2f8d405b1ba9281ce9 /src/main/java/com/juick/SignatureManager.java
parent94d52e4e4022678bce895c4a567d1c9c9d01560a (diff)
ActivityPub: handle public key issues
Diffstat (limited to 'src/main/java/com/juick/SignatureManager.java')
-rw-r--r--src/main/java/com/juick/SignatureManager.java40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/main/java/com/juick/SignatureManager.java b/src/main/java/com/juick/SignatureManager.java
index 0c6acb4a..49c8c7dd 100644
--- a/src/main/java/com/juick/SignatureManager.java
+++ b/src/main/java/com/juick/SignatureManager.java
@@ -129,26 +129,30 @@ public class SignatureManager {
if (context.isPresent() && context.get() instanceof Actor) {
Actor actor = (Actor) context.get();
Key key = KeystoreManager.publicKeyOf(actor);
-
- Verifier verifier = new Verifier(key, signature);
- try {
- boolean result = verifier.verify(method, path, headers);
- if (result) {
- User user = new User();
- user.setUri(URI.create(actor.getId()));
- if (key.equals(keystoreManager.getPublicKey())) {
- return userService.getUserByName(actor.getName());
- }
- if (actor.isSuspended()) {
- logger.info("{} is suspended, deleting", actor.getId());
- applicationEventPublisher.publishEvent(new DeleteUserEvent(this, actor.getId()));
+ if (key != null) {
+ Verifier verifier = new Verifier(key, signature);
+ try {
+ boolean result = verifier.verify(method, path, headers);
+ if (result) {
+ User user = new User();
+ user.setUri(URI.create(actor.getId()));
+ if (key.equals(keystoreManager.getPublicKey())) {
+ return userService.getUserByName(actor.getName());
+ }
+ if (actor.isSuspended()) {
+ logger.info("{} is suspended, deleting", actor.getId());
+ applicationEventPublisher.publishEvent(new DeleteUserEvent(this, actor.getId()));
+ }
+ return user;
+ } else {
+ return AnonymousUser.INSTANCE;
}
- return user;
- } else {
- return AnonymousUser.INSTANCE;
+ } catch (NoSuchAlgorithmException | SignatureException | MissingRequiredHeaderException
+ | IOException e) {
+ logger.warn("Invalid signature {}: {}", signatureString, e.getMessage());
}
- } catch (NoSuchAlgorithmException | SignatureException | MissingRequiredHeaderException | IOException e) {
- logger.warn("Invalid signature {}: {}", signatureString, e.getMessage());
+ } else {
+ logger.warn("Unknown actor");
}
} else {
logger.warn("Unknown keyId");