{"_id":"@alicloud/kms-sdk","_rev":"14-cd479f6cbe8c04996cafc8e26b3144a9","name":"@alicloud/kms-sdk","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@alicloud/kms-sdk","version":"1.0.0","description":"alibaba cloud kms client for node.js","main":"lib/index.js","scripts":{"lint":"eslint --fix lib/*.js test/*.js","test":"mocha -R spec test/*.test.js  --timeout 15000","cov":"nyc --reporter=html --reporter=text --reporter=lcov mocha -R spec test/*.test.js  --timeout 15000","ci":"npm run lint && npm run cov && codecov","clean":"rm -rf coverage"},"repository":{"type":"git","url":"git+https://github.com/aliyun/nodejs-kms-sdk.git"},"keywords":["alibaba cloud","kms","sdk"],"author":{"name":"Alibaba Cloud SDK"},"license":"MIT","devDependencies":{"muk":"^0.5.3","codecov":"^3.1.0","eslint":"^5.10.0","expect.js":"^0.3.1","mm":"^2.4.1","mocha":"^5.2.0","nyc":"^13.1.0","rewire":"^4.0.1"},"dependencies":{"@alicloud/http-core-sdk":"^1.0.0"},"bugs":{"url":"https://github.com/aliyun/nodejs-kms-sdk/issues"},"homepage":"https://github.com/aliyun/nodejs-kms-sdk#readme","gitHead":"4de33b9cc115cb194b1025415433ddd673c23e08","_id":"@alicloud/kms-sdk@1.0.0","_npmVersion":"6.1.0","_nodeVersion":"10.5.0","_npmUser":{"name":"jacksontian","email":"shyvo1987@gmail.com"},"dist":{"integrity":"sha512-jYy8xFLRjjUrhnNtpjFlRzvEG5G3YjTXGIJejggIAU4W7uaeMnwfP4L+CdTHWRAmNvyz7PU0aQXTGjjynohS6g==","shasum":"286463b61adfd75422f03a1cd32a156a9042d8d6","tarball":"https://registry.npmjs.org/@alicloud/kms-sdk/-/kms-sdk-1.0.0.tgz","fileCount":6,"unpackedSize":61231,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcP+m4CRA9TVsSAnZWagAA6YsP/iSQfYkjCaJMin+0DLXj\n5cVurY8tA1j0VDDzl4RE5WDXTeNevfAESE2Wl4NtGEgHJUPDIGlOTMEmZDHd\nX8R2hR43ioi2QHqTbvm0xoy6h5AniDinief+mDX5OylSxISGNYTm8nYgurJm\nmvlHAGr2taUZgNz72FhGNp6Gl75+MMxy3FVclJVVe3x1yk53oZJt58OC1nnQ\nm8cDlx5oCn5Wmt83hGaJPl2pr4zJClLNFCQQTignRFBEGd/F75Hq1/qGW6JI\nvhRm4EkkqC2P/m8yZRqAWzFwgRZTmUjwB3ulFc1vBwo91jCbIXw4r+i4WmLK\nKW5vVWOzCkM7HTtGwXkQNij8T37sI+u/G/HqNiGWCEb1k7/R0+gZU87pGWe8\nbcrcvkg4CgodmN7ktOzU0dF7DsEWQDV1EToFnSvBTAF2uuFpy7WpBkOLsXpZ\n2cc61St7toGnZdn2IB0zKCGkvhicJiqwEViRcUlPj/xOEoEQWjD4HNr9L0Uj\ntJ8/lDD0JRl1Z+sFDbVRBmA1voGGe5NvG5hTfrZdX5MjHxWCbqlYwg7Btxka\n8TAM2cn07gGm2I7IGeUAFGs9IJLIgtwEnVyTtDXyahFdEdF7CmaMlNwR8EzF\nbYHNzigTqoP3/gOuVT/ObJ/9Qht6PtjbgfsV3Nw+rym2txWLojdhkQOQHEwm\nzM/z\r\n=1EqU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAFsqyybhrDiC0H4tvsvFbp0SGlKxL3avVApYI+znIg4AiEA6/jiG6ThtxjdRitGw0sP/Wh7ntxhvv74WO3VPJdJCHk="}]},"maintainers":[{"name":"cici503","email":"191984292@qq.com"},{"name":"tanhe123","email":"xiayule148@gmail.com"},{"name":"fengmk2","email":"fengmk2@gmail.com"},{"name":"vangie","email":"duwan@live.com"},{"name":"aleelock","email":"aleelock@126.com"},{"name":"jacksontian","email":"shyvo1987@gmail.com"},{"name":"humanhuang","email":"halfthink@gmail.com"},{"name":"ls_nodejs","email":"ls_huster@163.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kms-sdk_1.0.0_1547692472115_0.7654690720308428"},"_hasShrinkwrap":false},"1.1.0":{"name":"@alicloud/kms-sdk","version":"1.1.0","description":"alibaba cloud kms client for node.js","main":"lib/index.js","scripts":{"lint":"eslint --fix lib/*.js test/*.js","test":"mocha -R spec test/*.test.js  --timeout 15000","cov":"nyc --reporter=html --reporter=text --reporter=lcov mocha -R spec test/*.test.js  --timeout 15000","ci":"npm run lint && npm run cov && codecov","clean":"rm -rf coverage"},"repository":{"type":"git","url":"git+https://github.com/aliyun/nodejs-kms-sdk.git"},"keywords":["alibaba cloud","kms","sdk"],"author":{"name":"Alibaba Cloud SDK"},"license":"MIT","devDependencies":{"muk":"^0.5.3","codecov":"^3.1.0","eslint":"^5.10.0","expect.js":"^0.3.1","mm":"^2.4.1","mocha":"^5.2.0","nyc":"^13.1.0","rewire":"^4.0.1"},"dependencies":{"@alicloud/http-core-sdk":"^1.0.0"},"bugs":{"url":"https://github.com/aliyun/nodejs-kms-sdk/issues"},"homepage":"https://github.com/aliyun/nodejs-kms-sdk#readme","gitHead":"282b3f670cf4f8f90e880a6d8b65e47cab38782e","_id":"@alicloud/kms-sdk@1.1.0","_npmVersion":"6.4.1","_nodeVersion":"8.12.0","_npmUser":{"name":"hyj1991","email":"yeekwanvong@gmail.com"},"dist":{"integrity":"sha512-q4HSHEnaauSq+p2SUSEDXws/N4VpcuujjK6U+WOhTEoGe3kr0z7U7eSjV8EBOCZH0rDVdFCS46D3hbh2HBAHFg==","shasum":"8f98c094fd893662534a704911d42bdd2a90e94f","tarball":"https://registry.npmjs.org/@alicloud/kms-sdk/-/kms-sdk-1.1.0.tgz","fileCount":6,"unpackedSize":64809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJceOaJCRA9TVsSAnZWagAAtR4QAIjY8ipCoQlTlZ0GlDtf\n2ViTXMm7io9p7OGgi63p6RLd7KxQ1f+KemLq1KzhPbAULcJKWN5+pGVQ0aWu\nHj0HLZAvp4mKvspMzoZj6G9uwwoFWfXlcDK+gAYaf5NX5cNQhJe80iQskm9/\nIYHAmDU3+pQO252IDx8qbRA/jGbWUiSzuf2LQ/nN+hOyDEyF9C3gF5r2hDLI\nEb/jo3vdkIBRF2nlNEqSZdfmZIfjDWayZJLAsftcNjrV+/NqNSVYFRN7L6sf\n6AYmcEIfrbjK+JZLHzGaCY17szPjLQ+gzgiGNlm9Mev7A+VdVvk37zMOGBfp\nU7ubSPUUmhVEp2NBdFRaADH7FwWNhWRtadwPT7pVlZ9ChC05TkK6PBGYylHT\nH/g0BjSO2vFsMFTGTrnEote6lnDUr+jUtvUNiA0QrYuogprrtBZaNawTjmhN\ncH5JLUpiMWRR4L6TxzPTT+6atq0hk3VNQodeDmr9S6V8fKdf8BodU6S1ELMk\nkZ6BV+zuundmChfB4ISrH7BlDJBHm91MNLvEwsG+yqfw57tVBSy+aMRIydTD\n+vNmmsYkdcTHNBDEtTTNDZlNlq7XE52NKCOp6C/+ZARbHKLmEFwbwXHISovX\nIgEg/D6XB15iaEXhss+RT9rtKAg7oPdcBnA0QlV2Pdsp99raTZUORgXH+aiQ\nblnN\r\n=A7In\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5i+mTXWEHxDO1WjP+UGh3jq0cF342beFvkTW1ATGOPAIgXexAPZbh00dyGTC1Qw/UthikzBROCNR0OC6EMFHSAJg="}]},"maintainers":[{"email":"aleelock@126.com","name":"aleelock"},{"email":"191984292@qq.com","name":"cici503"},{"email":"fengmk2@gmail.com","name":"fengmk2"},{"email":"halfthink@gmail.com","name":"humanhuang"},{"email":"yeekwanvong@gmail.com","name":"hyj1991"},{"email":"shyvo1987@gmail.com","name":"jacksontian"},{"email":"ls_huster@163.com","name":"ls_nodejs"},{"email":"xiayule148@gmail.com","name":"tanhe123"},{"email":"duwan@live.com","name":"vangie"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/kms-sdk_1.1.0_1551427208368_0.6612874098508243"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-17T02:34:31.996Z","1.0.0":"2019-01-17T02:34:32.273Z","modified":"2022-04-04T12:57:21.694Z","1.1.0":"2019-03-01T08:00:08.473Z"},"maintainers":[{"email":"console-fe@alibabacloud.com","name":"console-fe"},{"email":"sdk-team@alibabacloud.com","name":"aliyunsdkteam"},{"email":"cpj1106@gmail.com","name":"pagecao"},{"email":"fengmk2@gmail.com","name":"fengmk2"},{"email":"shyvo1987@gmail.com","name":"jacksontian"}],"description":"alibaba cloud kms client for node.js","homepage":"https://github.com/aliyun/nodejs-kms-sdk#readme","keywords":["alibaba cloud","kms","sdk"],"repository":{"type":"git","url":"git+https://github.com/aliyun/nodejs-kms-sdk.git"},"author":{"name":"Alibaba Cloud SDK"},"bugs":{"url":"https://github.com/aliyun/nodejs-kms-sdk/issues"},"license":"MIT","readme":"# Alibaba Cloud KMS client for Node.js\n\n[![npm version](https://badge.fury.io/js/@alicloud%2fkms-sdk.svg)](https://badge.fury.io/js/@alicloud%2fkms-sdk.svg)\n[![Travis Build Status](https://api.travis-ci.org/aliyun/nodejs-kms-sdk.png?branch=master)](https://travis-ci.org/aliyun/nodejs-kms-sdk)\n[![Appveyor Build status](https://ci.appveyor.com/api/projects/status/5ow9oa34730r0wdy?svg=true)](https://ci.appveyor.com/project/hyj1991/nodejs-kms-sdk)\n[![codecov](https://codecov.io/gh/aliyun/nodejs-kms-sdk/branch/master/graph/badge.svg)](https://codecov.io/gh/aliyun/nodejs-kms-sdk)\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE)\n\n## Installation\n\n```bash\nnpm install @alicloud/kms-sdk\n```\n\n**Node.js >= 8.5.0** required.\n\n## Usage\n\n### Client with accessKeyId & accessKeySecret\n\n```js\nconst KmsClient = require('@alicloud/kms-sdk');\nconst client = new KmsClient({\n  endpoint: 'kms.cn-hangzhou.aliyuncs.com', // check this from kms console\n  accessKeyId: '***************', // check this from aliyun console\n  accessKeySecret: '***************', // check this from aliyun console\n});\n```\n\n### Client with sdk credentials\n\nCredentials file example (~/.alibabacloud/credentials):\n\n```bash\n[default]\nenable = true\ntype = access_key\naccess_key_id = ******\naccess_key_secret = ******\n\n[kms-demo]\nenable = true\ntype = ram_role_arn\naccess_key_id = ******\naccess_key_secret = ******\nrole_arn = acs:ram::******:role/******\nrole_session_name = ******\n```\n\n Actually **@alicloud/credentials** will automatically load credentials from the credentials file above.\n\n Client example:\n\n```js\nconst KmsClient = require('@alicloud/kms-sdk');\nconst Credentials = require('@alicloud/credentials');\nconst client = new KmsClient({\n  endpoint: 'kms.cn-hangzhou.aliyuncs.com', // check this from kms console\n  credential: new Credentials({ profile: 'kms-demo' })\n});\n```\n\nSimilarly, we also support setting explicit credentials file path like:\n\n```js\nconst KmsClient = require('@alicloud/kms-sdk');\nconst Credentials = require('@alicloud/credentials');\nconst client = new KmsClient({\n  endpoint: 'kms.cn-hangzhou.aliyuncs.com', // check this from kms console\n  credential: new Credentials({\n    credentialsFile: '/path/to/your/credential'\n    profile: 'kms-demo'\n  })\n});\n```\n\nPlease see [@alicloud/credentials docs](https://github.com/aliyun/nodejs-credentials#usage) for more information.\n\n### Api demo\n\n```js\nasync function demo() {\n  // describe regions\n  const regions = await client.describeRegions();\n  console.log(`regions: ${JSON.stringify(regions)}`);\n\n  // create key\n  const creation = await client.createKey('Aliyun_KMS', `demo`, 'ENCRYPT/DECRYPT');\n  const keyId = creation.KeyMetadata.KeyId;\n  console.log(`creation: ${JSON.stringify(creation)}`);\n\n  // list keys\n  const keys = await client.listKeys(1, 100);\n  console.log(`keys: ${JSON.stringify(keys)}`);\n\n  // describe key\n  const description = await client.describeKey(keyId);\n  console.log(`description: ${JSON.stringify(description)}`);\n\n  // encrypt\n  const plaintext = 'hello kms sdk for node.js';\n  const encrypt = await client.encrypt(keyId, plaintext.toString('base64'), JSON.stringify({ k: 'v' }));\n  const blob = encrypt.CiphertextBlob;\n  console.log(`description: ${JSON.stringify(description)}`);\n\n  // decrypt\n  const decrypt = await client.decrypt(blob, JSON.stringify({ k: 'v' }));\n  const rawtext = decrypt.Plaintext;\n  console.log(`rawtext: ${rawtext}`);\n\n  // disable key\n  const disable = await client.disableKey(keyId);\n  console.log(`disable: ${JSON.stringify(disable)}`);\n\n  // enable key\n  const enable = await client.enableKey(keyId);\n  console.log(`enable: ${JSON.stringify(enable)}`);\n\n  // generate local data key\n  const generateKey = await client.generateDataKey(keyId);\n  console.log(`generateKey: ${JSON.stringify(generateKey)}`);\n\n  // get params for import\n  const res = await client.createKey('EXTERNAL');\n  const externalKeyId = res.KeyMetadata.KeyId;\n  const params = await client.getParametersForImport(externalKeyId, 'RSAES_OAEP_SHA_256', 'RSA_2048');\n  const importTokean = res1.ImportToken;\n  console.log(`import params: ${JSON.stringify(params)}`);\n\n  // import key material\n  const importKey = await client.importKeyMaterial(externalKeyId, 'test'.toString('base64'), importTokean, Date.now() + 24 * 60 * 60 * 1000);\n  console.log(`import key: ${JSON.stringify(importKey)}`);\n\n  // delete key material\n  const deleteKeyMaterial = await client.deleteKeyMaterial(externalKeyId);\n  console.log(`delete key material: ${JSON.stringify(deleteKeyMaterial)}`);\n\n  // schedule delete key\n  const deletion = await client.scheduleKeyDeletion(keyId, 7);\n  console.log(`deletion: ${JSON.stringify(deletion)}`);\n\n  // cancel deletion\n  const cancel = await client.cancelKeyDeletion(keyId);\n  console.log(`cancel: ${JSON.stringify(cancel)}`);\n\n  // create alias\n  const alias = `alias/demo`;\n  const createAlias = await client.createAlias(keyId, alias);\n  console.log(`createAlias: ${JSON.stringify(createAlias)}`);\n\n  // update alias\n  const creation1 = await client.createKey('Aliyun_KMS', `demo`, 'ENCRYPT/DECRYPT');\n  const keyId1 = creation1.KeyMetadata.KeyId;\n  const alias1 = `alias/demo1`;\n  await client.createAlias(keyId, alias1);\n  const updateAlias = await client.updateAlias(keyId1, alias1);\n  console.log(`updateAlias: ${JSON.stringify(updateAlias)}`);\n\n  // list aliases\n  const listAlias = await client.listAliases(1, 100);\n  console.log(`listAlias: ${JSON.stringify(listAlias)}`);\n\n  // list alias by id\n  const listAliasById = await client.listAliasesByKeyId(keyId, 1, 100);\n  console.log(`listAliasById: ${JSON.stringify(listAliasById)}`);\n\n  // delete alias\n  const deleteAlias = await client.deleteAlias(alias);\n  console.log(`deleteAlias: ${JSON.stringify(deleteAlias)}`);\n}\n\ndemo();\n```\n\n## API Doc\n\n### Method:  `describeRegions()`\n\n#### Returns\n\n* **regions** Object - available regions\n\n\n### Method:  `createKey(origin, description, keyUsage)`\n\n#### Arguments\n\n* **origin** String **optional** - Aliyun_KMS (default) or EXTERNAL\n* **description** String **optional** - description of key\n* **keyUsage** String **optional** -  usage of key, default is ENCRYPT/DECRYPT\n\n#### Returns\n\n* **keyMetadata** Object - metadata of this key\n\n\n### Method:  `listKeys(pageNumber, pageSize)`\n\n#### Arguments\n\n* **pageNumber** Number **optional** - current page, default 1\n* **pageSize** Number **optional** - result count (0 - 100), default 10\n\n#### Returns\n\n* **keyList** Object - list of keys in this endpoint\n\n\n### Method:  `describeKey(keyId)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n\n#### Returns\n\n* **description** Object - description of this key\n\n\n### Method:  `encrypt(keyId, plaintext, encryptionContext)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **plaintext** String **required** - plaintext to be encrypted (must be Base64 encoded)\n* **encryptionContext** String **optional** - key/value string, must be {string: string}\n\n#### Returns\n\n* **ciphertextBlob** Object - encrypted content\n\n\n### Method:  `decrypt(ciphertextBlob, encryptionContext)`\n\n#### Arguments\n\n* **ciphertextBlob** String **required** - ciphertext to be decrypted\n* **encryptionContext** String **optional** - key/value string, must be {string: string}\n\n#### Returns\n\n* **plaintext** Object - decrypted content\n\n\n### Method:  `disableKey(keyId)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n\n\n### Method:  `enableKey(keyId)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n\n\n### Method:  `generateDataKey(keyId, keySpec, numberOfBytes, encryptionContex)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **keySpec** String **optional** -  AES_256 or AES_128\n* **numberOfBytes** Number **optional** -  length of key\n* **encryptionContex** String **optional** -  key/value string, must be {string: string}\n\n#### Returns\n\n* **localKey** Object - generated local key\n\n\n### Method:  `getParametersForImport(keyId, wrappingAlgorithm, wrappingKeySpec)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **wrappingAlgorithm** String **required** - algorithm for encrypting key material, RSAES_PKCS1_V1_5, RSAES_OAEP_SHA_1 or RSAES_OAEP_SHA_256\n* **wrappingKeySpec** String **required** - public key type used to encrypt key material, RSA_2048\n\n#### Returns\n\n* **importParams** Object - parameters required to import key material\n\n\n### Method:  `importKeyMaterial(keyId, encryptedKeyMaterial, importToken, keyMaterialExpireUnix)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **encryptedKeyMaterial** String **required** - key material encrypted with base64\n* **importToken** String **required** - obtained by calling GetParametersForImport\n* **keyMaterialExpireUnix** String **optional** - key material expiration time\n\n\n### Method:  `deleteKeyMaterial(keyId)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n\n\n### Method:  `scheduleKeyDeletion(keyId, pendingWindowInDays)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **pendingWindowInDays** Number **required** - key pre-delete cycle, [7, 30]\n\n\n### Method:  `cancelKeyDeletion(keyId)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n\n\n### Method:  `createAlias(keyId, aliasName)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **aliasName** String **required** - cmk alias, prefix must be 'alias/'\n\n\n### Method:  `updateAlias(keyId, aliasName)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **aliasName** String **required** - the alias to be operated, prefix must be 'alias/'\n\n\n### Method:  `listAliases(pageNumber, pageSize)`\n\n#### Arguments\n\n* **pageNumber** Number **optional** - current page, default 1\n* **pageSize** Number **optional** - result count (0 - 100), default 10\n\n#### Returns\n\n* **aliasList** Object - list of alias\n\n\n### Method:  `listAliasesByKeyId(keyId, pageNumber, pageSize)`\n\n#### Arguments\n\n* **keyId** String **required** - global unique identifier\n* **pageNumber** Number **optional** - current page, default 1\n* **pageSize** Number **optional** - result count (0 - 100), default 10\n\n#### Returns\n\n* **aliasList** Object - list of alias\n\n\n### Method:  `deleteAlias(aliasName)`\n\n#### Arguments\n\n* **aliasName** String **required** -  alias name, prefix must be 'alias/'\n\n## Test & Coverage\n\nYou should set environment variables before running the test or coverage. For example:\n\n* run test\n\n```\nACCESS_KEY=<your access key> SECRET_KEY=<your secret key> ENDPOINT=<endpoint> npm run test\n```\n\n* run code coverage\n\n```\nACCESS_KEY=<your access key> SECRET_KEY=<your secret key> ENDPOINT=<endpoint> npm run cov\n```\n\n## License\n\n[MIT](LICENSE)","readmeFilename":"README.md"}