@@ -267,37 +267,6 @@ $(".panel-default .panel-heading").click(function() {
267267 }
268268 }
269269
270- var DEFAULT_HS_TOKEN = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ' ;
271-
272- var DEFAULT_RS_TOKEN = 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.EkN-DOsnsuRjRO6BxXemmJDm3HbxrbRzXglbN2S4sOkopdU4IsDxTI8jO19W_A4K8ZPJijNLis4EZsHeY559a4DFOd50_OqgHGuERTqYZyuhtF39yxJPAjUESwxk2J5k_4zM3O-vtd1Ghyo4IbqKKSy6J9mTniYJPenn5-HIirE' ;
273-
274- var DEFAULT_PUBLIC_RSA = "\
275- -----BEGIN PUBLIC KEY-----\n\
276- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd\
277- UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs\
278- HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D\
279- o2kQ+X5xK9cipRgEKwIDAQAB\n\
280- -----END PUBLIC KEY-----\
281- " ;
282-
283- var DEFAULT_PRIVATE_RSA = "\
284- -----BEGIN RSA PRIVATE KEY-----\n\
285- MIICWwIBAAKBgQDdlatRjRjogo3WojgGHFHYLugdUWAY9iR3fy4arWNA1KoS8kVw\
286- 33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQsHUfQrSDv+MuSUMAe8jzKE4qW\
287- +jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5Do2kQ+X5xK9cipRgEKwIDAQAB\
288- AoGAD+onAtVye4ic7VR7V50DF9bOnwRwNXrARcDhq9LWNRrRGElESYYTQ6EbatXS\
289- 3MCyjjX2eMhu/aF5YhXBwkppwxg+EOmXeh+MzL7Zh284OuPbkglAaGhV9bb6/5Cp\
290- uGb1esyPbYW+Ty2PC0GSZfIXkXs76jXAu9TOBvD0ybc2YlkCQQDywg2R/7t3Q2OE\
291- 2+yo382CLJdrlSLVROWKwb4tb2PjhY4XAwV8d1vy0RenxTB+K5Mu57uVSTHtrMK0\
292- GAtFr833AkEA6avx20OHo61Yela/4k5kQDtjEf1N0LfI+BcWZtxsS3jDM3i1Hp0K\
293- Su5rsCPb8acJo5RO26gGVrfAsDcIXKC+bQJAZZ2XIpsitLyPpuiMOvBbzPavd4gY\
294- 6Z8KWrfYzJoI/Q9FuBo6rKwl4BFoToD7WIUS+hpkagwWiz+6zLoX1dbOZwJACmH5\
295- fSSjAkLRi54PKJ8TFUeOP15h9sQzydI8zJU+upvDEKZsZc/UhT/SySDOxQ4G/523\
296- Y0sz/OZtSWcol/UMgQJALesy++GdvoIDLfJX5GBQpuFgFenRiRDabxrE9MNUZ2aP\
297- FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\
298- -----END RSA PRIVATE KEY-----\
299- " ;
300-
301270 var codeMirror = CodeMirror ;
302271
303272 function tabHack ( instance ) {
@@ -516,6 +485,8 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\
516485 var $algRadio = $ ( '.algorithm input[value="' + alg + '"]' ) ;
517486 $algRadio . prop ( 'checked' , true ) ;
518487
488+ $ ( '.algorithm option[value="' + alg + '"]' ) . prop ( 'selected' , true ) ;
489+
519490 fireEvent ( $algRadio . get ( 0 ) ) ;
520491 }
521492
@@ -650,7 +621,7 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\
650621 var privateKeyElement = $ ( 'textarea[name="private-key"]' ) ;
651622 var publicKeyElement = $ ( 'textarea[name="public-key"]' ) ;
652623
653- if ( algorithm === 'HS256' ) {
624+ if ( algorithm . indexOf ( 'HS' ) === 0 ) {
654625 return secretElement . val ( ) ;
655626 } else {
656627 return action === 'sign' ? privateKeyElement . val ( ) : publicKeyElement . val ( ) ;
@@ -661,34 +632,87 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\
661632 return algorithmRadios . filter ( ':checked' ) . val ( ) ;
662633 }
663634
635+ function checkDefaults ( requestedAlgorithm ) {
636+ requestedAlgorithm = requestedAlgorithm . toLowerCase ( ) ;
637+ var requestedDefaults = defaultTokens [ requestedAlgorithm ] ;
638+
639+ var token = getTrimmedValue ( tokenEditor ) ;
640+ if ( ! token ) {
641+ token = '' ;
642+ }
643+ for ( var alg in defaultTokens ) {
644+ if ( token === defaultTokens [ alg ] . token ) {
645+ if ( alg === requestedAlgorithm ) {
646+ break ;
647+ }
648+
649+ tokenEditor . setValue ( requestedDefaults . token ) ;
650+
651+ if ( requestedAlgorithm . indexOf ( 'hs' ) === 0 ) {
652+ var secretElement = $ ( 'input[name="secret"]' ) ;
653+
654+ secretElement . val ( requestedDefaults . secret ) ;
655+ } else {
656+ var publicKey = $ ( '.jwt-signature textarea[name=public-key]' ) ;
657+ var privateKey = $ ( '.jwt-signature textarea[name=private-key]' ) ;
658+
659+ publicKey . val ( requestedDefaults . publicKey ) ;
660+ privateKey . val ( requestedDefaults . privateKey ) ;
661+
662+ validateKey . apply ( publicKey ) ;
663+ validateKey . apply ( privateKey ) ;
664+ }
665+
666+ break ;
667+ }
668+ }
669+ }
670+
671+ function updateHeader ( algorithm ) {
672+ var headerStr = getTrimmedValue ( headerEditor ) ;
673+ try {
674+ var header = JSON . parse ( headerStr ) ;
675+ header . alg = algorithm ;
676+ headerEditor . setValue ( JSON . stringify ( header , null , 2 ) ) ;
677+ } catch ( e ) {
678+ //Ignore this, we may have garbage in the editor.
679+ }
680+ }
681+
664682 function updateAlgorithm ( ) {
665683 var algorithm = algorithmRadios . filter ( ':checked' ) . val ( ) ;
684+ var algoType = algorithm . substr ( 0 , 2 ) ;
685+ var algoSize = algorithm . substr ( 2 , 3 ) ;
666686
667687 $ ( '.js-input' ) . attr ( 'data-alg' , algorithm ) ;
668688
669- $ ( '.jwt-signature pre' )
689+ if ( algoType === 'HS' ) {
690+ $ ( '#hmacsha-text' ) . text ( 'HMACSHA' + algoSize ) ;
691+
692+ $ ( '.jwt-signature pre' )
670693 . hide ( )
671- . filter ( '.' + algorithm )
694+ . filter ( '.HS256' )
695+ . show ( ) ;
696+ } else {
697+ var texts = {
698+ RS : 'RSASHA' ,
699+ PS : 'RSAPSSSHA' ,
700+ ES : 'ECDSASHA'
701+ } ;
702+ $ ( '#rsasha-text' ) . text ( texts [ algoType ] + algoSize ) ;
703+
704+ $ ( '.jwt-signature pre' )
705+ . hide ( )
706+ . filter ( '.RS256' )
672707 . show ( ) ;
673-
674- if ( getTokenType ( ) === 'id_token' && getTrimmedValue ( tokenEditor ) === DEFAULT_HS_TOKEN &&
675- algorithm === 'RS256' ) {
676- setDefaultsForRSA ( ) ;
677- } else if ( getTokenType ( ) === 'id_token' && getTrimmedValue ( tokenEditor ) === DEFAULT_RS_TOKEN &&
678- algorithm === 'HS256' ) {
679- setDefaultsForHMAC ( ) ;
680708 }
681- }
682709
683- function setDefaultsForRSA ( ) {
684- tokenEditor . setValue ( DEFAULT_RS_TOKEN ) ;
685-
686- $ ( '.jwt-signature textarea[name=public-key]' ) . val ( DEFAULT_PUBLIC_RSA ) ;
687- $ ( '.jwt-signature textarea[name=private-key]' ) . val ( DEFAULT_PRIVATE_RSA ) ;
688- }
710+ checkDefaults ( algorithm ) ;
711+ updateHeader ( algorithm ) ;
689712
690- function setDefaultsForHMAC ( ) {
691- tokenEditor . setValue ( DEFAULT_HS_TOKEN ) ;
713+ if ( window . matchMedia ( '(min-width: 768px)' ) . matches ) {
714+ autoHeightInput ( ) ;
715+ }
692716 }
693717
694718 function updateToken ( ) {
@@ -714,12 +738,6 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\
714738 var $textarea = $ ( this ) ;
715739 var valid = window . isValidKey ( $textarea . val ( ) ) ;
716740
717- /*if($textarea.prop('name') === 'public-key') {
718- valid = /-----BEGIN (PUBLIC KEY|CERTIFICATE)-----(.|\n)*-----END (PUBLIC KEY|CERTIFICATE)-----/.test($textarea.val());
719- } else {
720- valid = /-----BEGIN RSA PRIVATE KEY-----(.|\n)*-----END RSA PRIVATE KEY-----/.test($textarea.val());
721- }*/
722-
723741 if ( valid . valid ) {
724742 $textarea . removeClass ( 'error' ) ;
725743 $textarea . val ( valid . key ) ;
@@ -792,7 +810,7 @@ FaFp+DyAe+b4nDwuJaW2LURbr8AEZga7oQj0uYxcYw==\n\
792810 }
793811
794812 loadFromStorage ( function ( jwt ) {
795- lastRestoredToken = jwt || DEFAULT_HS_TOKEN ;
813+ lastRestoredToken = jwt || defaultTokens . hs256 . token ;
796814
797815 tokenEditor . setValue (
798816 lastRestoredToken
0 commit comments