UNPKG

@credo-ts/core

Version:

<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1

1 lines • 5.54 kB
{"version":3,"file":"knownJwk.mjs","names":["z"],"sources":["../../../../src/modules/kms/jwk/knownJwk.ts"],"sourcesContent":["import { z } from 'zod'\nimport { zParseWithErrorHandling } from '../../../utils/zod'\nimport { KeyManagementError } from '../error/KeyManagementError'\nimport type {\n KmsCreateKeyType,\n KmsCreateKeyTypeEc,\n KmsCreateKeyTypeOct,\n KmsCreateKeyTypeOkp,\n KmsCreateKeyTypeRsa,\n} from '../options'\nimport {\n type KmsJwkPrivateEc,\n type KmsJwkPublicEc,\n zKmsJwkPrivateEc,\n zKmsJwkPrivateToPublicEc,\n zKmsJwkPublicEc,\n} from './kty/ec/ecJwk'\nimport {\n type KmsJwkPrivateOct,\n type KmsJwkPublicOct,\n zKmsJwkPrivateOct,\n zKmsJwkPrivateToPublicOct,\n zKmsJwkPublicOct,\n} from './kty/oct/octJwk'\nimport {\n type KmsJwkPrivateOkp,\n type KmsJwkPublicOkp,\n zKmsJwkPrivateOkp,\n zKmsJwkPrivateToPublicOkp,\n zKmsJwkPublicOkp,\n} from './kty/okp/okpJwk'\nimport {\n type KmsJwkPrivateRsa,\n type KmsJwkPublicRsa,\n zKmsJwkPrivateRsa,\n zKmsJwkPrivateToPublicRsa,\n zKmsJwkPublicRsa,\n} from './kty/rsa/rsaJwk'\n\nexport const zKmsJwkPublicAsymmetric = z.discriminatedUnion('kty', [\n zKmsJwkPublicEc,\n zKmsJwkPublicRsa,\n zKmsJwkPublicOkp,\n])\nexport type KmsJwkPublicAsymmetric = z.output<typeof zKmsJwkPublicAsymmetric>\n\nexport function isJwkAsymmetric(\n jwk: KmsJwkPublic | KmsJwkPrivate\n): jwk is KmsJwkPrivateAsymmetric | KmsJwkPublicAsymmetric {\n return jwk.kty !== 'oct'\n}\n\nexport function assertJwkAsymmetric(\n jwk: KmsJwkPublic | KmsJwkPrivate,\n keyId?: string\n): asserts jwk is KmsJwkPublicAsymmetric | KmsJwkPrivateAsymmetric {\n if (!isJwkAsymmetric(jwk)) {\n if (keyId) {\n throw new KeyManagementError(`Expected jwk with keyId ${keyId} to be an asymmetric jwk, but found kty 'oct'`)\n }\n throw new KeyManagementError(\"Expected jwk to be an asymmetric jwk, but found kty 'oct'\")\n }\n}\n\nexport const zKmsJwkPublicCrv = z.discriminatedUnion('kty', [zKmsJwkPublicEc, zKmsJwkPublicOkp])\nexport type KmsJwkPublicCrv = z.output<typeof zKmsJwkPublicCrv>\n\nexport const zKmsJwkPublic = z.discriminatedUnion('kty', [\n zKmsJwkPublicEc,\n zKmsJwkPublicRsa,\n zKmsJwkPublicOct,\n zKmsJwkPublicOkp,\n])\nexport type KmsJwkPublic = z.output<typeof zKmsJwkPublic>\n\nconst zKmsJwkPrivateToPublic = z\n .discriminatedUnion('kty', [\n zKmsJwkPrivateToPublicEc,\n zKmsJwkPrivateToPublicRsa,\n zKmsJwkPrivateToPublicOct,\n zKmsJwkPrivateToPublicOkp,\n ])\n // Mdoc library does not work well with undefined values. It should not be needed\n // but for now it's the easiest approach\n .transform(\n (jwk): KmsJwkPublic =>\n Object.fromEntries(Object.entries(jwk).filter(([, value]) => value !== undefined)) as KmsJwkPublic\n )\n\nexport const zKmsJwkPrivateCrv = z.discriminatedUnion('kty', [zKmsJwkPrivateEc, zKmsJwkPrivateOkp])\nexport type KmsJwkPrivateCrv = z.output<typeof zKmsJwkPrivateCrv>\n\nexport const zKmsJwkPrivate = z.discriminatedUnion('kty', [\n zKmsJwkPrivateEc,\n zKmsJwkPrivateRsa,\n zKmsJwkPrivateOct,\n zKmsJwkPrivateOkp,\n])\nexport type KmsJwkPrivate = z.output<typeof zKmsJwkPrivate>\n\nexport const zKmsJwkPrivateAsymmetric = z.discriminatedUnion('kty', [\n zKmsJwkPrivateEc,\n zKmsJwkPrivateRsa,\n zKmsJwkPrivateOkp,\n])\nexport type KmsJwkPrivateAsymmetric = z.output<typeof zKmsJwkPrivateAsymmetric>\n\nexport function publicJwkFromPrivateJwk(privateJwk: KmsJwkPrivate | KmsJwkPublic): KmsJwkPublic {\n // This will remove any private properties\n return zParseWithErrorHandling(zKmsJwkPrivateToPublic, privateJwk)\n}\n\nexport type KmsJwkPrivateFromKmsJwkPublic<Type extends KmsCreateKeyType> = Type extends KmsCreateKeyTypeRsa\n ? KmsJwkPrivateRsa\n : Type extends KmsCreateKeyTypeOct\n ? KmsJwkPrivateOct\n : Type extends KmsCreateKeyTypeOkp\n ? KmsJwkPrivateOkp & { crv: Type['crv'] }\n : Type extends KmsCreateKeyTypeEc\n ? KmsJwkPrivateEc & { crv: Type['crv'] }\n : KmsJwkPrivate\n\nexport type KmsJwkPublicFromKmsJwkPrivate<Jwk extends KmsJwkPrivate> = Jwk extends KmsJwkPrivateRsa\n ? KmsJwkPublicRsa\n : Jwk extends KmsJwkPrivateOct\n ? KmsJwkPublicOct\n : Jwk extends KmsJwkPrivateOkp\n ? KmsJwkPublicOkp & { crv: Jwk['crv'] }\n : Jwk extends KmsJwkPrivateEc\n ? KmsJwkPublicEc & { crv: Jwk['crv'] }\n : KmsJwkPublic\n\nexport type KmsJwkPublicFromCreateType<Type extends KmsCreateKeyType> = Type extends KmsCreateKeyTypeRsa\n ? KmsJwkPublicRsa\n : Type extends KmsCreateKeyTypeOct\n ? KmsJwkPublicOct\n : Type extends KmsCreateKeyTypeOkp\n ? KmsJwkPublicOkp & { crv: Type['crv'] }\n : Type extends KmsCreateKeyTypeEc\n ? KmsJwkPublicEc & { crv: Type['crv'] }\n : KmsJwkPublic\n"],"mappings":";;;;;;;;AAuCA,MAAa,0BAA0BA,IAAE,mBAAmB,OAAO;CACjE;CACA;CACA;AACF,CAAC;AAGD,SAAgB,gBACd,KACyD;CACzD,OAAO,IAAI,QAAQ;AACrB;AAEA,SAAgB,oBACd,KACA,OACiE;CACjE,IAAI,CAAC,gBAAgB,GAAG,GAAG;EACzB,IAAI,OACF,MAAM,IAAI,mBAAmB,2BAA2B,MAAM,8CAA8C;EAE9G,MAAM,IAAI,mBAAmB,2DAA2D;CAC1F;AACF;AAEgCA,IAAE,mBAAmB,OAAO,CAAC,iBAAiB,gBAAgB,CAAC;AAG/F,MAAa,gBAAgBA,IAAE,mBAAmB,OAAO;CACvD;CACA;CACA;CACA;AACF,CAAC;AAGD,MAAM,yBAAyBA,IAC5B,mBAAmB,OAAO;CACzB;CACA;CACA;CACA;AACF,CAAC,CAAC,CAGD,WACE,QACC,OAAO,YAAY,OAAO,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAG,WAAW,UAAU,KAAA,CAAS,CAAC,CACrF;AAE+BA,IAAE,mBAAmB,OAAO,CAAC,kBAAkB,iBAAiB,CAAC;AAGlG,MAAa,iBAAiBA,IAAE,mBAAmB,OAAO;CACxD;CACA;CACA;CACA;AACF,CAAC;AAGuCA,IAAE,mBAAmB,OAAO;CAClE;CACA;CACA;AACF,CAAC;AAGD,SAAgB,wBAAwB,YAAwD;CAE9F,OAAO,wBAAwB,wBAAwB,UAAU;AACnE"}