From 9020ad5d14889dfbad5a6666e08ba3962b5c65af Mon Sep 17 00:00:00 2001 From: Robert Novotny Date: Wed, 12 Feb 2020 00:56:58 +0100 Subject: [PATCH] Handle unclassified security context exceptions in validation UI --- .../github/novotnyr/idea/jwt/JwtPanel.java | 25 +++++++++++-------- .../idea/jwt/ui/secretpanel/SecretPanel.java | 11 ++++++++ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/github/novotnyr/idea/jwt/JwtPanel.java b/src/main/java/com/github/novotnyr/idea/jwt/JwtPanel.java index 2ae07a7..bc2611a 100644 --- a/src/main/java/com/github/novotnyr/idea/jwt/JwtPanel.java +++ b/src/main/java/com/github/novotnyr/idea/jwt/JwtPanel.java @@ -226,17 +226,20 @@ public void onCopyKeyAndValueMenuItemActionPerformed(@SuppressWarnings("unused") CopyPasteManagerEx.getInstanceEx().setContents(textTransferable); } - private void onValidateButtonClick(@SuppressWarnings("unused") ActionEvent e) { - JwtValidator jwtValidator = new JwtValidator(); - - SignatureContext secret = this.secretPanel.getSignatureContext(); - jwtValidator.validate(this.jwt, secret); - this.claimsTableModel.setClaimErrors(jwtValidator.getClaimErrors()); - if(jwtValidator.hasSignatureError()) { - this.secretPanel.notifySignatureErrors(jwtValidator.getSignatureError()); - } else { - this.secretPanel.notifySignatureValid(); - + private void onValidateButtonClick(@SuppressWarnings("unused") ActionEvent event) { + try { + JwtValidator jwtValidator = new JwtValidator(); + + SignatureContext secret = this.secretPanel.getSignatureContext(); + jwtValidator.validate(this.jwt, secret); + this.claimsTableModel.setClaimErrors(jwtValidator.getClaimErrors()); + if(jwtValidator.hasSignatureError()) { + this.secretPanel.notifySignatureErrors(jwtValidator.getSignatureError()); + } else { + this.secretPanel.notifySignatureValid(); + } + } catch (SignatureContextException e) { + this.secretPanel.notifySecurityContextException(e); } } diff --git a/src/main/java/com/github/novotnyr/idea/jwt/ui/secretpanel/SecretPanel.java b/src/main/java/com/github/novotnyr/idea/jwt/ui/secretpanel/SecretPanel.java index cc75828..e2c7d99 100644 --- a/src/main/java/com/github/novotnyr/idea/jwt/ui/secretpanel/SecretPanel.java +++ b/src/main/java/com/github/novotnyr/idea/jwt/ui/secretpanel/SecretPanel.java @@ -1,6 +1,7 @@ package com.github.novotnyr.idea.jwt.ui.secretpanel; import com.github.novotnyr.idea.jwt.SignatureContext; +import com.github.novotnyr.idea.jwt.SignatureContextException; import com.github.novotnyr.idea.jwt.validation.SignatureError; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.MessageType; @@ -49,6 +50,16 @@ public void notifyEmptySignature() { Balloon.Position.atRight); } + + public void notifySecurityContextException(SignatureContextException e) { + JBPopupFactory.getInstance() + .createHtmlTextBalloonBuilder("There is an issue with secret, private key or public key: " + e.getMessage(), MessageType.ERROR, null) + .setFadeoutTime(7500) + .createBalloon() + .show(RelativePoint.getNorthWestOf(getBaloonableComponent()), + Balloon.Position.atRight); + } + public JComponent getBaloonableComponent() { return getRoot(); }