@privateaim/kit 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/crypto/asymmetric/constants.d.ts +5 -0
  3. package/dist/crypto/asymmetric/constants.d.ts.map +1 -0
  4. package/dist/crypto/asymmetric/helpers.d.ts +5 -0
  5. package/dist/crypto/asymmetric/helpers.d.ts.map +1 -0
  6. package/dist/crypto/asymmetric/index.d.ts +5 -0
  7. package/dist/crypto/asymmetric/index.d.ts.map +1 -0
  8. package/dist/crypto/asymmetric/module.d.ts +14 -0
  9. package/dist/crypto/asymmetric/module.d.ts.map +1 -0
  10. package/dist/crypto/asymmetric/types.d.ts +3 -0
  11. package/dist/crypto/asymmetric/types.d.ts.map +1 -0
  12. package/dist/crypto/index.d.ts +3 -0
  13. package/dist/crypto/index.d.ts.map +1 -0
  14. package/dist/crypto/symmetric/index.d.ts +3 -0
  15. package/dist/crypto/symmetric/index.d.ts.map +1 -0
  16. package/dist/crypto/symmetric/module.d.ts +10 -0
  17. package/dist/crypto/symmetric/module.d.ts.map +1 -0
  18. package/dist/crypto/symmetric/types.d.ts +3 -0
  19. package/dist/crypto/symmetric/types.d.ts.map +1 -0
  20. package/dist/index.cjs +426 -0
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.mjs +421 -1
  25. package/dist/index.mjs.map +1 -1
  26. package/package.json +3 -3
  27. package/src/crypto/asymmetric/constants.ts +12 -0
  28. package/src/crypto/asymmetric/helpers.ts +58 -0
  29. package/src/crypto/asymmetric/index.ts +11 -0
  30. package/src/crypto/asymmetric/module.ts +190 -0
  31. package/src/crypto/asymmetric/types.ts +9 -0
  32. package/src/crypto/index.ts +9 -0
  33. package/src/crypto/symmetric/index.ts +9 -0
  34. package/src/crypto/symmetric/module.ts +71 -0
  35. package/src/crypto/symmetric/types.ts +10 -0
  36. package/src/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/domains/permission/constants.ts","../src/utils/boolean.ts","../src/utils/has-own-property.ts","../src/utils/error.ts","../src/utils/hex-checker.ts","../src/utils/hostname.ts","../src/utils/nanoid.ts","../src/utils/object-properties.ts","../src/utils/proxy-connection-string.ts","../src/utils/regex-patterns.ts","../src/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PermissionName {\n BUCKET_CREATE = 'bucket_create',\n BUCKET_UPDATE = 'bucket_update',\n BUCKET_DELETE = 'bucket_delete',\n\n PROJECT_CREATE = 'project_create',\n PROJECT_DELETE = 'project_delete',\n PROJECT_UPDATE = 'project_update',\n PROJECT_APPROVE = 'project_approve',\n\n REGISTRY_MANAGE = 'registry_manage',\n REGISTRY_PROJECT_MANAGE = 'registry_project_manage',\n\n NODE_CREATE = 'node_create',\n NODE_DELETE = 'node_delete',\n NODE_UPDATE = 'node_update',\n\n ANALYSIS_APPROVE = 'analysis_approve',\n ANALYSIS_UPDATE = 'analysis_update',\n ANALYSIS_CREATE = 'analysis_create',\n ANALYSIS_EXECUTION_START = 'analysis_execution_start',\n ANALYSIS_EXECUTION_STOP = 'analysis_execution_stop',\n ANALYSIS_DELETE = 'analysis_delete',\n ANALYSIS_RESULT_READ = 'analysis_result_read', // todo: this is maybe not required anymore\n\n MASTER_IMAGE_MANAGE = 'master_image_manage',\n MASTER_IMAGE_GROUP_MANAGE = 'master_image_group_manage',\n\n SERVICE_MANAGE = 'service_manage',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isBoolTrue<T = any>(input: T | boolean) : input is true {\n return typeof input === 'boolean' && !!input;\n}\n\nexport function isBoolFalse<T = any>(input: T | boolean) : input is false {\n return typeof input === 'boolean' && !input;\n}\n\nexport function isBool<T = any>(input: T | boolean) : input is boolean {\n return typeof input === 'boolean';\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from './has-own-property';\n\nexport function isError(e: unknown) {\n return typeof e === 'object' && e && hasOwnProperty(e, 'message');\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isHex(value: string) : boolean {\n return /^[A-Fa-f0-9]+$/i.test(value);\n}\n\nexport function hexToUTF8(value: string) {\n try {\n return decodeURIComponent(`%${value.match(/.{1,2}/g).join('%')}`);\n } catch (e) {\n if (e instanceof URIError) {\n return value;\n }\n\n throw e;\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function getHostNameFromString(value: string) : string {\n if (\n value.startsWith('http://') ||\n value.startsWith('https://')\n ) {\n const url = new URL(value);\n value = url.hostname;\n }\n\n return value;\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { customAlphabet } from 'nanoid';\n\nexport function createNanoID(alphabet?: string) : string;\nexport function createNanoID(len?: number) : string;\nexport function createNanoID(alphabet?: string, len?: number) : string;\nexport function createNanoID(alphabetOrLen?: string | number, len?: number) : string {\n if (typeof alphabetOrLen === 'string') {\n return customAlphabet(alphabetOrLen, len || 21)();\n }\n\n if (typeof alphabetOrLen === 'number') {\n return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', alphabetOrLen)();\n }\n\n return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', len || 21)();\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function nullifyEmptyObjectProperties<T extends Record<string, any>>(data: T) : T {\n const keys : (keyof T)[] = Object.keys(data);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (data[key] === '') {\n data[key] = null as T[keyof T];\n }\n }\n\n return data as T;\n}\n\nexport function deleteUndefinedObjectProperties<T extends Record<string, any>>(data: T) : T {\n const keys : string[] = Object.keys(data);\n\n for (let i = 0; i < keys.length; i++) {\n if (typeof data[keys[i]] === 'undefined') {\n delete data[keys[i]];\n }\n }\n\n return data;\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport type ProxyConnectionConfig = {\n protocol: 'http' | 'https',\n host: string,\n port: number,\n auth: {\n username: string,\n password: string,\n }\n};\n\nexport function parseProxyConnectionString(connectionStr: string) : ProxyConnectionConfig | undefined {\n const match = connectionStr\n .match(/(?:(https|http):\\/\\/)(?:(\\w+)(?::(\\w+))?@)?(?:([^:]+))(?::(\\d{1,5}))?$/);\n\n if (!match) {\n return undefined;\n }\n\n return {\n protocol: match[1] as 'http' | 'https',\n host: match[4],\n port: parseInt(match[5], 10),\n auth: {\n username: match[2],\n password: match[3],\n },\n };\n}\n\nexport function detectProxyConnectionConfig() : ProxyConnectionConfig | undefined {\n const envKeys = [\n 'https_proxy',\n 'HTTPS_PROXY',\n 'http_proxy',\n 'HTTP_PROXY',\n ];\n\n let result : string | undefined;\n\n for (let i = 0; i < envKeys.length; i++) {\n const envKey = envKeys[i];\n const envVal = process.env[envKey];\n\n if (\n envVal !== undefined &&\n envVal !== null\n ) {\n result = result || envVal;\n }\n }\n\n if (!result) {\n return undefined;\n }\n\n return parseProxyConnectionString(result);\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const alphaNumHyphenUnderscoreRegex = /^[a-z0-9-_]*$/;\nexport const registryRobotSecretRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d).{8,}$/;\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum EnvironmentName {\n TEST = 'test',\n DEVELOPMENT = 'development',\n PRODUCTION = 'production',\n}\n"],"names":["PermissionName","isBoolTrue","input","isBoolFalse","isBool","hasOwnProperty","obj","prop","Object","prototype","call","isObject","item","Array","isArray","isError","e","isHex","value","test","hexToUTF8","decodeURIComponent","match","join","URIError","getHostNameFromString","startsWith","url","URL","hostname","createNanoID","alphabetOrLen","len","customAlphabet","nullifyEmptyObjectProperties","data","keys","i","length","key","deleteUndefinedObjectProperties","parseProxyConnectionString","connectionStr","undefined","protocol","host","port","parseInt","auth","username","password","detectProxyConnectionConfig","envKeys","result","envKey","envVal","process","env","alphaNumHyphenUnderscoreRegex","registryRobotSecretRegex","EnvironmentName"],"mappings":";;;;AAAA;;;;;IAOO,IAAKA,cAAAA,iBAAAA,SAAAA,cAAAA,EAAAA;;;;;;;;;;;;;;;;;;;;;;;AAAAA,IAAAA,OAAAA,cAAAA,CAAAA;AA6BX,CAAA,CAAA,EAAA;;ACpCD;;;;;IAOO,SAASC,UAAAA,CAAoBC,KAAkB,EAAA;AAClD,IAAA,OAAO,OAAOA,KAAAA,KAAU,SAAa,IAAA,CAAC,CAACA,KAAAA,CAAAA;AAC3C,CAAA;AAEO,SAASC,YAAqBD,KAAkB,EAAA;IACnD,OAAO,OAAOA,KAAU,KAAA,SAAA,IAAa,CAACA,KAAAA,CAAAA;AAC1C,CAAA;AAEO,SAASE,OAAgBF,KAAkB,EAAA;AAC9C,IAAA,OAAO,OAAOA,KAAU,KAAA,SAAA,CAAA;AAC5B;;ACjBA;;;;;AAKC;AAGM,SAASG,cAAAA,CAAoDC,GAAM,EAAEC,IAAO,EAAA;AAC/E,IAAA,OAAOC,OAAOC,SAAS,CAACJ,cAAc,CAACK,IAAI,CAACJ,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;AACrD,CAAA;AAEO,SAASI,SAASC,IAAa,EAAA;IAClC,OACI,CAAC,CAACA,IACF,IAAA,OAAOA,SAAS,QAChB,IAAA,CAACC,KAAMC,CAAAA,OAAO,CAACF,IAAAA,CAAAA,CAAAA;AAEvB;;ACTO,SAASG,QAAQC,CAAU,EAAA;AAC9B,IAAA,OAAO,OAAOA,CAAAA,KAAM,QAAYA,IAAAA,CAAAA,IAAKX,eAAeW,CAAG,EAAA,SAAA,CAAA,CAAA;AAC3D;;ACXA;;;;;IAOO,SAASC,KAAAA,CAAMC,KAAa,EAAA;IAC/B,OAAO,iBAAA,CAAkBC,IAAI,CAACD,KAAAA,CAAAA,CAAAA;AAClC,CAAA;AAEO,SAASE,UAAUF,KAAa,EAAA;IACnC,IAAI;QACA,OAAOG,kBAAAA,CAAmB,CAAC,CAAC,EAAEH,KAAAA,CAAMI,KAAK,CAAC,SAAA,CAAA,CAAWC,IAAI,CAAC,GAAM,CAAA,CAAA,CAAA,CAAA,CAAA;AACpE,KAAA,CAAE,OAAOP,CAAG,EAAA;AACR,QAAA,IAAIA,aAAaQ,QAAU,EAAA;YACvB,OAAON,KAAAA,CAAAA;AACX,SAAA;QAEA,MAAMF,CAAAA,CAAAA;AACV,KAAA;AACJ;;ACrBA;;;;;IAOO,SAASS,qBAAAA,CAAsBP,KAAa,EAAA;AAC/C,IAAA,IACIA,MAAMQ,UAAU,CAAC,cACjBR,KAAMQ,CAAAA,UAAU,CAAC,UACnB,CAAA,EAAA;QACE,MAAMC,GAAAA,GAAM,IAAIC,GAAIV,CAAAA,KAAAA,CAAAA,CAAAA;AACpBA,QAAAA,KAAAA,GAAQS,IAAIE,QAAQ,CAAA;AACxB,KAAA;IAEA,OAAOX,KAAAA,CAAAA;AACX;;ACLO,SAASY,YAAAA,CAAaC,aAA+B,EAAEC,GAAY,EAAA;IACtE,IAAI,OAAOD,kBAAkB,QAAU,EAAA;QACnC,OAAOE,qBAAAA,CAAeF,eAAeC,GAAO,IAAA,EAAA,CAAA,EAAA,CAAA;AAChD,KAAA;IAEA,IAAI,OAAOD,kBAAkB,QAAU,EAAA;AACnC,QAAA,OAAOE,sBAAe,sCAAwCF,EAAAA,aAAAA,CAAAA,EAAAA,CAAAA;AAClE,KAAA;IAEA,OAAOE,qBAAAA,CAAe,wCAAwCD,GAAO,IAAA,EAAA,CAAA,EAAA,CAAA;AACzE;;ACtBA;;;;;IAOO,SAASE,4BAAAA,CAA4DC,IAAO,EAAA;IAC/E,MAAMC,IAAAA,GAAqB5B,MAAO4B,CAAAA,IAAI,CAACD,IAAAA,CAAAA,CAAAA;AAEvC,IAAA,IAAK,IAAIE,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAKE,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QAClC,MAAME,GAAAA,GAAMH,IAAI,CAACC,CAAE,CAAA,CAAA;AACnB,QAAA,IAAIF,IAAI,CAACI,GAAI,CAAA,KAAK,EAAI,EAAA;YAClBJ,IAAI,CAACI,IAAI,GAAG,IAAA,CAAA;AAChB,SAAA;AACJ,KAAA;IAEA,OAAOJ,IAAAA,CAAAA;AACX,CAAA;AAEO,SAASK,gCAA+DL,IAAO,EAAA;IAClF,MAAMC,IAAAA,GAAkB5B,MAAO4B,CAAAA,IAAI,CAACD,IAAAA,CAAAA,CAAAA;AAEpC,IAAA,IAAK,IAAIE,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAKE,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QAClC,IAAI,OAAOF,IAAI,CAACC,IAAI,CAACC,CAAE,CAAA,CAAC,KAAK,WAAa,EAAA;AACtC,YAAA,OAAOF,IAAI,CAACC,IAAI,CAACC,EAAE,CAAC,CAAA;AACxB,SAAA;AACJ,KAAA;IAEA,OAAOF,IAAAA,CAAAA;AACX;;AC9BA;;;;;IAiBO,SAASM,0BAAAA,CAA2BC,aAAqB,EAAA;IAC5D,MAAMpB,KAAAA,GAAQoB,aACTpB,CAAAA,KAAK,CAAC,wEAAA,CAAA,CAAA;AAEX,IAAA,IAAI,CAACA,KAAO,EAAA;QACR,OAAOqB,SAAAA,CAAAA;AACX,KAAA;IAEA,OAAO;QACHC,QAAUtB,EAAAA,KAAK,CAAC,CAAE,CAAA;QAClBuB,IAAMvB,EAAAA,KAAK,CAAC,CAAE,CAAA;AACdwB,QAAAA,IAAAA,EAAMC,QAASzB,CAAAA,KAAK,CAAC,CAAA,CAAE,EAAE,EAAA,CAAA;QACzB0B,IAAM,EAAA;YACFC,QAAU3B,EAAAA,KAAK,CAAC,CAAE,CAAA;YAClB4B,QAAU5B,EAAAA,KAAK,CAAC,CAAE,CAAA;AACtB,SAAA;AACJ,KAAA,CAAA;AACJ,CAAA;AAEO,SAAS6B,2BAAAA,GAAAA;AACZ,IAAA,MAAMC,OAAU,GAAA;AACZ,QAAA,aAAA;AACA,QAAA,aAAA;AACA,QAAA,YAAA;AACA,QAAA,YAAA;AACH,KAAA,CAAA;IAED,IAAIC,MAAAA,CAAAA;AAEJ,IAAA,IAAK,IAAIhB,CAAI,GAAA,CAAA,EAAGA,IAAIe,OAAQd,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;QACrC,MAAMiB,MAAAA,GAASF,OAAO,CAACf,CAAE,CAAA,CAAA;AACzB,QAAA,MAAMkB,MAASC,GAAAA,OAAAA,CAAQC,GAAG,CAACH,MAAO,CAAA,CAAA;QAElC,IACIC,MAAAA,KAAWZ,SACXY,IAAAA,MAAAA,KAAW,IACb,EAAA;AACEF,YAAAA,MAAAA,GAASA,MAAUE,IAAAA,MAAAA,CAAAA;AACvB,SAAA;AACJ,KAAA;AAEA,IAAA,IAAI,CAACF,MAAQ,EAAA;QACT,OAAOV,SAAAA,CAAAA;AACX,KAAA;AAEA,IAAA,OAAOF,0BAA2BY,CAAAA,MAAAA,CAAAA,CAAAA;AACtC;;AC/DA;;;;;IAOaK,MAAAA,6BAAAA,GAAgC,gBAAgB;AACtD,MAAMC,2BAA2B;;ACRxC;;;;;IAOO,IAAKC,eAAAA,iBAAAA,SAAAA,eAAAA,EAAAA;;;;AAAAA,IAAAA,OAAAA,eAAAA,CAAAA;AAIX,CAAA,CAAA,EAAA;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/crypto/asymmetric/constants.ts","../src/crypto/asymmetric/helpers.ts","../src/crypto/asymmetric/module.ts","../src/crypto/symmetric/module.ts","../src/domains/permission/constants.ts","../src/utils/boolean.ts","../src/utils/has-own-property.ts","../src/utils/error.ts","../src/utils/hex-checker.ts","../src/utils/hostname.ts","../src/utils/nanoid.ts","../src/utils/object-properties.ts","../src/utils/proxy-connection-string.ts","../src/utils/regex-patterns.ts","../src/constants.ts"],"sourcesContent":["/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AsymmetricCryptoAlgorithmName {\n RSA_OAEP = 'RSA-OAEP',\n\n ECDH = 'ECDH',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AsymmetricAlgorithmImportParams } from './types';\n\nfunction arrayBufferToBase64(arrayBuffer: ArrayBuffer): string {\n return btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));\n}\n\nexport async function exportAsymmetricPublicKey(key: CryptoKey): Promise<string> {\n const exported = await crypto.subtle.exportKey(\n 'spki',\n key,\n );\n\n return `-----BEGIN PUBLIC KEY-----\\n${arrayBufferToBase64(exported)}\\n-----END PUBLIC KEY-----`;\n}\n\nexport async function exportAsymmetricPrivateKey(key: CryptoKey): Promise<string> {\n const exported = await crypto.subtle.exportKey(\n 'pkcs8',\n key,\n );\n\n return `-----BEGIN PRIVATE KEY-----\\n${arrayBufferToBase64(exported)}\\n-----END PRIVATE KEY-----`;\n}\n\nexport async function importAsymmetricPublicKey(\n pem: string,\n params: AsymmetricAlgorithmImportParams,\n): Promise<CryptoKey> {\n const pemHeader = '-----BEGIN PUBLIC KEY-----';\n const pemFooter = '-----END PUBLIC KEY-----';\n const pemContents = pem.substring(pemHeader.length, pem.length - pemFooter.length);\n const buffer = Buffer.from(pemContents, 'base64');\n\n if (params.name === 'ECDH') {\n return crypto.subtle.importKey(\n 'spki',\n buffer,\n params,\n true,\n ['deriveKey'],\n );\n }\n\n return crypto.subtle.importKey(\n 'spki',\n buffer,\n params,\n true,\n ['encrypt'],\n );\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { AsymmetricCryptoAlgorithmName } from './constants';\nimport type { AsymmetricAlgorithmImportParams, AsymmetricAlgorithmParams } from './types';\nimport { exportAsymmetricPrivateKey, exportAsymmetricPublicKey } from './helpers';\n\nexport class CryptoAsymmetricAlgorithm {\n public readonly algorithm: AsymmetricAlgorithmParams;\n\n protected keyPair : CryptoKeyPair | undefined;\n\n constructor(algorithm: AsymmetricAlgorithmParams) {\n if (algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {\n algorithm = {\n ...algorithm,\n publicExponent: new Uint8Array([1, 0, 1]),\n };\n }\n\n this.algorithm = algorithm;\n }\n\n buildImportParams() : AsymmetricAlgorithmImportParams {\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {\n return {\n name: 'RSA-OAEP',\n hash: 'SHA-256',\n };\n }\n\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {\n return {\n name: 'ECDH',\n namedCurve: (this.algorithm as EcKeyGenParams).namedCurve,\n hash: 'SHA-256',\n };\n }\n\n throw new Error('Import params could not be created.');\n }\n\n async generateKeyPair() : Promise<CryptoKeyPair> {\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {\n this.keyPair = await crypto.subtle.generateKey(\n this.algorithm,\n true,\n ['encrypt', 'decrypt'],\n );\n\n return this.keyPair;\n }\n\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {\n this.keyPair = await crypto.subtle.generateKey(\n this.algorithm,\n true,\n ['deriveKey'],\n );\n\n return this.keyPair;\n }\n\n throw new Error('The algorithm is not supported for key generation.');\n }\n\n async useKeyPair(): Promise<CryptoKeyPair> {\n if (typeof this.keyPair !== 'undefined') {\n return this.keyPair;\n }\n\n return this.generateKeyPair();\n }\n\n async exportPublicKey(): Promise<string> {\n const keyPair = await this.useKeyPair();\n\n return exportAsymmetricPublicKey(keyPair.publicKey);\n }\n\n async exportPrivateKey(): Promise<string> {\n const keyPair = await this.useKeyPair();\n\n return exportAsymmetricPrivateKey(keyPair.privateKey);\n }\n\n async encrypt(data: Buffer, remoteKey?: CryptoKey) {\n const keyPair = await this.useKeyPair();\n\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {\n return crypto.subtle.encrypt(\n {\n name: 'RSA-OAEP',\n },\n remoteKey || keyPair.publicKey,\n data,\n );\n }\n\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {\n if (typeof remoteKey === 'undefined') {\n throw new Error('Remote public key is required.');\n }\n\n const array = new Uint8Array(16);\n const iv = crypto.getRandomValues(array);\n const key = await crypto.subtle.deriveKey(\n {\n name: 'ECDH',\n public: remoteKey,\n },\n keyPair.privateKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['encrypt'],\n );\n\n const arrayBuffer = await crypto.subtle.encrypt(\n {\n name: 'AES-GCM',\n length: 256,\n iv,\n },\n key,\n data,\n );\n\n const buffer = Buffer.from(arrayBuffer);\n\n return Buffer.concat([iv, buffer]);\n }\n\n throw new Error('Unsupported algorithm for encryption.');\n }\n\n async decrypt(data: Buffer, remoteKey?: CryptoKey) {\n const keyPair = await this.useKeyPair();\n\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {\n return crypto.subtle.decrypt(\n {\n name: 'RSA-OAEP',\n },\n keyPair.privateKey,\n data,\n );\n }\n\n if (this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {\n if (typeof remoteKey === 'undefined') {\n throw new Error('Remote public key is required.');\n }\n\n const iv = data.slice(0, 16);\n\n const key = await crypto.subtle.deriveKey(\n {\n name: 'ECDH',\n public: remoteKey,\n },\n keyPair.privateKey,\n {\n name: 'AES-GCM',\n length: 256,\n },\n true,\n ['decrypt'],\n );\n\n return crypto.subtle.decrypt(\n {\n name: 'AES-GCM',\n length: 256,\n iv,\n },\n key,\n data.slice(16),\n );\n }\n\n throw new Error('Unsupported algorithm for decryption.');\n }\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { SymmetricAlgorithmParams } from './types';\n\nexport class CryptoSymmetricAlgorithm {\n protected algorithm : SymmetricAlgorithmParams;\n\n constructor(algorithm: SymmetricAlgorithmParams) {\n this.algorithm = algorithm;\n }\n\n async generateKey() : Promise<CryptoKey> {\n return crypto.subtle.generateKey(\n {\n name: this.algorithm.name,\n length: 256,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n }\n\n async importKey(buffer: Buffer | ArrayBuffer) : Promise<CryptoKey> {\n return crypto.subtle.importKey(\n 'raw',\n buffer,\n {\n name: this.algorithm.name,\n length: 256,\n },\n true,\n ['encrypt', 'decrypt'],\n );\n }\n\n async encrypt(key: CryptoKey, iv: Buffer, data: Buffer) : Promise<Buffer> {\n const arrayBuffer = await crypto.subtle.encrypt(\n {\n name: this.algorithm.name,\n length: 256,\n iv,\n },\n key,\n data,\n );\n\n const buffer = Buffer.from(arrayBuffer);\n\n return Buffer.concat([iv, buffer]);\n }\n\n async decrypt(key: CryptoKey, data: Buffer) : Promise<Buffer> {\n const iv = data.slice(0, 16);\n const arrayBuffer = await crypto.subtle.decrypt(\n {\n name: this.algorithm.name,\n length: 256,\n iv,\n },\n key,\n data.slice(16),\n );\n\n return Buffer.from(arrayBuffer);\n }\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum PermissionName {\n BUCKET_CREATE = 'bucket_create',\n BUCKET_UPDATE = 'bucket_update',\n BUCKET_DELETE = 'bucket_delete',\n\n PROJECT_CREATE = 'project_create',\n PROJECT_DELETE = 'project_delete',\n PROJECT_UPDATE = 'project_update',\n PROJECT_APPROVE = 'project_approve',\n\n REGISTRY_MANAGE = 'registry_manage',\n REGISTRY_PROJECT_MANAGE = 'registry_project_manage',\n\n NODE_CREATE = 'node_create',\n NODE_DELETE = 'node_delete',\n NODE_UPDATE = 'node_update',\n\n ANALYSIS_APPROVE = 'analysis_approve',\n ANALYSIS_UPDATE = 'analysis_update',\n ANALYSIS_CREATE = 'analysis_create',\n ANALYSIS_EXECUTION_START = 'analysis_execution_start',\n ANALYSIS_EXECUTION_STOP = 'analysis_execution_stop',\n ANALYSIS_DELETE = 'analysis_delete',\n ANALYSIS_RESULT_READ = 'analysis_result_read', // todo: this is maybe not required anymore\n\n MASTER_IMAGE_MANAGE = 'master_image_manage',\n MASTER_IMAGE_GROUP_MANAGE = 'master_image_group_manage',\n\n SERVICE_MANAGE = 'service_manage',\n}\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isBoolTrue<T = any>(input: T | boolean) : input is true {\n return typeof input === 'boolean' && !!input;\n}\n\nexport function isBoolFalse<T = any>(input: T | boolean) : input is false {\n return typeof input === 'boolean' && !input;\n}\n\nexport function isBool<T = any>(input: T | boolean) : input is boolean {\n return typeof input === 'boolean';\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasOwnProperty<X extends {}, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n return (\n !!item &&\n typeof item === 'object' &&\n !Array.isArray(item)\n );\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from './has-own-property';\n\nexport function isError(e: unknown) {\n return typeof e === 'object' && e && hasOwnProperty(e, 'message');\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isHex(value: string) : boolean {\n return /^[A-Fa-f0-9]+$/i.test(value);\n}\n\nexport function hexToUTF8(value: string) {\n try {\n return decodeURIComponent(`%${value.match(/.{1,2}/g).join('%')}`);\n } catch (e) {\n if (e instanceof URIError) {\n return value;\n }\n\n throw e;\n }\n}\n","/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function getHostNameFromString(value: string) : string {\n if (\n value.startsWith('http://') ||\n value.startsWith('https://')\n ) {\n const url = new URL(value);\n value = url.hostname;\n }\n\n return value;\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { customAlphabet } from 'nanoid';\n\nexport function createNanoID(alphabet?: string) : string;\nexport function createNanoID(len?: number) : string;\nexport function createNanoID(alphabet?: string, len?: number) : string;\nexport function createNanoID(alphabetOrLen?: string | number, len?: number) : string {\n if (typeof alphabetOrLen === 'string') {\n return customAlphabet(alphabetOrLen, len || 21)();\n }\n\n if (typeof alphabetOrLen === 'number') {\n return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', alphabetOrLen)();\n }\n\n return customAlphabet('0123456789abcdefghijklmnopqrstuvwxyz', len || 21)();\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function nullifyEmptyObjectProperties<T extends Record<string, any>>(data: T) : T {\n const keys : (keyof T)[] = Object.keys(data);\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (data[key] === '') {\n data[key] = null as T[keyof T];\n }\n }\n\n return data as T;\n}\n\nexport function deleteUndefinedObjectProperties<T extends Record<string, any>>(data: T) : T {\n const keys : string[] = Object.keys(data);\n\n for (let i = 0; i < keys.length; i++) {\n if (typeof data[keys[i]] === 'undefined') {\n delete data[keys[i]];\n }\n }\n\n return data;\n}\n","/*\n * Copyright (c) 2021-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport type ProxyConnectionConfig = {\n protocol: 'http' | 'https',\n host: string,\n port: number,\n auth: {\n username: string,\n password: string,\n }\n};\n\nexport function parseProxyConnectionString(connectionStr: string) : ProxyConnectionConfig | undefined {\n const match = connectionStr\n .match(/(?:(https|http):\\/\\/)(?:(\\w+)(?::(\\w+))?@)?(?:([^:]+))(?::(\\d{1,5}))?$/);\n\n if (!match) {\n return undefined;\n }\n\n return {\n protocol: match[1] as 'http' | 'https',\n host: match[4],\n port: parseInt(match[5], 10),\n auth: {\n username: match[2],\n password: match[3],\n },\n };\n}\n\nexport function detectProxyConnectionConfig() : ProxyConnectionConfig | undefined {\n const envKeys = [\n 'https_proxy',\n 'HTTPS_PROXY',\n 'http_proxy',\n 'HTTP_PROXY',\n ];\n\n let result : string | undefined;\n\n for (let i = 0; i < envKeys.length; i++) {\n const envKey = envKeys[i];\n const envVal = process.env[envKey];\n\n if (\n envVal !== undefined &&\n envVal !== null\n ) {\n result = result || envVal;\n }\n }\n\n if (!result) {\n return undefined;\n }\n\n return parseProxyConnectionString(result);\n}\n","/*\n * Copyright (c) 2023-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport const alphaNumHyphenUnderscoreRegex = /^[a-z0-9-_]*$/;\nexport const registryRobotSecretRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d).{8,}$/;\n","/*\n * Copyright (c) 2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum EnvironmentName {\n TEST = 'test',\n DEVELOPMENT = 'development',\n PRODUCTION = 'production',\n}\n"],"names":["AsymmetricCryptoAlgorithmName","asyncGeneratorStep","arrayBufferToBase64","arrayBuffer","btoa","String","fromCharCode","apply","Uint8Array","exportAsymmetricPublicKey","key","_async_to_generator","exported","crypto","subtle","exportKey","exportAsymmetricPrivateKey","importAsymmetricPublicKey","pem","params","pemHeader","pemFooter","pemContents","substring","length","buffer","Buffer","from","name","importKey","CryptoAsymmetricAlgorithm","buildImportParams","algorithm","RSA_OAEP","hash","ECDH","namedCurve","Error","generateKeyPair","keyPair","generateKey","useKeyPair","exportPublicKey","publicKey","exportPrivateKey","privateKey","encrypt","data","remoteKey","array","iv","getRandomValues","deriveKey","public","concat","decrypt","slice","constructor","_define_property","publicExponent","CryptoSymmetricAlgorithm","PermissionName","isBoolTrue","input","isBoolFalse","isBool","hasOwnProperty","obj","prop","Object","prototype","call","isObject","item","Array","isArray","isError","e","isHex","value","test","hexToUTF8","decodeURIComponent","match","join","URIError","getHostNameFromString","startsWith","url","URL","hostname","createNanoID","alphabetOrLen","len","customAlphabet","nullifyEmptyObjectProperties","keys","i","deleteUndefinedObjectProperties","parseProxyConnectionString","connectionStr","undefined","protocol","host","port","parseInt","auth","username","password","detectProxyConnectionConfig","envKeys","result","envKey","envVal","process","env","alphaNumHyphenUnderscoreRegex","registryRobotSecretRegex","EnvironmentName"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './crypto';
1
2
  export * from './domains';
2
3
  export * from './utils';
3
4
  export * from './constants';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
package/dist/index.mjs CHANGED
@@ -1,5 +1,425 @@
1
1
  import { customAlphabet } from 'nanoid';
2
2
 
3
+ /*
4
+ * Copyright (c) 2024.
5
+ * Author Peter Placzek (tada5hi)
6
+ * For the full copyright and license information,
7
+ * view the LICENSE file that was distributed with this source code.
8
+ */ var AsymmetricCryptoAlgorithmName = /*#__PURE__*/ function(AsymmetricCryptoAlgorithmName) {
9
+ AsymmetricCryptoAlgorithmName["RSA_OAEP"] = "RSA-OAEP";
10
+ AsymmetricCryptoAlgorithmName["ECDH"] = "ECDH";
11
+ return AsymmetricCryptoAlgorithmName;
12
+ }({});
13
+
14
+ /*
15
+ * Copyright (c) 2024.
16
+ * Author Peter Placzek (tada5hi)
17
+ * For the full copyright and license information,
18
+ * view the LICENSE file that was distributed with this source code.
19
+ */ function asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, key, arg) {
20
+ try {
21
+ var info = gen[key](arg);
22
+ var value = info.value;
23
+ } catch (error) {
24
+ reject(error);
25
+ return;
26
+ }
27
+ if (info.done) {
28
+ resolve(value);
29
+ } else {
30
+ Promise.resolve(value).then(_next, _throw);
31
+ }
32
+ }
33
+ function _async_to_generator$2(fn) {
34
+ return function() {
35
+ var self = this, args = arguments;
36
+ return new Promise(function(resolve, reject) {
37
+ var gen = fn.apply(self, args);
38
+ function _next(value) {
39
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "next", value);
40
+ }
41
+ function _throw(err) {
42
+ asyncGeneratorStep$2(gen, resolve, reject, _next, _throw, "throw", err);
43
+ }
44
+ _next(undefined);
45
+ });
46
+ };
47
+ }
48
+ function arrayBufferToBase64(arrayBuffer) {
49
+ return btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));
50
+ }
51
+ function exportAsymmetricPublicKey(key) {
52
+ return _exportAsymmetricPublicKey.apply(this, arguments);
53
+ }
54
+ function _exportAsymmetricPublicKey() {
55
+ _exportAsymmetricPublicKey = _async_to_generator$2(function*(key) {
56
+ const exported = yield crypto.subtle.exportKey('spki', key);
57
+ return `-----BEGIN PUBLIC KEY-----\n${arrayBufferToBase64(exported)}\n-----END PUBLIC KEY-----`;
58
+ });
59
+ return _exportAsymmetricPublicKey.apply(this, arguments);
60
+ }
61
+ function exportAsymmetricPrivateKey(key) {
62
+ return _exportAsymmetricPrivateKey.apply(this, arguments);
63
+ }
64
+ function _exportAsymmetricPrivateKey() {
65
+ _exportAsymmetricPrivateKey = _async_to_generator$2(function*(key) {
66
+ const exported = yield crypto.subtle.exportKey('pkcs8', key);
67
+ return `-----BEGIN PRIVATE KEY-----\n${arrayBufferToBase64(exported)}\n-----END PRIVATE KEY-----`;
68
+ });
69
+ return _exportAsymmetricPrivateKey.apply(this, arguments);
70
+ }
71
+ function importAsymmetricPublicKey(pem, params) {
72
+ return _importAsymmetricPublicKey.apply(this, arguments);
73
+ }
74
+ function _importAsymmetricPublicKey() {
75
+ _importAsymmetricPublicKey = _async_to_generator$2(function*(pem, params) {
76
+ const pemHeader = '-----BEGIN PUBLIC KEY-----';
77
+ const pemFooter = '-----END PUBLIC KEY-----';
78
+ const pemContents = pem.substring(pemHeader.length, pem.length - pemFooter.length);
79
+ const buffer = Buffer.from(pemContents, 'base64');
80
+ if (params.name === 'ECDH') {
81
+ return crypto.subtle.importKey('spki', buffer, params, true, [
82
+ 'deriveKey'
83
+ ]);
84
+ }
85
+ return crypto.subtle.importKey('spki', buffer, params, true, [
86
+ 'encrypt'
87
+ ]);
88
+ });
89
+ return _importAsymmetricPublicKey.apply(this, arguments);
90
+ }
91
+
92
+ /*
93
+ * Copyright (c) 2024.
94
+ * Author Peter Placzek (tada5hi)
95
+ * For the full copyright and license information,
96
+ * view the LICENSE file that was distributed with this source code.
97
+ */ function asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, key, arg) {
98
+ try {
99
+ var info = gen[key](arg);
100
+ var value = info.value;
101
+ } catch (error) {
102
+ reject(error);
103
+ return;
104
+ }
105
+ if (info.done) {
106
+ resolve(value);
107
+ } else {
108
+ Promise.resolve(value).then(_next, _throw);
109
+ }
110
+ }
111
+ function _async_to_generator$1(fn) {
112
+ return function() {
113
+ var self = this, args = arguments;
114
+ return new Promise(function(resolve, reject) {
115
+ var gen = fn.apply(self, args);
116
+ function _next(value) {
117
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "next", value);
118
+ }
119
+ function _throw(err) {
120
+ asyncGeneratorStep$1(gen, resolve, reject, _next, _throw, "throw", err);
121
+ }
122
+ _next(undefined);
123
+ });
124
+ };
125
+ }
126
+ function _define_property$1(obj, key, value) {
127
+ if (key in obj) {
128
+ Object.defineProperty(obj, key, {
129
+ value: value,
130
+ enumerable: true,
131
+ configurable: true,
132
+ writable: true
133
+ });
134
+ } else {
135
+ obj[key] = value;
136
+ }
137
+ return obj;
138
+ }
139
+ function _object_spread(target) {
140
+ for(var i = 1; i < arguments.length; i++){
141
+ var source = arguments[i] != null ? arguments[i] : {};
142
+ var ownKeys = Object.keys(source);
143
+ if (typeof Object.getOwnPropertySymbols === "function") {
144
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
145
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
146
+ }));
147
+ }
148
+ ownKeys.forEach(function(key) {
149
+ _define_property$1(target, key, source[key]);
150
+ });
151
+ }
152
+ return target;
153
+ }
154
+ function ownKeys(object, enumerableOnly) {
155
+ var keys = Object.keys(object);
156
+ if (Object.getOwnPropertySymbols) {
157
+ var symbols = Object.getOwnPropertySymbols(object);
158
+ keys.push.apply(keys, symbols);
159
+ }
160
+ return keys;
161
+ }
162
+ function _object_spread_props(target, source) {
163
+ source = source != null ? source : {};
164
+ if (Object.getOwnPropertyDescriptors) {
165
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
166
+ } else {
167
+ ownKeys(Object(source)).forEach(function(key) {
168
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
169
+ });
170
+ }
171
+ return target;
172
+ }
173
+ class CryptoAsymmetricAlgorithm {
174
+ buildImportParams() {
175
+ if (this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {
176
+ return {
177
+ name: 'RSA-OAEP',
178
+ hash: 'SHA-256'
179
+ };
180
+ }
181
+ if (this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {
182
+ return {
183
+ name: 'ECDH',
184
+ namedCurve: this.algorithm.namedCurve,
185
+ hash: 'SHA-256'
186
+ };
187
+ }
188
+ throw new Error('Import params could not be created.');
189
+ }
190
+ generateKeyPair() {
191
+ var _this = this;
192
+ return _async_to_generator$1(function*() {
193
+ if (_this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {
194
+ _this.keyPair = yield crypto.subtle.generateKey(_this.algorithm, true, [
195
+ 'encrypt',
196
+ 'decrypt'
197
+ ]);
198
+ return _this.keyPair;
199
+ }
200
+ if (_this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {
201
+ _this.keyPair = yield crypto.subtle.generateKey(_this.algorithm, true, [
202
+ 'deriveKey'
203
+ ]);
204
+ return _this.keyPair;
205
+ }
206
+ throw new Error('The algorithm is not supported for key generation.');
207
+ })();
208
+ }
209
+ useKeyPair() {
210
+ var _this = this;
211
+ return _async_to_generator$1(function*() {
212
+ if (typeof _this.keyPair !== 'undefined') {
213
+ return _this.keyPair;
214
+ }
215
+ return _this.generateKeyPair();
216
+ })();
217
+ }
218
+ exportPublicKey() {
219
+ var _this = this;
220
+ return _async_to_generator$1(function*() {
221
+ const keyPair = yield _this.useKeyPair();
222
+ return exportAsymmetricPublicKey(keyPair.publicKey);
223
+ })();
224
+ }
225
+ exportPrivateKey() {
226
+ var _this = this;
227
+ return _async_to_generator$1(function*() {
228
+ const keyPair = yield _this.useKeyPair();
229
+ return exportAsymmetricPrivateKey(keyPair.privateKey);
230
+ })();
231
+ }
232
+ encrypt(data, remoteKey) {
233
+ var _this = this;
234
+ return _async_to_generator$1(function*() {
235
+ const keyPair = yield _this.useKeyPair();
236
+ if (_this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {
237
+ return crypto.subtle.encrypt({
238
+ name: 'RSA-OAEP'
239
+ }, remoteKey || keyPair.publicKey, data);
240
+ }
241
+ if (_this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {
242
+ if (typeof remoteKey === 'undefined') {
243
+ throw new Error('Remote public key is required.');
244
+ }
245
+ const array = new Uint8Array(16);
246
+ const iv = crypto.getRandomValues(array);
247
+ const key = yield crypto.subtle.deriveKey({
248
+ name: 'ECDH',
249
+ public: remoteKey
250
+ }, keyPair.privateKey, {
251
+ name: 'AES-GCM',
252
+ length: 256
253
+ }, true, [
254
+ 'encrypt'
255
+ ]);
256
+ const arrayBuffer = yield crypto.subtle.encrypt({
257
+ name: 'AES-GCM',
258
+ length: 256,
259
+ iv
260
+ }, key, data);
261
+ const buffer = Buffer.from(arrayBuffer);
262
+ return Buffer.concat([
263
+ iv,
264
+ buffer
265
+ ]);
266
+ }
267
+ throw new Error('Unsupported algorithm for encryption.');
268
+ })();
269
+ }
270
+ decrypt(data, remoteKey) {
271
+ var _this = this;
272
+ return _async_to_generator$1(function*() {
273
+ const keyPair = yield _this.useKeyPair();
274
+ if (_this.algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {
275
+ return crypto.subtle.decrypt({
276
+ name: 'RSA-OAEP'
277
+ }, keyPair.privateKey, data);
278
+ }
279
+ if (_this.algorithm.name === AsymmetricCryptoAlgorithmName.ECDH) {
280
+ if (typeof remoteKey === 'undefined') {
281
+ throw new Error('Remote public key is required.');
282
+ }
283
+ const iv = data.slice(0, 16);
284
+ const key = yield crypto.subtle.deriveKey({
285
+ name: 'ECDH',
286
+ public: remoteKey
287
+ }, keyPair.privateKey, {
288
+ name: 'AES-GCM',
289
+ length: 256
290
+ }, true, [
291
+ 'decrypt'
292
+ ]);
293
+ return crypto.subtle.decrypt({
294
+ name: 'AES-GCM',
295
+ length: 256,
296
+ iv
297
+ }, key, data.slice(16));
298
+ }
299
+ throw new Error('Unsupported algorithm for decryption.');
300
+ })();
301
+ }
302
+ constructor(algorithm){
303
+ _define_property$1(this, "algorithm", undefined);
304
+ _define_property$1(this, "keyPair", undefined);
305
+ if (algorithm.name === AsymmetricCryptoAlgorithmName.RSA_OAEP) {
306
+ algorithm = _object_spread_props(_object_spread({}, algorithm), {
307
+ publicExponent: new Uint8Array([
308
+ 1,
309
+ 0,
310
+ 1
311
+ ])
312
+ });
313
+ }
314
+ this.algorithm = algorithm;
315
+ }
316
+ }
317
+
318
+ /*
319
+ * Copyright (c) 2024.
320
+ * Author Peter Placzek (tada5hi)
321
+ * For the full copyright and license information,
322
+ * view the LICENSE file that was distributed with this source code.
323
+ */ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
324
+ try {
325
+ var info = gen[key](arg);
326
+ var value = info.value;
327
+ } catch (error) {
328
+ reject(error);
329
+ return;
330
+ }
331
+ if (info.done) {
332
+ resolve(value);
333
+ } else {
334
+ Promise.resolve(value).then(_next, _throw);
335
+ }
336
+ }
337
+ function _async_to_generator(fn) {
338
+ return function() {
339
+ var self = this, args = arguments;
340
+ return new Promise(function(resolve, reject) {
341
+ var gen = fn.apply(self, args);
342
+ function _next(value) {
343
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
344
+ }
345
+ function _throw(err) {
346
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
347
+ }
348
+ _next(undefined);
349
+ });
350
+ };
351
+ }
352
+ function _define_property(obj, key, value) {
353
+ if (key in obj) {
354
+ Object.defineProperty(obj, key, {
355
+ value: value,
356
+ enumerable: true,
357
+ configurable: true,
358
+ writable: true
359
+ });
360
+ } else {
361
+ obj[key] = value;
362
+ }
363
+ return obj;
364
+ }
365
+ class CryptoSymmetricAlgorithm {
366
+ generateKey() {
367
+ var _this = this;
368
+ return _async_to_generator(function*() {
369
+ return crypto.subtle.generateKey({
370
+ name: _this.algorithm.name,
371
+ length: 256
372
+ }, true, [
373
+ 'encrypt',
374
+ 'decrypt'
375
+ ]);
376
+ })();
377
+ }
378
+ importKey(buffer) {
379
+ var _this = this;
380
+ return _async_to_generator(function*() {
381
+ return crypto.subtle.importKey('raw', buffer, {
382
+ name: _this.algorithm.name,
383
+ length: 256
384
+ }, true, [
385
+ 'encrypt',
386
+ 'decrypt'
387
+ ]);
388
+ })();
389
+ }
390
+ encrypt(key, iv, data) {
391
+ var _this = this;
392
+ return _async_to_generator(function*() {
393
+ const arrayBuffer = yield crypto.subtle.encrypt({
394
+ name: _this.algorithm.name,
395
+ length: 256,
396
+ iv
397
+ }, key, data);
398
+ const buffer = Buffer.from(arrayBuffer);
399
+ return Buffer.concat([
400
+ iv,
401
+ buffer
402
+ ]);
403
+ })();
404
+ }
405
+ decrypt(key, data) {
406
+ var _this = this;
407
+ return _async_to_generator(function*() {
408
+ const iv = data.slice(0, 16);
409
+ const arrayBuffer = yield crypto.subtle.decrypt({
410
+ name: _this.algorithm.name,
411
+ length: 256,
412
+ iv
413
+ }, key, data.slice(16));
414
+ return Buffer.from(arrayBuffer);
415
+ })();
416
+ }
417
+ constructor(algorithm){
418
+ _define_property(this, "algorithm", undefined);
419
+ this.algorithm = algorithm;
420
+ }
421
+ }
422
+
3
423
  /*
4
424
  * Copyright (c) 2021-2024.
5
425
  * Author Peter Placzek (tada5hi)
@@ -191,5 +611,5 @@ const registryRobotSecretRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$/;
191
611
  return EnvironmentName;
192
612
  }({});
193
613
 
194
- export { EnvironmentName, PermissionName, alphaNumHyphenUnderscoreRegex, createNanoID, deleteUndefinedObjectProperties, detectProxyConnectionConfig, getHostNameFromString, hasOwnProperty, hexToUTF8, isBool, isBoolFalse, isBoolTrue, isError, isHex, isObject, nullifyEmptyObjectProperties, parseProxyConnectionString, registryRobotSecretRegex };
614
+ export { AsymmetricCryptoAlgorithmName, CryptoAsymmetricAlgorithm, CryptoSymmetricAlgorithm, EnvironmentName, PermissionName, alphaNumHyphenUnderscoreRegex, createNanoID, deleteUndefinedObjectProperties, detectProxyConnectionConfig, exportAsymmetricPrivateKey, exportAsymmetricPublicKey, getHostNameFromString, hasOwnProperty, hexToUTF8, importAsymmetricPublicKey, isBool, isBoolFalse, isBoolTrue, isError, isHex, isObject, nullifyEmptyObjectProperties, parseProxyConnectionString, registryRobotSecretRegex };
195
615
  //# sourceMappingURL=index.mjs.map