{"version":3,"file":"jwkThumbprint.mjs","names":[],"sources":["../../../../src/modules/kms/jwk/jwkThumbprint.ts"],"sourcesContent":["import { Hasher, type HashName } from '../../../crypto/hashes/Hasher'\nimport { TypedArrayEncoder } from '../../../utils'\nimport { zParseWithErrorHandling } from '../../../utils/zod'\nimport { type KmsJwkPublic, zKmsJwkPublic } from './knownJwk'\n\nexport const zJwkThumbprintComponents = zKmsJwkPublic.transform((data) => {\n  if (data.kty === 'EC') {\n    return { crv: data.crv, kty: data.kty, x: data.x, y: data.y }\n  }\n\n  if (data.kty === 'OKP') {\n    return { crv: data.crv, kty: data.kty, x: data.x }\n  }\n\n  if (data.kty === 'RSA') {\n    return { e: data.e, kty: data.kty, n: data.n }\n  }\n\n  if (data.kty === 'oct') {\n    return { k: data.k, kty: data.kty }\n  }\n\n  throw new Error('Unsupported kty')\n})\n\nexport interface CalculateJwkThumbprintOptions {\n  /**\n   * The jwk to calcualte the thumbprint for.\n   */\n  jwk: KmsJwkPublic\n\n  /**\n   * The hashing algorithm to use for calculating the thumbprint\n   */\n  hashAlgorithm: HashName\n}\n\nexport function calculateJwkThumbprint(options: CalculateJwkThumbprintOptions): Uint8Array {\n  const jwkThumbprintComponents = zParseWithErrorHandling(\n    zJwkThumbprintComponents,\n    options.jwk,\n    `Provided jwk does not match a supported jwk structure. Either the 'kty' is not supported, or required values are missing.`\n  )\n\n  const thumbprint = Hasher.hash(\n    TypedArrayEncoder.fromUtf8String(JSON.stringify(jwkThumbprintComponents)),\n    options.hashAlgorithm\n  )\n\n  return thumbprint\n}\n"],"mappings":";;;;;;;;;AAKA,MAAa,2BAA2B,cAAc,WAAW,SAAS;AACxE,KAAI,KAAK,QAAQ,KACf,QAAO;EAAE,KAAK,KAAK;EAAK,KAAK,KAAK;EAAK,GAAG,KAAK;EAAG,GAAG,KAAK;EAAG;AAG/D,KAAI,KAAK,QAAQ,MACf,QAAO;EAAE,KAAK,KAAK;EAAK,KAAK,KAAK;EAAK,GAAG,KAAK;EAAG;AAGpD,KAAI,KAAK,QAAQ,MACf,QAAO;EAAE,GAAG,KAAK;EAAG,KAAK,KAAK;EAAK,GAAG,KAAK;EAAG;AAGhD,KAAI,KAAK,QAAQ,MACf,QAAO;EAAE,GAAG,KAAK;EAAG,KAAK,KAAK;EAAK;AAGrC,OAAM,IAAI,MAAM,kBAAkB;EAClC;AAcF,SAAgB,uBAAuB,SAAoD;CACzF,MAAM,0BAA0B,wBAC9B,0BACA,QAAQ,KACR,4HACD;AAOD,QALmB,OAAO,KACxB,kBAAkB,eAAe,KAAK,UAAU,wBAAwB,CAAC,EACzE,QAAQ,cACT"}