diff --git a/package.json b/package.json index a9f8b12..c6f7664 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sops-age", - "version": "2.0.0", - "description": "Node.js sops age decryption", + "version": "3.0.0", + "description": "sops age decryption for JavaScript", "repository": "humphd/sops-age", "license": "MIT", "author": { @@ -50,7 +50,7 @@ }, "dependencies": { "@noble/ciphers": "^1.1.3", - "age-encryption": "^0.1.5", + "age-encryption": "^0.2.0-rc.0", "dotenv": "^16.4.7", "lodash": "^4.17.21", "yaml": "^2.6.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2ab307b..fba3a42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,10 +10,10 @@ importers: dependencies: '@noble/ciphers': specifier: ^1.1.3 - version: 1.1.3 + version: 1.2.0 age-encryption: - specifier: ^0.1.5 - version: 0.1.5 + specifier: ^0.2.0-rc.0 + version: 0.2.0 dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -492,8 +492,16 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@noble/ciphers@1.1.3': - resolution: {integrity: sha512-Ygv6WnWJHLLiW4fnNDC1z+i13bud+enXOFRBlpxI+NJliPWx5wdR+oWlTjLuBPTqjUjtHXtjkU6w3kuuH6upZA==} + '@noble/ciphers@1.2.0': + resolution: {integrity: sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.8.0': + resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.7.0': + resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} engines: {node: ^14.21.3 || >=16} '@nodelib/fs.scandir@2.1.5': @@ -782,6 +790,9 @@ packages: cpu: [x64] os: [win32] + '@scure/base@1.2.1': + resolution: {integrity: sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==} + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -857,8 +868,8 @@ packages: add-stream@1.0.0: resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - age-encryption@0.1.5: - resolution: {integrity: sha512-dCYck6yQczeJHq+Jj+nc3ziBAxcod1DLlNkyLgwJyIOXh32NzzKm3kybXCZuDhecgWLGp1FDEUW2QxqGuHtjuw==} + age-encryption@0.2.0: + resolution: {integrity: sha512-Y05OOztNCxYA68jxAJw+kmwYqXDRV6wVazEGXio1LiUofFn8zIjH++WV0oyq5dEBPyLHrnN/7X/C23qk4r5row==} agent-base@7.1.3: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} @@ -953,10 +964,6 @@ packages: resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} - bech32-buffer@0.2.1: - resolution: {integrity: sha512-fCG1TyZuCN48Sdw97p/IR39fvqpFlWDVpG7qnuU1Uc3+Xtc/0uqAp8U7bMW/bGuVF5CcNVIXwxQsWwUr6un6FQ==} - engines: {node: '>=8'} - before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} @@ -992,6 +999,7 @@ packages: bun@1.1.42: resolution: {integrity: sha512-PckeNolMEBaBEzixTMvp0jJD9r/9lly8AfctILi1ve14zwwChFjsxI4TJLQO2yezzOjVeG0u7xf8WQFbS7GjAA==} + cpu: [arm64, x64, aarch64] os: [darwin, linux, win32] hasBin: true @@ -2039,12 +2047,6 @@ packages: resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} engines: {node: '>=18'} - libsodium-sumo@0.7.15: - resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} - - libsodium-wrappers-sumo@0.7.15: - resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} - lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -3527,7 +3529,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@noble/ciphers@1.1.3': {} + '@noble/ciphers@1.2.0': {} + + '@noble/curves@1.8.0': + dependencies: + '@noble/hashes': 1.7.0 + + '@noble/hashes@1.7.0': {} '@nodelib/fs.scandir@2.1.5': dependencies: @@ -3774,6 +3782,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.29.1': optional: true + '@scure/base@1.2.1': {} + '@sinclair/typebox@0.27.8': {} '@sindresorhus/merge-streams@2.3.0': {} @@ -3869,10 +3879,12 @@ snapshots: add-stream@1.0.0: {} - age-encryption@0.1.5: + age-encryption@0.2.0: dependencies: - bech32-buffer: 0.2.1 - libsodium-wrappers-sumo: 0.7.15 + '@noble/ciphers': 1.2.0 + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@scure/base': 1.2.1 agent-base@7.1.3: {} @@ -3961,8 +3973,6 @@ snapshots: basic-ftp@5.0.5: {} - bech32-buffer@0.2.1: {} - before-after-hook@2.2.3: {} binary-extensions@2.3.0: {} @@ -5171,12 +5181,6 @@ snapshots: dependencies: package-json: 10.0.1 - libsodium-sumo@0.7.15: {} - - libsodium-wrappers-sumo@0.7.15: - dependencies: - libsodium-sumo: 0.7.15 - lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} diff --git a/src/age.ts b/src/age.ts index 83469c5..6efa983 100644 --- a/src/age.ts +++ b/src/age.ts @@ -1,17 +1,14 @@ -import age from "age-encryption"; +import * as age from "age-encryption"; export async function getPublicAgeKey(privateAgeKey: string) { - const { identityToRecipient } = await age(); - return identityToRecipient(privateAgeKey); + return age.identityToRecipient(privateAgeKey); } export async function decryptAgeEncryptionKey( encryptedKey: string, secretKey: string, ): Promise { - const { Decrypter } = await age(); - - const decrypter = new Decrypter(); + const decrypter = new age.Decrypter(); decrypter.addIdentity(secretKey); const regex =