Skip to content

Failed to decode JWT: Unsupported algorithm or incorrect key for HS256 Algorithm. #123

Open
@caffieneToCode

Description

@caffieneToCode

Hi @kylef
This library is removing HS256 algorithm by filtering it in verifiedAlgorithms in the snippet below.

func verifySignature(_ algorithms: [Algorithm], header: JOSEHeader, signingInput: String, signature: Data) throws {
  guard let alg = header.algorithm else {
    throw InvalidToken.decodeError("Missing Algorithm")
  }

  let verifiedAlgorithms = algorithms
    .filter { algorithm in algorithm.description == alg }
    .filter { algorithm in algorithm.verify(signingInput, signature: signature) }

  if verifiedAlgorithms.isEmpty {
    throw InvalidToken.invalidAlgorithm
  }
}

/// Verify a signature for a message using the algorithm

  func verify(_ message: String, signature: Data) -> Bool {
    return sign(message) == base64encode(signature)        // Because this returns false
  }

This works completely fine on jwt.io and the signature verifies correctly.
screenshot 2019-02-21 at 12 56 03 pm

Any Idea what went wrong here?
Because this works with other libraries..

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions