{"id":20279338,"url":"https://github.com/simplito/privmx-crypto-js","last_synced_at":"2025-04-11T06:19:02.820Z","repository":{"id":89901843,"uuid":"107677208","full_name":"simplito/privmx-crypto-js","owner":"simplito","description":"Javascript crypto library ...","archived":false,"fork":false,"pushed_at":"2025-02-21T14:00:29.000Z","size":1955,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-25T04:13:17.318Z","etag":null,"topics":["aes","cryptography","ecc","nodejs","rsa","srp","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simplito.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-20T12:47:19.000Z","updated_at":"2025-02-21T14:00:33.000Z","dependencies_parsed_at":"2024-04-24T17:49:21.055Z","dependency_job_id":"71229b0f-e4ee-4ca6-a3ed-204a7453ab8e","html_url":"https://github.com/simplito/privmx-crypto-js","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-crypto-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-crypto-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-crypto-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simplito%2Fprivmx-crypto-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simplito","download_url":"https://codeload.github.com/simplito/privmx-crypto-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351697,"owners_count":21089329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aes","cryptography","ecc","nodejs","rsa","srp","web"],"created_at":"2024-11-14T13:29:33.368Z","updated_at":"2025-04-11T06:19:02.804Z","avatar_url":"https://github.com/simplito.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n# PrivMX Crypto Java Script \n\n## Information\n\nKeywords: Hash HMAC AES XTEA RSA KeyDerivation ECC BIP39 SRP Random \n\nThis software is licensed under the MIT License.\n\nProjects which use the library: [PrivMX WebMail](https://privmx.dev)\n\n## API description\n\n### Hash functions\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| sha1 | SHA-1 (20 bytes long) | Buffer data | Promise\u0026lt;Buffer\u0026gt;\n| sha256 | SHA-256 (32 bytes long) | Buffer data | Promise\u0026lt;Buffer\u0026gt;\n| sha512 | SHA-512 (64 bytes long) | Buffer data | Promise\u0026lt;Buffer\u0026gt;\n\n### Hmac functions\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| hmacSha1 | HMAC-SHA-1 | Buffer key\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n| hmacSha256 | HMAC-SHA-256 | Buffer key\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n| hmacSha512 | HMAC-SHA-512 | Buffer key\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n\n### AES encryption\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| aes256Ecb | AES-256-ECB | Buffer data\u003cbr /\u003eBuffer key | Promise\u0026lt;Buffer\u0026gt; |\n| aes256EcbDecrypt | AES-256-ECB | Buffer data\u003cbr /\u003eBuffer key | Promise\u0026lt;Buffer\u0026gt; |\n| aes256CbcPcks7Encrypt | AES-256-CBC with PKCS7 padding encryption | Buffer data\u003cbr /\u003eBuffer key\u003cbr /\u003eBuffer iv | Promise\u0026lt;Buffer\u0026gt; |\n| aes256CbcPcks7Decrypt | AES-256-CBC with PKCS7 padding decryption | Buffer data\u003cbr /\u003eBuffer key\u003cbr /\u003eBuffer iv | Promise\u0026lt;Buffer\u0026gt; |\n| aes256CbcHmac256Encrypt | AES-256-CBC with PKCS7 padding and SHA-256 HMAC with NIST compatible KDF | Buffer data\u003cbr /\u003eBuffer key\u003cbr /\u003ebool deterministic, default: false\u003cbr /\u003enumber taglen, default: 16 | Promise\u0026lt;Buffer\u0026gt; |\n| aes256CbcHmac256Decrypt | AES-256-CBC with PKCS7 padding and SHA-256 HMAC with NIST compatible KDF | Buffer data\u003cbr /\u003eBuffer key\u003cbr /\u003enumber taglen, default: 16 | Promise\u0026lt;Buffer\u0026gt; |\n\n### XTEA encryption\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| xteaEcbPkcs7Encrypt | XTEA-ECB with PKCS7 padding encryption | Buffer data\u003cbr /\u003eBuffer key | Promise\u0026lt;Buffer\u0026gt; |\n| xteaEcbPkcs7Decrypt | XTEA-ECB with PKCS7 padding decryption | Buffer data\u003cbr /\u003eBuffer key | Promise\u0026lt;Buffer\u0026gt; |\n\n### RSA encryption\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| rsaGenerateKey | | number bits | Promise\u0026lt;string\u0026gt; |\n| rsaOaepEncrypt | | string key\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n| rsaOaepDecrypt | | string key\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n| rsaSign | | string key\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n| rsaVerify | | string key\u003cbr /\u003eBuffer signature\u003cbr /\u003eBuffer data | Promise\u0026lt;boolean\u0026gt; |\n| encryptPrivateKey | | string key\u003cbr /\u003estring passphrase | Promise\u0026lt;string\u0026gt; |\n| decryptPrivateKey | | string enckey\u003cbr /\u003estring passphrase | Promise\u0026lt;string\u0026gt; |\n\n### Key derivation\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| pbkdf2 | | string password\u003cbr /\u003eBuffer salt\u003cbr /\u003enumber rounds\u003cbr /\u003enumber length\u003cbr /\u003estring algorithm | Promise\u0026lt;Buffer\u0026gt; |\n| prf_tls12 | | Buffer key\u003cbr /\u003eBuffer seed\u003cbr /\u003enumber length | Promise\u0026lt;Buffer\u0026gt; |\n\n### ECC functions\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| signToCompactSignature | | Ecc.PrivateKey key\u003cbr /\u003eBuffer message | Promise\u0026lt;Buffer\u0026gt; |\n| verifyCompactSignature | | Ecc.PublicKey key\u003cbr /\u003eBuffer data\u003cbr /\u003eBuffer signature | Promise\u0026lt;bool\u0026gt; |\n| signToCompactSignatureWithHash | | Ecc.PrivateKey key\u003cbr /\u003eBuffer message | Promise\u0026lt;Buffer\u0026gt; |\n| verifyCompactSignatureWithHash | | Ecc.PublicKey key\u003cbr /\u003eBuffer data\u003cbr /\u003eBuffer signature | Promise\u0026lt;bool\u0026gt; |\n| getSharedKey | | Ecc.PrivateKey private\u003cbr /\u003eEcc.PublicKey public | Promise\u0026lt;Buffer\u0026gt; |\n| deriveHardened | | Ecc.ExtKey key\u003cbr /\u003enumber index | Promise\u0026lt;Ecc.ExtKey\u0026gt; |\n| eciesEncrypt | | Ecc.PrivateKey private\u003cbr /\u003eEcc.PublicKey public\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n| eciesDecrypt | | Ecc.PrivateKey private\u003cbr /\u003eEcc.PublicKey public\u003cbr /\u003eBuffer data | Promise\u0026lt;Buffer\u0026gt; |\n\n### BIP39 functions\n\n```javascript\ninterface Bip39Result {\n    entropy: Buffer;\n    mnemonic: Buffer;\n    extKey: Ecc.ExtKey;\n};\n```\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| bip39Generate | | number strength\u003cbr /\u003estring password | Promise\u0026lt;Bip39Result\u0026gt; |\n| bip39FromEntropy | | Buffer entropy\u003cbr /\u003estring password | Promise\u0026lt;Bip39Result\u0026gt; |\n| bip39FromMnemonic | | Buffer entropy\u003cbr /\u003estring password | Promise\u0026lt;Bip39Result\u0026gt; |\n| bip39GetExtKey | | Buffer entropy\u003cbr /\u003estring password | Promise\u0026lt;Ecc.ExtKey\u0026gt; |\n\n### SRP functions\n\n```javascript\ninterface RegisterResult {\n    s: Buffer;\n    v: Buffer;\n};\n\ninterface LoginStep1Result {\n    A: Buffer;\n    K: Buffer;\n    M1: Buffer;\n    M2: Buffer;\n};\n```\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| srpRegister | | Buffer N\u003cbr /\u003eBuffer g\u003cbr /\u003estring I\u003cbr /\u003estring P | Promise\u0026lt;RegisterResult\u0026gt; |\n| srpLoginStep1 | | Buffer N\u003cbr /\u003eBuffer g\u003cbr /\u003eBuffer s\u003cbr /\u003eBuffer B\u003cbr /\u003eBuffer k\u003cbr /\u003estring I\u003cbr /\u003estring P | Promise\u0026lt;LoginStep1Result\u0026gt; |\n| srpLoginStep2 | | Buffer clientM2\u003cbr /\u003eBuffer serverM2 | Promise\u0026lt;void\u0026gt; |\n\n### Random generation\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| randomFeed | | Buffer feed | void |\n| randomInt32 | | void | number |\n| randomDouble | | void | number |\n| randomBytes | | number count | Buffer |\n| randomBits | | number count | Buffer |\n| randomBN | | BN max | BN |\n\n### Misc.\n\n| Name | Description | Params | Result |\n|:-----|:------------|:-------|:-------|\n| reductKey | Reducts 32-bytes long key to 16-bytes long by SHA-256 and takes first 16 bytes | Buffer key | Promise\u0026lt;Buffer\u0026gt; |\n| generateIv | Generates IV from index for AES (16 bytes long) | Buffer key\u003cbr /\u003enumber index | Promise\u0026lt;Buffer\u0026gt; |\n\n### Build\n\n```\ngulp\n```\n\n### Test\n\n#### Browser tests\n```\nnpm start\n```\nand browse http://localhost:8123/\n\n#### Mocha tests\n```\nnpm test\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplito%2Fprivmx-crypto-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimplito%2Fprivmx-crypto-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimplito%2Fprivmx-crypto-js/lists"}