{"_id":"@bryopsida/redis-key-store","_rev":"2-6c92da6334bef49502afc651ca3527a1","name":"@bryopsida/redis-key-store","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@bryopsida/redis-key-store","version":"0.1.0","description":"Implementation of @bryopsida/redis-key-store using redis as backing store","main":"lib/index.js","exports":"./lib/index.js","type":"module","engines":{"npm":">=8.0.0","node":">=18.0.0"},"scripts":{"prepack":"npm run build","build":"node_modules/typescript/bin/tsc --project ./","build:docs":"typedoc src/redisKeyStore.ts","test":"NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --coverage --testPathPattern='test/.*\\.spec\\.ts'","lint":"eslint --ext .ts src/ test/ && prettier --check .","lint:fix":"eslint --ext .ts src/ test/ --fix && prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/bryopsida/redis-key-store.git"},"keywords":["crypto","typescript","keystore","data-encryption-keys","node.js","minimal-dependencies"],"author":"","license":"Unlicense","bugs":{"url":"https://github.com/bryopsida/redis-key-store/issues"},"homepage":"https://github.com/bryopsida/redis-key-store#readme","devDependencies":{"@jest/globals":"29.4.1","@types/ioredis":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^18.11.18","@typescript-eslint/eslint-plugin":"^5.15.0","@typescript-eslint/parser":"^5.15.0","eslint":"^8.30.0","eslint-config-prettier":"^8.5.0","eslint-plugin-github":"^4.6.0","eslint-plugin-import":"^2.25.4","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^6.0.0","eslint-plugin-standard":"^5.0.0","jest":"^29.0.0","prettier":"2.8.3","standard":"^17.0.0","testcontainers":"^9.1.1","ts-jest":"29.x","ts-node":"^10.7.0","typedoc":"^0.23.23","typescript":"^4.6.2"},"dependencies":{"@bryopsida/key-store":"^0.1.3","ioredis":"^5.3.0","pino":"^8.8.0"},"types":"./lib/index.d.ts","gitHead":"50f3ccd3996f6403783cc106924f749ace6b7ed6","_id":"@bryopsida/redis-key-store@0.1.0","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-C3A8Q+dPCNT0TodXnmgwgtNrYkbUXPcETg3q9swe2NdPl98ANLpP9iB5R+SsW/r7UCA9ChQOC6NxGDYxrurNYw==","shasum":"bf394911d76b4f363c6d5f204def1e2035e4bc1f","tarball":"https://registry.npmjs.org/@bryopsida/redis-key-store/-/redis-key-store-0.1.0.tgz","fileCount":9,"unpackedSize":11982,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHFuXrMAD5edZQ1GwW9WUHT/BIryUvMgTVsU34CXVK1FAiEA60hQUdD9kQAWYeaJgQnhgtiO1hRQsYYskWeCQn3ZOVM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj4FXHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/JA/9HpDbOy/pHUCHbv0LOXQCC4PJIIoAku1LkDNNB62oYvOsAmAt\r\n9aZg2nW6Lr+xZS9Y/FlXqAHYoSzn0kyvfxJmsZlOEYKWCGdRGhdlON+PJ36j\r\nZum9c8EkAbLaT35qO3m3PJGRY/1PeEBtJuEIGO7nKSctD3qNs+wO7JsJdqS8\r\noMnowrnykTBXqka26uHRUm6rRZ+8DVj+zXy7DdVNdUpTotdYgkuSv3qg1p1e\r\nfDhCHL5QrWPavkJ0PqfKLJsRj2f5lcdvcxVM0e1eZUk1xRFmKVjX/lOjEv/3\r\nI7mv5y7TrXKyuX+F49NX9ON+V2SGQLwkCgaL3LwZyT9YAQFZIOREzdTAWrXX\r\nTQErQVBKqCfXglQI79x9FWs1u9GDoZgFz0T/7IiBL+Jsi0BlT3WFer1zHS5d\r\nWWxp1NvQyOOLyW3C7h0qURr1p5TMEOurp9XEM71zxQUkQhbZINh0wr9ebFUe\r\nu5WOnvJWYwPFGwcDz4aJvzsut76coYOXKkOima43n0vkg6hrMZ6Shhx0X0FV\r\nN4ITZFpjIWXFVRfTLwkKo+2qAnJ8AENMNYh8XAfjRNreJLMMGY9/jwvHPjxO\r\nYyWAGvbtl08+9OqLVJOFbP9x7HjPeZNipoZBHchLeCzJcmsRvPW+y7G+cyyB\r\nS1rgolyO597Vv1Gm4Y6vDuGT6dIC0UOWez8=\r\n=1UQq\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"akboyd88","email":"akboyd88@gmail.com"},"directories":{},"maintainers":[{"name":"akboyd88","email":"akboyd88@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redis-key-store_0.1.0_1675646407767_0.48117344024416564"},"_hasShrinkwrap":false},"0.1.1":{"name":"@bryopsida/redis-key-store","version":"0.1.1","description":"Implementation of @bryopsida/redis-key-store using redis as backing store","main":"lib/index.js","exports":"./lib/index.js","type":"module","engines":{"npm":">=8.0.0","node":">=18.0.0"},"scripts":{"prepack":"npm run build","build":"node_modules/typescript/bin/tsc --project ./","build:docs":"typedoc src/redisKeyStore.ts","test":"NODE_ENV=test NODE_OPTIONS=--experimental-vm-modules jest --coverage --testPathPattern='test/.*\\.spec\\.ts'","lint":"eslint --ext .ts src/ test/ && prettier --check .","lint:fix":"eslint --ext .ts src/ test/ --fix && prettier --write ."},"repository":{"type":"git","url":"git+https://github.com/bryopsida/redis-key-store.git"},"keywords":["crypto","typescript","keystore","data-encryption-keys","node.js","minimal-dependencies"],"author":"","license":"Unlicense","bugs":{"url":"https://github.com/bryopsida/redis-key-store/issues"},"homepage":"https://github.com/bryopsida/redis-key-store#readme","devDependencies":{"@jest/globals":"29.7.0","@types/ioredis":"^5.0.0","@types/jest":"^29.0.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^5.15.0","@typescript-eslint/parser":"^5.15.0","eslint":"^8.30.0","eslint-config-prettier":"^9.0.0","eslint-plugin-github":"^4.6.0","eslint-plugin-import":"^2.25.4","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^6.0.0","eslint-plugin-standard":"^5.0.0","jest":"^29.0.0","prettier":"2.8.8","standard":"^17.0.0","testcontainers":"^10.0.0","ts-jest":"29.x","ts-node":"^10.7.0","typedoc":"^0.25.0","typescript":"^5.0.0"},"dependencies":{"@bryopsida/key-store":"^0.1.4","ioredis":"^5.3.1","pino":"^8.11.0"},"_id":"@bryopsida/redis-key-store@0.1.1","gitHead":"f6b9c9e719ff3f47f861a75564cd2dc52d493042","types":"./lib/index.d.ts","_nodeVersion":"18.18.0","_npmVersion":"9.8.1","dist":{"integrity":"sha512-ESwqt0fPBCvCUqQjklFG86fwnfgEdi/iL3CIxxGEyw0GIMbh76wloME04xoZs6S22qHkcD0H95r/RVfWVdV4tw==","shasum":"cfef242884811ec00b04ed1b74d5071ddff70e4b","tarball":"https://registry.npmjs.org/@bryopsida/redis-key-store/-/redis-key-store-0.1.1.tgz","fileCount":9,"unpackedSize":11981,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCBl6iXjnChVZQ6oJdc9qMOFWIAzWrbtZRcxP6285SbNAIgJmj66GVvTpHNcmUwot+BxT5SAEQ2jaM89+Gr/sGrRYg="}]},"_npmUser":{"name":"akboyd88","email":"akboyd88@gmail.com"},"directories":{},"maintainers":[{"name":"akboyd88","email":"akboyd88@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/redis-key-store_0.1.1_1696079072970_0.21246217311250493"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-06T01:20:07.597Z","0.1.0":"2023-02-06T01:20:07.921Z","modified":"2024-04-07T16:41:40.875Z","0.1.1":"2023-09-30T13:04:33.170Z"},"maintainers":[{"email":"noreply@curium.rocks","name":"curium-deployer"},{"email":"npm.feel170@passinbox.com","name":"akboyd88"}],"description":"Implementation of @bryopsida/redis-key-store using redis as backing store","homepage":"https://github.com/bryopsida/redis-key-store#readme","keywords":["crypto","typescript","keystore","data-encryption-keys","node.js","minimal-dependencies"],"repository":{"type":"git","url":"git+https://github.com/bryopsida/redis-key-store.git"},"bugs":{"url":"https://github.com/bryopsida/redis-key-store/issues"},"license":"Unlicense","readme":"# Redis-Key-Store\n\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_redis-key-store&metric=coverage)](https://sonarcloud.io/summary/new_code?id=bryopsida_redis-key-store) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_redis-key-store&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=bryopsida_redis-key-store) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_redis-key-store&metric=bugs)](https://sonarcloud.io/summary/new_code?id=bryopsida_redis-key-store) [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_redis-key-store&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=bryopsida_redis-key-store)\n\n## What is this?\n\nThis is a implenetation of [@bryopsida/key-store](http://github.com/bryopsida/key-store) using redis as a backing store for use in distributed systems.\n\n## How do I use it?\n\n```typescript\nimport { Redis } from 'ioredis'\nimport { describe, expect, it } from '@jest/globals'\nimport { randomBytes, randomUUID } from 'crypto'\nimport pino from 'pino'\n\n// create a redis client\nconst redisClient: Redis = new Redis(6379, 'localhost')\n\n// fetch your key for the store\nlet password: Buffer // 32 bytes\nlet salt: Buffer // 16 bytes\nlet context: Buffer // 32 bytes\n\n// create a logger\nconst logger: Logger = pino()\nconst keyPrefix: string = 'keys'\n\n// create the key store\nconst store = new RedisKeyStore(\n  logger,\n  redisClient,\n  keyPrefix,\n  () => Promise.resolve(password),\n  () => Promise.resolve(salt),\n  () => Promise.resolve(context)\n)\n\nit('can manage a DEK', async () => {\n  // create random data to act as key store\n  const dek = randomBytes(32)\n  const id = randomUUID()\n\n  // save it\n  await keyStore.saveSealedDataEncKey(id, dek)\n\n  // ask for it back\n  const fetchedDek = await keyStore.fetchSealedDataEncKey(id)\n\n  // should be the same\n  expect(fetchedDek).toEqual(dek)\n\n  // delete it\n  await keyStore.destroySealedDataEncKey(id)\n})\n```\n","readmeFilename":"README.md"}