java.security.spec.InvalidKeySpecException: encoded key spec not recognized: Bad sequence size: 3
See original GitHub issueHi,
I am trying to validate jwt token for azure ad. I have the public key as below:
val pubkey= "-----BEGIN CERTIFICATE-----\nMIIDBTCCAe2gAwIBAgIQZSAeaqWig4BHC1ksmNNcgjANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDEyJhY2NvdW50cy5hY2Nlc3Njb250cm9sLndpbmRvd3MubmV0MB4XDTE3MDUwNjAwMDAwMFoXDTE5MDUwNzAwMDAwMFowLTErMCkGA1UEAxMiYWNjb3VudHMuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJL7dVZkeJ8JDTPIzFNMJo9oEkvDc52zrdqWSOmex0E/3rBe1tfRmUe2O9l6NYuc10QzPaNxnkyIwa5698suNUPxGlEOwvm/h5oPeFcuxAWcgYYv5s589HWFrNjCF8EfOjZ4vU5oE1744EzxdmBiaGbeE8HDBXn1vK4owlcjawgQNF7KQ6LjSWr7xtARDF2IoKE4RYy0V0uVN4eAQ3zWRWWUt3cpYjTl34EZ9pO6CE8/If7noj75g0RYd/AHkIMdXBC4SlnNz+boLbba2ksIB+5z9jVILjvZwqx7i+k2filqZkVmasB/o2ChUFbdwg6c8DTOlyS/qB25dcfoCN2GF+cCAwEAAaMhMB8wHQYDVR0OBBYEFGKpXQNrF5IoxS6bL4F92+gxOJlIMA0GCSqGSIb3DQEBCwUAA4IBAQA3HgW5SoHlvvQVxqqi+mtscDZLhNfe13iG/nx8Er5il82b79RVydNs+f9sYxc4T4ctnrZu7x5e7jInJedNdAlrPorBdw+SfvKJsmiNndXugMew1FlcQTQVIFDCbziaJav8rKyMxPfeKkc1aixbajWZkKg6OPmmJn2ceTocbn8PMQy20xNvcWUwgF5FZZIuPqu6feOLJcUIYw+0JFZ265xka30QXpmytcIxajIzpD4PRdCIBuVSqgXacAs4t4+w+OhnosD72yvXck8M4GwX1j+vcuyw0yhDGNMmqsHWP7H3jnJiGDrKhhdVyplzDhTfv2Whbv/dIDn+meLE3yyC5yGL\n-----END CERTIFICATE-----"
when I try to validate the token using Jwt.validate(token,pubkey, Seq(JwtAlgorithm.RS256))
I get the following stacktrace
java.security.spec.InvalidKeySpecException: encoded key spec not recognized: Bad sequence size: 3
at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source)
at org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi.engineGeneratePublic(Unknown Source)
at java.security.KeyFactory.generatePublic(KeyFactory.java:328)
at pdi.jwt.JwtUtils$.parsePublicKey(JwtUtils.scala:114)
at pdi.jwt.JwtUtils$.verify(JwtUtils.scala:187)
at pdi.jwt.JwtCore$$anonfun$validate$2.apply(Jwt.scala:654)
at pdi.jwt.JwtCore$$anonfun$validate$2.apply(Jwt.scala:653)
at pdi.jwt.JwtCore$class.validate(Jwt.scala:636)
at pdi.jwt.Jwt$.validate(Jwt.scala:23)
at pdi.jwt.JwtCore$class.validate(Jwt.scala:653)
at pdi.jwt.Jwt$.validate(Jwt.scala:23)
at pdi.jwt.JwtCore$class.validate(Jwt.scala:722)
at pdi.jwt.Jwt$.validate(Jwt.scala:23)
at pdi.jwt.JwtCore$class.validate(Jwt.scala:725)
at pdi.jwt.Jwt$.validate(Jwt.scala:23)
Is there anything I am doing incorrectly?
Issue Analytics
- State:
- Created 6 years ago
- Comments:9
I need to know how to do this to. How do I convert my publicKey as a string to PublicKey?
@yatharthsharma I was fighting this exact battle yesterday and never could figure out how to convert the string to a
PublicKey
; can you share any tips on that?I eventually had to fall back to using the modulus and exponent to manually construct an
RSAPublicKeySpec
.