Support RS256 algorithm in jwt command

This commit is contained in:
Hiroaki Nakamura 2016-11-21 18:56:50 +09:00
parent 9ed569b5d1
commit c5d6625a50
2 changed files with 17 additions and 2 deletions

View File

@ -6,8 +6,8 @@ the command line.
The following will create and sign a token, then verify it and output the original claims: The following will create and sign a token, then verify it and output the original claims:
echo {\"foo\":\"bar\"} | bin/jwt -key test/sample_key -alg RS256 -sign - | bin/jwt -key test/sample_key.pub -verify - echo {\"foo\":\"bar\"} | ./jwt -key ../../test/sample_key -alg RS256 -sign - | ./jwt -key ../../test/sample_key.pub -alg RS256 -verify -
To simply display a token, use: To simply display a token, use:
echo $JWT | jwt -show - echo $JWT | ./jwt -show -

View File

@ -126,6 +126,8 @@ func verifyToken() error {
} }
if isEs() { if isEs() {
return jwt.ParseECPublicKeyFromPEM(data) return jwt.ParseECPublicKeyFromPEM(data)
} else if isRs() {
return jwt.ParseRSAPublicKeyFromPEM(data)
} }
return data, nil return data, nil
}) })
@ -196,6 +198,15 @@ func signToken() error {
return err return err
} }
} }
} else if isRs() {
if k, ok := key.([]byte); !ok {
return fmt.Errorf("Couldn't convert key data to key")
} else {
key, err = jwt.ParseRSAPrivateKeyFromPEM(k)
if err != nil {
return err
}
}
} }
if out, err := token.SignedString(key); err == nil { if out, err := token.SignedString(key); err == nil {
@ -243,3 +254,7 @@ func showToken() error {
func isEs() bool { func isEs() bool {
return strings.HasPrefix(*flagAlg, "ES") return strings.HasPrefix(*flagAlg, "ES")
} }
func isRs() bool {
return strings.HasPrefix(*flagAlg, "RS")
}