import json

from hashlib import sha256
from util.canonicaljson import canonicalize

def canonical_kid(jwk):
  """This function returns the SHA256 hash of a canonical JWK.

  Args:
    jwk (object): the JWK for which a kid will be generated.

  Returns:
    string: the unique kid for the given JWK.

  """
  return sha256(json.dumps(canonicalize(jwk), separators=(',', ':'))).hexdigest()