Merge pull request #183 from hnakamur/support_rs256_in_jwt_command

Support RS256 algorithm in jwt command
This commit is contained in:
Dave Grijalva 2017-02-01 14:58:49 -08:00 committed by GitHub
commit 2268707a8f
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

@ -134,6 +134,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
}) })
@ -218,6 +220,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 {
@ -265,3 +276,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")
}