@sebastienrousseau/crypto-server 0.0.1

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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +170 -0
  3. package/dist/@types/types.d.ts +21 -0
  4. package/dist/@types/types.d.ts.map +1 -0
  5. package/dist/@types/types.js +3 -0
  6. package/dist/@types/types.js.map +1 -0
  7. package/dist/COPYRIGHT +14 -0
  8. package/dist/Report.txt +90 -0
  9. package/dist/config/endpoints.config.d.ts +7 -0
  10. package/dist/config/endpoints.config.d.ts.map +1 -0
  11. package/dist/config/endpoints.config.js +8 -0
  12. package/dist/config/endpoints.config.js.map +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +82 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/logger.d.ts +3 -0
  18. package/dist/lib/logger.d.ts.map +1 -0
  19. package/dist/lib/logger.js +18 -0
  20. package/dist/lib/logger.js.map +1 -0
  21. package/dist/package.json +141 -0
  22. package/dist/routes/index.d.ts +4 -0
  23. package/dist/routes/index.d.ts.map +1 -0
  24. package/dist/routes/index.js +16 -0
  25. package/dist/routes/index.js.map +1 -0
  26. package/dist/routes/v1/decrypt.d.ts +4 -0
  27. package/dist/routes/v1/decrypt.d.ts.map +1 -0
  28. package/dist/routes/v1/decrypt.js +16 -0
  29. package/dist/routes/v1/decrypt.js.map +1 -0
  30. package/dist/routes/v1/encrypt.d.ts +4 -0
  31. package/dist/routes/v1/encrypt.d.ts.map +1 -0
  32. package/dist/routes/v1/encrypt.js +16 -0
  33. package/dist/routes/v1/encrypt.js.map +1 -0
  34. package/dist/routes/v1/generate.d.ts +4 -0
  35. package/dist/routes/v1/generate.d.ts.map +1 -0
  36. package/dist/routes/v1/generate.js +23 -0
  37. package/dist/routes/v1/generate.js.map +1 -0
  38. package/dist/routes/v1/revoke.d.ts +4 -0
  39. package/dist/routes/v1/revoke.d.ts.map +1 -0
  40. package/dist/routes/v1/revoke.js +15 -0
  41. package/dist/routes/v1/revoke.js.map +1 -0
  42. package/package.json +141 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright © Sebastien Rousseau 2022. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,170 @@
1
+ ![Banner representing Crypto Service](https://raw.githubusercontent.com/sebastienrousseau/crypto-service/master/assets/crypto-server-logo.svg)
2
+
3
+ [![Maintained with Lerna](https://img.shields.io/badge/maintained%20with-lerna-blue?style=for-the-badge)](https://lerna.js.org/)
4
+ [![License](https://img.shields.io/badge/License-MIT-green.svg?style=for-the-badge&logo=)](https://opensource.org/licenses/MIT)
5
+ ![Made with Love](https://raw.githubusercontent.com/sebastienrousseau/crypto-service/master/assets/made-with-love.svg)
6
+
7
+ ## Welcome to Crypto Server
8
+
9
+ Crypto Server is a [Fastify][3] web server that exposes easy consumable REST
10
+ APIs to perform low-level cryptographic operations. It is implemented using
11
+ Node.js and relies on [Crypto Lib][2].
12
+
13
+ It supports the following cryptographic operations:
14
+
15
+ - Digital Signing,
16
+ - Encryption and Decryption,
17
+ - Key Generation,
18
+ - Key Management,
19
+ - Pseudorandom Number Generation,
20
+ - Signature Verification.
21
+
22
+ Development of this server is hosted by [GitHub][6] at the [following page][7].
23
+ Source code is available to everyone under the standard [MIT license][8].
24
+
25
+ ## Getting Started
26
+
27
+ Crypto Server is a [Node.js][4] module available through the [npm registry][5].
28
+ Before installing, [download and install Node.js][4]. Node.js 12.20.0 or higher
29
+ is required.
30
+
31
+ Installation is done using either [`npm`][5],
32
+ [`yarn`][9] or [`pnpm`][10] package managers to use Crypto Server with Node.js
33
+ or the Command Line Interface:
34
+
35
+ - `npm i @sebastienrousseau/crypto-server`
36
+ - `yarn add @sebastienrousseau/crypto-server`
37
+ - `pnpm add @sebastienrousseau/crypto-server`
38
+
39
+ ## Quick start
40
+
41
+ ### Starting the Crypto Server
42
+
43
+ - Open Terminal for Mac or Command Prompt for Windows,
44
+ - Enter one of the following commands to start the Crypto Server:
45
+
46
+ #### NPM
47
+
48
+ - `npm run start:server`
49
+
50
+ #### Yarn
51
+
52
+ - `yarn start:server`
53
+
54
+ #### PNPM
55
+
56
+ - `pnpm start:server`
57
+
58
+ This will start the Crypto Server on your local machine with the following
59
+ environment details:
60
+
61
+ - Protocol: http,
62
+ - Hostname: localhost,
63
+ - Port: 3000,
64
+ - IP: 127.0.0.1.
65
+
66
+ The Crypto Server should be listening on
67
+ [http://localhost:3000/](http://localhost:3000/)
68
+
69
+ ## What are the Crypto Service APIs?
70
+
71
+ The Crypto Service APIs give you access to a range of security and encryption
72
+ solutions to perform low-level cryptographic operations, key storage operations,
73
+ protect static data, and securely share secrets.
74
+
75
+ On arrival of a new API request, the Crypto Server performs the request
76
+ operation in the host environment, subsequently the response is transferred back
77
+ to the requesting application. All operations that are performed andd coming
78
+ through the Crypto Server are monitored so statistics can be made and acted upon
79
+
80
+ The APIs created with Crypto Server should be used with HTTPS endpoints only in
81
+ a production web server.
82
+
83
+ For greater security, you should choose a minimum Transport Layer Security (TLS)
84
+ protocol version to be enforced for your API Gateway custom domain. Crypto
85
+ Server recommends either a TLS version 1.3 or TLS version 1.3 security policy.
86
+
87
+ ### Commands & Options
88
+
89
+ #### `/generate`
90
+
91
+ This endpoint allows you to create a new Key Pair.
92
+
93
+ |Content-Type|Value|Description|
94
+ |---|---|---|
95
+ |type|rsa|The primary key algorithm type: ECC (default) or RSA. |
96
+ |bits|2048|Number of bits for RSA keys (defaults to 4096 bits). |
97
+ |name|Jane Doe|First name and Last name |
98
+ |email|jane@doe.com|Email address |
99
+ |passphrase|123456789abcdef|The passphrase used to encrypt the private key. |
100
+ |curve|null|Elliptic curve for ECC keys. See Appendix for more detail... |
101
+ |expiration|0|Number of seconds from the key creation time. |
102
+ |format|armored|Format of the output keys e.g. 'armored' | 'object' | 'binary'.|
103
+
104
+ ```shell
105
+ curl --location --request GET 'http://localhost:3000/v1/generate' \
106
+ --header 'type: rsa' \
107
+ --header 'bits: 2048' \
108
+ --header 'name: Jane Doe' \
109
+ --header 'email: jane@doe.com' \
110
+ --header 'passphrase: 123456789abcdef' \
111
+ --header 'curve: null' \
112
+ --header 'expiration: 0' \
113
+ --header 'format: armored'
114
+ ```
115
+
116
+ #### `/encrypt`
117
+
118
+ This endpoint allows you to encrypt data in a single operation.
119
+
120
+ |Content-Type|Value|Description|
121
+ |---|---|---|
122
+ |passphrase|123456789abcdef|Passphrase to encrypt the message.|
123
+ |message|Hello Crypto Service!|Message to be encrypted.|
124
+ |publicKey|{{publicKey}}|A public key.|
125
+ |privateKey|{{privateKey}}|A private key.|
126
+
127
+ ```shell
128
+ curl --location --request GET 'http://localhost:3000/v1/encrypt' \
129
+ --header 'passphrase: 123456789abcdef' \
130
+ --header 'message: Hello Crypto Service!' \
131
+ --header 'publicKey: LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4c0JOQkdLSHhCUUJDQURmS0VyYUVnT1VYZHFKVGVTdnUzb2NPWGg2VytxWllDbndOUFVvRjZpcnREbGUKNzVVYTByYkFUZEsxbXF4S1g0L0hraGhzQllQRXdNRHE0RnVzbkxOK0ZnNVdmdGpSR0M5NmJENnRmbVIzClJZY0p5WTEwTFlDRS9GS21iLzFJRGIrT2RtRk8weEpPSWxaTERSeVJSN0xwUlRDNE1mMkRiaFNheExqcwpZdFVhaFZPcCtNeHBkNmFWektYYUpkVVVmVWRYbVliRnpaM0YzK1RMa01zMFdaY05vRDJ3bWNpSGJVUXIKT1JnRkhoQ0I2dUNLNEs3d2R4OStjTllkTkQyb2t6WjJTdmRVenQ3QUZrajFra05XeVM3VWprWmVEdm9UCmp5dFNpZXFMQWJ3L2NUaXRrTjJ1MlZJU1UxMHEwbFhMSERaWWFXTll1OHRMaHFYM0F4c3FNQ1V0QUJFQgpBQUhORjBwaGJtVWdSRzlsSUR4cVlXNWxRR1J2WlM1amIyMCt3c0NLQkJBQkNBQWRCUUppaDhRVUJBc0oKQndnREZRZ0tCQllBQWdFQ0dRRUNHd01DSGdFQUlRa1E5L09ucUlLaTh2RVdJUVExYXRBVHl5WTZZcDFoCjN6ZjM4NmVvZ3FMeThZeUFDQUNudlF1aFMxeHV2YnhUQVdZcWkrcjNFUkpOSzVINUFkOWpFNERUWUZPTQowcDRuMmJwSlQwa2t1bkMzckp0Z2tQbnRNVFJ6eEJvS0QrcmRIdS9FZno1MjNPMENJbjlCOG8vWWpvencKQVFBMldHLzhIdlRYOU0yZVUzOVM3SkptS1I4aks5TDVtYlduV1I2eEZadExSc0pIT2FzSm50S1BsUkFSCnpXNmwweTNjRzRueFJieHM2QS9tczFjM05seDdodjErN24yaTN6d3l2aE52Rys5Y0F0TlM3L3NkLzExbgpYQUJ0QWt2WjU3SnUwWXBKQ3JuMHhvblJuN0kyQ1lTd1BNVTZKMTFIL2l5eXdTNFB5aHlrV2lHMmhNNC8KM3ZMVDdpQVoxZlhkczk0SDFQTW9zNEZMbU50YkphSC83OXRyRFNpem1zY0ExbG9IUlFSOHVvNElKNkx6CnpzQk5CR0tIeEJRQkNBRHNNblVIWkVydTl5V2ljYjRxajJxWGhuanFSOVZHZVdvaEd1UFNRc2dpLzNRRQp4K3FJSjJFeU1LelQ1aXRYT01tQU1pbk5GRGd3ek1FQ081Nk53TWdWUXJnSm5LdnNGR0gxdVFUb0MzaHcKR1pjUDArUTB0aThPWmFLOUZFbngra1FYNXJjYWRGWTBSOW9KTEFNS1JzOU45YmJ2eU40VzRCMW5weklmClF6NWloMUNIQnRqektpVTdaVzBKM1ZLa285NHp4bGZiZVRKS2ZxWnl4eGtuMVVPZWliWWp4dGYrZXZKaQpPOUZMUGpOcGkwem8zZ3kvQ1Y5UGtDUjA3c295aTVJeVVNNE9CRzBoRFNjV2Z4a0xEc0M0b0tzTjJhaGYKeHovSWc0em9FNUk2L0t5c2U1QW1GaWZSaHhaUnRhY3JyOTBqazc4a2Q1S0p6WXhETXhTK0ZzUUJBQkVCCkFBSEN3SFlFR0FFSUFBa0ZBbUtIeEJRQ0d3d0FJUWtROS9PbnFJS2k4dkVXSVFRMWF0QVR5eVk2WXAxaAozemYzODZlb2dxTHk4WDBTQ0FDY0FFTWQ2c2JvVHVOZlVPb2RaQjdvM25NV2RDMEVja1kzSnhLbFE3b0kKV0hpUTNTdU9ibXduWGhSTHJ4TTZ4ZmtUQ3pYK2FUQ2NCemhlZmFMWVU4R1BsSU00SFRhank0MHVNb2Y2CkV3SnpFenpucjhZRVVmdU1Pd094anFrZHpjK2llbk9lT2V6b2dQeTFieGtZTmpHeHpaTFFUekptMkhXWAowOFlNWWtqMXJNTmg0VGZQMnZaYUFHem5LMHBrb0lHdVBHQTdPTTVpRHFIa3pyeWppWG1pV1VVM1lTcHYKMTV5VkEyQXBxN2o1ZFJWd2d4eFpLS2xhOW5iaXhYUEdhTVFSV0w3RUcxM0pMbTFidVlxUXVsVExyMTNkClByKzR2NStlQ3NEZkRpcU9veFYyU000R0ZxanBaRUFBNEZlZFlTMmx1ZXV3WUdvVnRtT1BOdjViME9iUAo9YTZHRQotLS0tLUVORCBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCg==' \
132
+ --header 'privateKey: LS0tLS1CRUdJTiBQR1AgUFJJVkFURSBLRVkgQkxPQ0stLS0tLQoKeGNNR0JHS0h4QlFCQ0FEZktFcmFFZ09VWGRxSlRlU3Z1M29jT1hoNlcrcVpZQ253TlBVb0Y2aXJ0RGxlCjc1VWEwcmJBVGRLMW1xeEtYNC9Ia2hoc0JZUEV3TURxNEZ1c25MTitGZzVXZnRqUkdDOTZiRDZ0Zm1SMwpSWWNKeVkxMExZQ0UvRkttYi8xSURiK09kbUZPMHhKT0lsWkxEUnlSUjdMcFJUQzRNZjJEYmhTYXhManMKWXRVYWhWT3ArTXhwZDZhVnpLWGFKZFVVZlVkWG1ZYkZ6WjNGMytUTGtNczBXWmNOb0Qyd21jaUhiVVFyCk9SZ0ZIaENCNnVDSzRLN3dkeDkrY05ZZE5EMm9reloyU3ZkVXp0N0FGa2oxa2tOV3lTN1Vqa1plRHZvVApqeXRTaWVxTEFidy9jVGl0a04ydTJWSVNVMTBxMGxYTEhEWllhV05ZdTh0TGhxWDNBeHNxTUNVdEFCRUIKQUFIK0NRTUlhRCtXMXJEYitZN2cweXB1M2h0UElQSXZUYm15dkNMOUZKVitLZzdrRFZHVG5QR1Q0NGhMCm9GRXZrNEZIeHdjSHp4SytjLzUvQnltM2JqWlMzMStDNTBqbTQvUDYrVGVPWGRXakVBT1JSQUJxb05pRgpVcUcrSWpiZnlvbkFzSEx5aVcrQ1BDczJyVnlJQTRCdGhHWHBtRmtYQnpIYk5QSTE3cThvS2ZBQnViY3oKeVYrbkxzd1g4TC9md1lRcHRmTjZ2ZGVhNjVUMzdOTGYzWGdkU29SVUx5ZnpsK1VSVEE5dW1kNDRHWUQrCk9pZk1hb2tKZ3E4RENMWHk3R2VYeDh1V1Fod1l3N2hYV3JhWXUyU21VdjdDaWxDeG9QRkNORnh6aFdiQgoraHlpbWVZam9KbS9VeEJtbEZZSHY0c3Mrb21NazhQQ2M3L1Z3WEZ5U0xpL2M5Q3ROakVCamJIaGZ6VlEKSVFtSVd2aUhibkwzSVNmdkFvR2tPMHBQMHhmczh3dGx6RVhqRm9aRXlUeW1vOGhROXV4V1BxNVFjSkxrCkZrcmhZcUZqYndIMjc3Szd2K2dESHp2SDlHSnljYlhMZHpyVzNmMERPM1NUNHlrcHFQaWdTeHRiMkE1Tgo1STlIbTZmOFl1KzVUNWlVajFiUVdJOEErR0VkZXI5VTl0RjdpN2QycHB2S2VvL0ZxUU10eUh2Wm0zaG4KNmNQNFpyd09Kdmk5b0lsaVhXdHZySWM0QU5SV0FSSks5WkswTlZsdlZxOGEzR1l6SUY3ODNzeTM5dTZ2ClJCeHI4dll3WC9KSjNPR2tnVWlhVW12czBTNmhxU0d5RkRubi9kbUZ6elBlTzZ5eGl2WkhkeWs5T0pGSAo4N0hMdmF6WFdhWExkbWlPOU1WWFpRYWM3NlI1RTZodTk0U0ZRWjZ3YWRsTGxWeW43V0MzT1BYeHFzOXYKS2hyRzk2TkJqYTl3bnBqSFVLb1NDbG9PQW16UEVKWW54a2xGQXhucWJNQ1lCUGV4bFpqKzNzbVY4RWVmCnpmSHJrOTdFZmNEWHZtQTAwK0RtaXYzbi9hampQUjIyTTh5QVkyRFFlbHM4YThZbU1ZMm5JTldyVUIySgoxa1VJcW5rVVc0SmtwY29OZUlQbUJKVTZRSC9pYm9zVTdicW56OG1EZm9QenAyWjYwZ0ZNUEpjM0hISTUKb2JtSW9TUFJUWG85THBkWjdZRmUzUnZ0cDFKVHgzM3F6UmRLWVc1bElFUnZaU0E4YW1GdVpVQmtiMlV1ClkyOXRQc0xBaWdRUUFRZ0FIUVVDWW9mRUZBUUxDUWNJQXhVSUNnUVdBQUlCQWhrQkFoc0RBaDRCQUNFSgpFUGZ6cDZpQ292THhGaUVFTldyUUU4c21PbUtkWWQ4MzkvT25xSUtpOHZHTWdBZ0FwNzBMb1V0Y2JyMjgKVXdGbUtvdnE5eEVTVFN1UitRSGZZeE9BMDJCVGpOS2VKOW02U1U5SkpMcHd0NnliWUpENTdURTBjOFFhCkNnL3EzUjd2eEg4K2R0enRBaUovUWZLUDJJNk04QUVBTmxodi9CNzAxL1RObmxOL1V1eVNaaWtmSXl2UworWm0xcDFrZXNSV2JTMGJDUnptckNaN1NqNVVRRWMxdXBkTXQzQnVKOFVXOGJPZ1A1ck5YTnpaY2U0YjkKZnU1OW90ODhNcjRUYnh2dlhBTFRVdS83SGY5ZFoxd0FiUUpMMmVleWJ0R0tTUXE1OU1hSjBaK3lOZ21FCnNEekZPaWRkUi80c3NzRXVEOG9jcEZvaHRvVE9QOTd5MCs0Z0dkWDEzYlBlQjlUektMT0JTNWpiV3lXaAovKy9iYXcwb3M1ckhBTlphQjBVRWZMcU9DQ2VpODhmREJnUmloOFFVQVFnQTdESjFCMlJLN3ZjbG9uRysKS285cWw0WjQ2a2ZWUm5scUlScmowa0xJSXY5MEJNZnFpQ2RoTWpDczArWXJWempKZ0RJcHpSUTRNTXpCCkFqdWVqY0RJRlVLNENaeXI3QlJoOWJrRTZBdDRjQm1YRDlQa05MWXZEbVdpdlJSSjhmcEVGK2EzR25SVwpORWZhQ1N3RENrYlBUZlcyNzhqZUZ1QWRaNmN5SDBNK1lvZFFod2JZOHlvbE8yVnRDZDFTcEtQZU04WlgKMjNreVNuNm1jc2NaSjlWRG5vbTJJOGJYL25yeVlqdlJTejR6YVl0TTZONE12d2xmVDVBa2RPN0tNb3VTCk1sRE9EZ1J0SVEwbkZuOFpDdzdBdUtDckRkbW9YOGMveUlPTTZCT1NPdnlzckh1UUpoWW4wWWNXVWJXbgpLNi9kSTVPL0pIZVNpYzJNUXpNVXZoYkVBUUFSQVFBQi9na0RDSHVaSUcyc3YvenM0SEhaWEpoMFdKa2kKWitkbjFqYUw3RXowdjVuRzBTWDh6cjFaYWwxU2ZmZFNHcDRFampSbEdNRVdhK25pdkhIQW1QcWdXN0JTCldJdmhYNWN6VTQ0NU1ZOG1TOXFjOGRZT1VMa0FOVUhoTzFtZlZ1U2d6RHdPZUl3eTg4NlkydnVLWnJ1UgpsVm1wZjJ2L1lVdDBDNzNkdTVpZ1hoQmlMMVhJbS93MHFwL2FZN1NmRmNUeEJ2UTVjL1BrSUtmZ2pJeDYKOStRejJ4ZllYSnk5M0Z4MjF0MVMwUFFvRHdTcFZvVjdkc1lRS3ZhMWcyRGNpTmM4UW1TYTV1QlN5ckZ4CjJNaG5MdTY4eTg5SnFNNEgzWjBvUTg2RGhxREE0eWFWaFlnRk1qQ0RSRVJRVXFhb1dBWWJqcHQyVHpHWQphb0tZUVI1VGprbDd1VnFQSlZia3BQbFZXdnJNNDVQblpxSkpjSWdlNmIvVHhoNkE5WWVRaTRtVi9LS3MKS1ZqUWd5OXFUT2V3cmZGNERiODVXdjRiekhEckZyR3hGbVNZTWVPY1h2ZVl0TGZPVlM5RmpiQ1pJZ0U1ClBRaUtXWDNzeXViVHg2eEw1aGUxUVl0SUdoaUJmZS9TV3Z0WUoxZlJUT3Y1MFBkM3JRSjB4ZVJmQ2hONgpQbkQ3ZzBGQ2xIeFJvc1k4dld5ZXNUenVpdUMxTWhPTzlqaGNwVGZpR05wU0dpNjdUNlIzcjVmdTNtSmEKb1UrcGlRSGVDaGhjSjRIeFZkQ24rQ05QS1VqQ3N0RnY0MndvRlMvOHZJeksvZkswZjQzVlRERWtVeUtPClUxUWZiNWRianNrYWpTY3NKd09FYklaeFdySkVDcUtPd2RRaHVMakpnLzNlQldtZUh3NCtWeGJsTFo5MQpvVFZWN1B0MjlqUm50WDN4VXl4d2pSVHVVK0toZ3pVSTFySFAzNCt0NTFoYVR1WmlWbTZFaU1MNUxJTkcKenFvbGgwc0pUcW9JZ1BKNTZtQmFieFcxUmtUMCthWEVXWlY4b0RoK0xoY2d0VGoyd201bXgwUnBmZCswCkJGWmQvTE9EaDBrTGF6ZW14TkRReU5MWVRTbXQwK3hqcUIvUnFlVEZkZ0U3dSthMTFTZm1MejJRaDRBVApvRU5qVS9YREFoWERkQlQ0TkhqOGxtbGxWV0RueGJ4b2xPOE9hWGhVREVsOTBCKzN0S2EyY3d4WnI2ckQKZWNMQWRnUVlBUWdBQ1FVQ1lvZkVGQUliREFBaENSRDM4NmVvZ3FMeThSWWhCRFZxMEJQTEpqcGluV0hmCk4vZnpwNmlDb3ZMeGZSSUlBSndBUXgzcXh1aE80MTlRNmgxa0h1amVjeFowTFFSeVJqY25FcVZEdWdoWQplSkRkSzQ1dWJDZGVGRXV2RXpyRitSTUxOZjVwTUp3SE9GNTlvdGhUd1krVWd6Z2ROcVBMalM0eWgvb1QKQW5NVFBPZXZ4Z1JSKzR3N0E3R09xUjNOejZKNmM1NDU3T2lBL0xWdkdSZzJNYkhOa3RCUE1tYllkWmZUCnhneGlTUFdzdzJIaE44L2E5bG9BYk9jclNtU2dnYTQ4WURzNHptSU9vZVRPdktPSmVhSlpSVGRoS20vWApuSlVEWUNtcnVQbDFGWENESEZrb3FWcjJkdUxGYzhab3hCRll2c1FiWGNrdWJWdTVpcEM2Vk11dlhkMCsKdjdpL241NEt3TjhPS282akZYWkl6Z1lXcU9sa1FBRGdWNTFoTGFXNTY3QmdhaFcyWTQ4Mi9sdlE1czg9Cj1rTjFICi0tLS0tRU5EIFBHUCBQUklWQVRFIEtFWSBCTE9DSy0tLS0tCg=='
133
+ ```
134
+
135
+ #### `/decrypt`
136
+
137
+ This endpoint allows you to decrypt data in a single operation.
138
+
139
+ |Content-Type|Value|Description|
140
+ |---|---|---|
141
+ |passphrase|123456789abcdef|Passphrase to decrypt the message.|
142
+ |message|{{data}}|Message to be decrypted.|
143
+
144
+ ```shell
145
+ curl --location --request GET 'http://localhost:3000/v1/decrypt' \
146
+ --header 'passphrase: 123456789abcdef' \
147
+ --header 'message: LS0tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS0tCgp3Y0ZNQXpMNWFTdVU0RWM4QVJBQWtnUUVEMVNwaTN5MmRrME1kbHQwYmtsMEdIWEoxbytxZHdzeWxZdlIKcjVycGVydXVmeWd3V0JTR1p6UHNSMG51MFg4SWxIQ0hYR2pha0N2WFVhMEZHTFNHR2pqRHdZQmViZjAvCitIVE51K1BMYzRvVmlvMXAwZEZraFFuOVVHSG82b1NVQmNqcmdsWTlsTW4ySzg3RVp2M1BUZ2k3aGtiMwpOWVhFazl5dWdLalVGU1RtMERDdGdpNkt2YUpycURpZStLbnJxSVNrckpxS0I0T1FuOUlNQk1UY3kxVEgKQld2QStyQ2llSFBNRHIrNFRwbTU5cFgxQUhCb0xPRm9WK1c1YlJoNEY5VHVxNzRaMW9pV2cyUFFEM252CjFtdnlZN1VIdEVuczBFbzYvWFRTQnZzNndQdFBJT2FoWGlTSC9UYmNod1RNTjlBZ1NSa3YzeEpWcGhjSgpPaGRGaFNMQ1dSUlR5UGxlUWpNeEoyemwwRm1JM2IrZnNYUkZlKzRCRjhiQjl6MUV4Nk9KOE1raG9yOFYKN3B5ZHR2UUVBVFlXMHVEc3pNb09UNHhqYnUvL29ESk45dnRINnBTY1hnQ3o2MGI4TTdHaXl6VGFoV3FLCmsvSklVWHJORjB2cjk3RWVnRGs3VXNFV3Y4MFhYdkg3dEtVTFNQcnRSTmxnbytqSjk5SzBmcm9iK1QxQwpIcVp4UzdpZCsxaTJOOHhQcUZnd2lDeHhXS1dMTGllQW1GRVVuQ3NXYUR0b05OZUhYbkJyLzk5b25PZGoKd0pWT0krQS9uZlU5bXh2ZGFnWlNqWnlMQ0ZDa1REQ05GeWxKL0dmUnZIWndBNGsya0ZqZXUvQWhQa0Y5Ck1EQktZdmNSWFJudklLOW5STHhIYjZKMUpoS3ppbnFpbHgrZmpQak9kdVRTd2NzQnlicThXenRPbmpscwp3WkZZVU9uQjdsQ0N4d3lxc3hqNlBQdkpLODFTOTBhaElQMkNUVVVsWWlMWTRSa05qRjlwNnArSXZoVW4KeFB3UXFwSU03V2ZpckZOM0tJT3QrOWpyazE3YStFVWtOelBuNm5jMHdobTUzWDFtaWhHOEJPYXc5UFgwCmlSWHZuTTlEL0dkWHI4ZTNhWDFRTnBXOVVlKzZ5c1NqZi85bEs5MVo5aTl4eUpmSW51eS9EdXpjSGtYawpTa1Z5VjRablE3MCsrY0JvN1JaYUkzZ3Zuak9HYkF2Z3dVakJIYUoyL0Vqd0oyd1FESm9lbkVYdUFEeTcKOHhLRWk2V2p3V1lBUXVlUmh1cGdhYmJIcVFGazltTWhHSGcvMlpkNkViMTYyTmVYeTU2RkYrK1lWSm5jCnJrSVN5bkFmdWJSc1hmZXUxYS9TWWJvR2h0cTNheWQ3VTM3YVpCUmtuclFieldxYituV2YvRk54YkRvRAprTkpsV1BDSHZBeHhNRTd3U2gxRkZQNmtCL24yVWxTV1JNUWZwY25hbzFFUW9QUGdQcWtDcm9vSXh4WVMKWEsySlEzOWtucmpmY053bEJZYlVkZnlNaVlSRi84cHJxT25YU242czJDTUN6WjAzamlNeEpYYmFDS0N6CnNqVXpmMDVMTnJ5V01nR0dmQWFRcWZhN3NYM3NtL3VjL09IV25paFpVaWsrVlZQbzNPVGE1NG0vRnd2YgpjQmxseFV6UHVYSzg3NG1lQVNPanRZc2luOUQzVnNIWVdHa0g5azJ6eFgyZEU1cTZUeGxUaU9FOWx0UHUKRWxmWXloU1dtMXJYVUxDZmprYkE2TjlSSEFMR0VNU0Uwa3p1QXpGZmh0OFlpVkhxcHZULytrWjF1azA3ClZLejhnS09UQllMNG84ZWt6V2ZJZ2N3MThkcmZ4SThIUHQ1cUtEZzJpUUM3M1BBS1gxaEJxVHp4LzJSbAptS2FBeFZ5NW1yanVwWmV3RnpMc2tiYlRhYWszd0Y2eHZVWktFNmFHdFRFcnZIVWJlL0xoL00zajVBQTQKUGRZQSs3djZMd3BTcGRVYTRQK2xKb0d0SVQremRQTXF2TE1Od3lyYk9nSWVveEZXZHNxQk9qM1kwNk0xCmhJUk9IamRnVG9yUUhvOD0KPTh4MUMKLS0tLS1FTkQgUEdQIE1FU1NBR0UtLS0tLQo='
148
+ ```
149
+
150
+ ## Contributing to Crypto Server
151
+
152
+ Contributions to Crypto Server are welcomed and encouraged! Please see our
153
+ [Contributing Guidelines][1] for further details on the process for submitting
154
+ pull requests to us.
155
+
156
+ ## Appendix
157
+
158
+ *Elliptic curve for ECC keys: curve25519, p256, p384, p521, secp256k1,
159
+ brainpoolP256r1,brainpoolP384r1, or brainpoolP512r1.*
160
+
161
+ [1]: https://github.com/sebastienrousseau/crypto-server/blob/master/.github/CONTRIBUTING.md
162
+ [2]: https://github.com/sebastienrousseau/crypto-service/tree/main/packages/crypto-lib
163
+ [3]: https://www.fastify.io
164
+ [4]: https://nodejs.org/en/
165
+ [5]: https://www.npmjs.com/
166
+ [6]: https://github.com
167
+ [7]: https://github.com/sebastienrousseau/crypto-server
168
+ [8]: https://github.com/sebastienrousseau/crypto-server/blob/main/LICENSE
169
+ [9]: https://yarnpkg.com/getting-started
170
+ [10]: https://pnpm.io/motivation
@@ -0,0 +1,21 @@
1
+ export declare type IQuerystring = {
2
+ username: string;
3
+ password: string;
4
+ };
5
+ export declare type IHeadersKeyBody = {
6
+ type: string;
7
+ bits: string;
8
+ name: string;
9
+ email: string;
10
+ passphrase: string;
11
+ curve: string;
12
+ expiration: string;
13
+ format: string;
14
+ message: string;
15
+ sign: string;
16
+ };
17
+ export declare type IHeadersBody = {
18
+ passphrase: string;
19
+ message: string;
20
+ };
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/@types/types.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,oBAAY,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/@types/types.ts"],"names":[],"mappings":""}
package/dist/COPYRIGHT ADDED
@@ -0,0 +1,14 @@
1
+ /*
2
+ * ____ _ ____
3
+ * / ___|_ __ _ _ _ __ | |_ ___ / ___| ___ _ ____ _____ _ __
4
+ * | | | '__| | | | '_ \| __/ _ \ \___ \ / _ \ '__\ \ / / _ \ '__|
5
+ * | |___| | | |_| | |_) | || (_) | ___) | __/ | \ V / __/ |
6
+ * \____|_| \__, | .__/ \__\___/ |____/ \___|_| \_/ \___|_|
7
+ * |___/|_|
8
+ * Crypto Server
9
+ * https://cryptosvr.io
10
+ *
11
+ * Copyright (c) Sebastien Rousseau 2022. All rights reserved
12
+ * Licensed under the MIT license
13
+ *
14
+ */
@@ -0,0 +1,90 @@
1
+ ┌───────────────────────────────────────────┬───────────┬────────────────┐
2
+ │ File │ Size │ Size (gzipped) │
3
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
4
+ │ COPYRIGHT │ 477 B │ 262 B │
5
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
6
+ │ Makefile │ 2.79 kB │ 1.01 kB │
7
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
8
+ │ Report.txt │ 0 B │ 20 B │
9
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
10
+ │ index.d.ts │ 46 B │ 66 B │
11
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
12
+ │ index.d.ts.map │ 104 B │ 104 B │
13
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
14
+ │ index.js │ 3.12 kB │ 1.22 kB │
15
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
16
+ │ index.js.map │ 1.62 kB │ 577 B │
17
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
18
+ │ package.json │ 4.91 kB │ 1.59 kB │
19
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
20
+ │ sebastienrousseau-crypto-server-0.0.1.tgz │ 17.3 kB │ 17.4 kB │
21
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
22
+ │ @types/types.d.ts │ 446 B │ 196 B │
23
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
24
+ │ @types/types.d.ts.map │ 566 B │ 225 B │
25
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
26
+ │ @types/types.js │ 110 B │ 124 B │
27
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
28
+ │ @types/types.js.map │ 112 B │ 109 B │
29
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
30
+ │ config/endpoints.config.d.ts │ 167 B │ 146 B │
31
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
32
+ │ config/endpoints.config.d.ts.map │ 151 B │ 131 B │
33
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
34
+ │ config/endpoints.config.js │ 269 B │ 212 B │
35
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
36
+ │ config/endpoints.config.js.map │ 309 B │ 189 B │
37
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
38
+ │ lib/logger.d.ts │ 107 B │ 110 B │
39
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
40
+ │ lib/logger.d.ts.map │ 164 B │ 144 B │
41
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
42
+ │ lib/logger.js │ 725 B │ 379 B │
43
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
44
+ │ lib/logger.js.map │ 652 B │ 331 B │
45
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
46
+ │ routes/index.d.ts │ 160 B │ 144 B │
47
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
48
+ │ routes/index.d.ts.map │ 176 B │ 157 B │
49
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
50
+ │ routes/index.js │ 653 B │ 304 B │
51
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
52
+ │ routes/index.js.map │ 364 B │ 203 B │
53
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
54
+ │ routes/v1/decrypt.d.ts │ 162 B │ 146 B │
55
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
56
+ │ routes/v1/decrypt.d.ts.map │ 186 B │ 162 B │
57
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
58
+ │ routes/v1/decrypt.js │ 662 B │ 376 B │
59
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
60
+ │ routes/v1/decrypt.js.map │ 488 B │ 268 B │
61
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
62
+ │ routes/v1/encrypt.d.ts │ 162 B │ 146 B │
63
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
64
+ │ routes/v1/encrypt.d.ts.map │ 186 B │ 162 B │
65
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
66
+ │ routes/v1/encrypt.js │ 662 B │ 372 B │
67
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
68
+ │ routes/v1/encrypt.js.map │ 488 B │ 267 B │
69
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
70
+ │ routes/v1/generate.d.ts │ 163 B │ 146 B │
71
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
72
+ │ routes/v1/generate.d.ts.map │ 189 B │ 162 B │
73
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
74
+ │ routes/v1/generate.js │ 1.01 kB │ 460 B │
75
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
76
+ │ routes/v1/generate.js.map │ 857 B │ 314 B │
77
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
78
+ │ routes/v1/revoke.d.ts │ 161 B │ 146 B │
79
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
80
+ │ routes/v1/revoke.d.ts.map │ 184 B │ 161 B │
81
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
82
+ │ routes/v1/revoke.js │ 608 B │ 365 B │
83
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
84
+ │ routes/v1/revoke.js.map │ 440 B │ 257 B │
85
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
86
+ ├───────────────────────────────────────────┼───────────┼────────────────┤
87
+ │ Total files: 41 │ 42.1 kB │ 29.2 kB │
88
+ └───────────────────────────────────────────┴───────────┴────────────────┘
89
+
90
+
@@ -0,0 +1,7 @@
1
+ declare const _default: {
2
+ HOST: string;
3
+ PORT: string | number;
4
+ PROTOCOL: string;
5
+ };
6
+ export default _default;
7
+ //# sourceMappingURL=endpoints.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.config.d.ts","sourceRoot":"","sources":["../../src/config/endpoints.config.ts"],"names":[],"mappings":";;;;;AAAA,wBAIE"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = {
4
+ HOST: process.env.HOST ?? "localhost",
5
+ PORT: process.env.PORT ?? 3000,
6
+ PROTOCOL: process.env.PROTOCOL ?? "http",
7
+ };
8
+ //# sourceMappingURL=endpoints.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints.config.js","sourceRoot":"","sources":["../../src/config/endpoints.config.ts"],"names":[],"mappings":";;AAAA,kBAAe;IACb,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW;IACrC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;IAC9B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM;CACzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const endpoints_config_1 = __importDefault(require("./config/endpoints.config"));
30
+ const accepts_1 = __importDefault(require("@fastify/accepts"));
31
+ const etag_1 = __importDefault(require("@fastify/etag"));
32
+ const fastify_1 = __importDefault(require("fastify"));
33
+ const fastify_healthcheck_1 = __importDefault(require("fastify-healthcheck"));
34
+ const logger_1 = __importDefault(require("./lib/logger"));
35
+ const routes_1 = __importDefault(require("./routes"));
36
+ const app = (0, fastify_1.default)({
37
+ bodyLimit: 256 * 1024 * 1,
38
+ caseSensitive: true,
39
+ connectionTimeout: 0,
40
+ disableRequestLogging: false,
41
+ ignoreTrailingSlash: false,
42
+ keepAliveTimeout: 5000,
43
+ logger: true,
44
+ maxParamLength: 100,
45
+ onConstructorPoisoning: "error",
46
+ onProtoPoisoning: "error",
47
+ return503OnClosing: true,
48
+ trustProxy: true,
49
+ });
50
+ const HOST = endpoints_config_1.default.HOST || "localhost";
51
+ const PORT = endpoints_config_1.default.PORT || 3000;
52
+ const PROTOCOL = endpoints_config_1.default.PROTOCOL || "http";
53
+ const consoleOutput = [
54
+ "\n → protocol: " + PROTOCOL,
55
+ "\n → hostname: " + HOST,
56
+ "\n → port: " + PORT,
57
+ "\n",
58
+ ];
59
+ logger_1.default.info("\n\nEnvironment details: " + consoleOutput);
60
+ app.register(accepts_1.default);
61
+ app.register(etag_1.default);
62
+ app.register(fastify_healthcheck_1.default, { healthcheckUrl: "/health" });
63
+ app.register(Promise.resolve().then(() => __importStar(require("@fastify/compress"))), {
64
+ global: true,
65
+ });
66
+ app.get("/", async () => {
67
+ return { hello: "Hello Crypto Server!" };
68
+ });
69
+ (0, routes_1.default)(app);
70
+ const start = async () => {
71
+ try {
72
+ await app.listen(PORT, HOST).then(() => {
73
+ logger_1.default.info(`Server listening on http://${HOST}:${PORT}/`);
74
+ });
75
+ }
76
+ catch (err) {
77
+ app.log.error(err);
78
+ process.exit(1);
79
+ }
80
+ };
81
+ start();
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iFAAwD;AAExD,+DAAuC;AACvC,yDAAiC;AACjC,sDAA8B;AAC9B,8EAAqD;AACrD,0DAAkC;AAClC,sDAA8B;AAE9B,MAAM,GAAG,GAAG,IAAA,iBAAO,EAAC;IAClB,SAAS,EAAE,GAAG,GAAG,IAAI,GAAG,CAAC;IACzB,aAAa,EAAE,IAAI;IACnB,iBAAiB,EAAE,CAAC;IACpB,qBAAqB,EAAE,KAAK;IAC5B,mBAAmB,EAAE,KAAK;IAC1B,gBAAgB,EAAE,IAAI;IACtB,MAAM,EAAE,IAAI;IACZ,cAAc,EAAE,GAAG;IACnB,sBAAsB,EAAE,OAAO;IAC/B,gBAAgB,EAAE,OAAO;IACzB,kBAAkB,EAAE,IAAI;IACxB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAGH,MAAM,IAAI,GAAG,0BAAe,CAAC,IAAI,IAAI,WAAW,CAAC;AACjD,MAAM,IAAI,GAAG,0BAAe,CAAC,IAAI,IAAI,IAAI,CAAC;AAC1C,MAAM,QAAQ,GAAG,0BAAe,CAAC,QAAQ,IAAI,MAAM,CAAC;AAGpD,MAAM,aAAa,GAAG;IACpB,iBAAiB,GAAG,QAAQ;IAC5B,iBAAiB,GAAG,IAAI;IACxB,aAAa,GAAG,IAAI;IACpB,IAAI;CACL,CAAC;AACF,gBAAM,CAAC,IAAI,CAAC,2BAA2B,GAAG,aAAa,CAAC,CAAC;AAGzD,GAAG,CAAC,QAAQ,CAAC,iBAAO,CAAC,CAAC;AACtB,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,CAAC;AACnB,GAAG,CAAC,QAAQ,CAAC,6BAAkB,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;AAGhE,GAAG,CAAC,QAAQ,mDAAQ,mBAAmB,KAAG;IACxC,MAAM,EAAE,IAAI;CACb,CAAC,CAAC;AAEH,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;IACtB,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAM,EAAC,GAAG,CAAC,CAAC;AAMZ,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACvB,IAAI;QACF,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACrC,gBAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;AACH,CAAC,CAAC;AACF,KAAK,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const logger: import("winston").Logger;
2
+ export default logger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM,0BAmBV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const winston_1 = require("winston");
4
+ const uuid_1 = require("uuid");
5
+ const correlationId = (0, uuid_1.v4)();
6
+ const logger = (0, winston_1.createLogger)({
7
+ format: winston_1.format.combine(winston_1.format.timestamp({
8
+ format: "YYYY-MM-DD HH:mm:ss",
9
+ }), winston_1.format.json()),
10
+ transports: [
11
+ new winston_1.transports.Console({
12
+ level: "info",
13
+ format: winston_1.format.combine(winston_1.format.colorize(), winston_1.format.printf((info) => `${correlationId} | ${info.timestamp} | ${info.level}: ${info.message}`)),
14
+ }),
15
+ ],
16
+ });
17
+ exports.default = logger;
18
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":";;AAAA,qCAA2D;AAC3D,+BAAoC;AACpC,MAAM,aAAa,GAAG,IAAA,SAAM,GAAE,CAAC;AAE/B,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC;IAC1B,MAAM,EAAE,gBAAM,CAAC,OAAO,CACpB,gBAAM,CAAC,SAAS,CAAC;QACf,MAAM,EAAE,qBAAqB;KAC9B,CAAC,EACF,gBAAM,CAAC,IAAI,EAAE,CACd;IACD,UAAU,EAAE;QACV,IAAI,oBAAU,CAAC,OAAO,CAAC;YACrB,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,gBAAM,CAAC,OAAO,CACpB,gBAAM,CAAC,QAAQ,EAAE,EACjB,gBAAM,CAAC,MAAM,CACX,CAAC,IAAI,EAAE,EAAE,CACP,GAAG,aAAa,MAAM,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAC1E,CACF;SACF,CAAC;KACH;CACF,CAAC,CAAC;AAEH,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,141 @@
1
+ {
2
+ "author": "Sebastien Rousseau <hello@crypto-service.co> (https://github.com/sebastienrousseau/crypto-service)",
3
+ "autoupdate": {
4
+ "fileMap": [
5
+ {
6
+ "basePath": "dist",
7
+ "files": [
8
+ "**/*"
9
+ ]
10
+ }
11
+ ],
12
+ "source": "git",
13
+ "target": "git://github.com/sebastienrousseau/crypto-service.git"
14
+ },
15
+ "bin": {
16
+ "crypto-server": "bin/crypto-server.js"
17
+ },
18
+ "bugs": {
19
+ "url": "https://github.com/sebastienrousseau/crypto-service/issues"
20
+ },
21
+ "dependencies": {
22
+ "@fastify/accepts": "^3.0.0",
23
+ "@fastify/compress": "^5.0.0",
24
+ "@fastify/etag": "^3.0.0",
25
+ "@fastify/helmet": "^8.0.0",
26
+ "@types/node": "latest",
27
+ "@types/uuid": "^8.3.4",
28
+ "fastify": "^3.29.0",
29
+ "fastify-healthcheck": "^3.1.0",
30
+ "fastify-tsconfig": "^1.0.1",
31
+ "tsconfig-paths": "^4.0.0",
32
+ "winston": "^3.7.2"
33
+ },
34
+ "description": "Crypto Server is a Fastify web server that exposes easy consumable REST APIs to perform low-level cryptographic operations. It is implemented using Node.js and relies on Crypto Lib.",
35
+ "devDependencies": {
36
+ "@sebastienrousseau/c8-config": "^0.0.1",
37
+ "@sebastienrousseau/crypto-lib": "^0.0.1",
38
+ "@sebastienrousseau/eslint-config": "^0.0.2",
39
+ "@sebastienrousseau/jsdoc-config": "^0.0.5",
40
+ "@sebastienrousseau/markdownlint-config": "^0.0.1",
41
+ "@sebastienrousseau/mocha-config": "^0.0.1",
42
+ "@sebastienrousseau/prettier-config": "^0.0.4",
43
+ "@sebastienrousseau/remark-config": "^0.0.3",
44
+ "@typescript-eslint/eslint-plugin": "^5.26.0",
45
+ "@typescript-eslint/parser": "^5.26.0",
46
+ "c8": "^7.11.3",
47
+ "chai": "^4.3.6",
48
+ "dotenv": "^16.0.1",
49
+ "eslint": "^8.16.0",
50
+ "filesizes": "^0.1.2",
51
+ "minami": "^1.2.3",
52
+ "mocha": "^10.0.0",
53
+ "prettier": "^2.6.2",
54
+ "remark-cli": "^10.0.1",
55
+ "remark-footnotes": "^4.0.1",
56
+ "remark-preset-lint-consistent": "^5.1.1",
57
+ "remark-preset-lint-markdown-style-guide": "^5.1.2",
58
+ "remark-preset-lint-recommended": "^6.1.2",
59
+ "rimraf": "^3.0.2",
60
+ "typedoc-plugin-missing-exports": "^0.22.6",
61
+ "typedoc": "^0.22.15",
62
+ "typescript": "^4.7.2"
63
+ },
64
+ "directories": {
65
+ "src": "./src"
66
+ },
67
+ "engines": {
68
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
69
+ },
70
+ "files": [
71
+ "dist/"
72
+ ],
73
+ "funding": [
74
+ {
75
+ "type": "github",
76
+ "url": "https://github.com/sponsors/sebastienrousseau"
77
+ },
78
+ {
79
+ "type": "paypal",
80
+ "url": "https://paypal.me/wwdseb"
81
+ }
82
+ ],
83
+ "homepage": "https://cryptosvr.io",
84
+ "keywords": [
85
+ "crypto-api",
86
+ "crypto-library",
87
+ "crypto-service",
88
+ "cryptography",
89
+ "cryptoservice",
90
+ "decryption-tool",
91
+ "decryption",
92
+ "ecc-cryptography",
93
+ "ecc-key-encryption",
94
+ "ecc",
95
+ "encryption-tool",
96
+ "encryption",
97
+ "encryption",
98
+ "openpgpjs",
99
+ "rfc4880",
100
+ "rsa-cryptography",
101
+ "rsa-decryption",
102
+ "rsa"
103
+ ],
104
+ "license": "MIT",
105
+ "license_URI": "http://www.opensource.org/licenses/mit-license.php",
106
+ "lockfileVersion": 1,
107
+ "main": "./dist/index.js",
108
+ "name": "@sebastienrousseau/crypto-server",
109
+ "private": false,
110
+ "publishConfig": {
111
+ "access": "public",
112
+ "registry": "https://npm.pkg.github.com"
113
+ },
114
+ "repository": {
115
+ "directory": "packages/crypto-server",
116
+ "type": "git",
117
+ "url": "git@github.com:sebastienrousseau/crypto-service.git"
118
+ },
119
+ "scripts": {
120
+ "build": "tsc -b && yarn run copy:makefile && yarn copy:package && yarn run copy:copyright && yarn run filesize:distribution",
121
+ "clean": "rimraf ./dist ./docs ./node_modules && rimraf tsconfig.tsbuildinfo",
122
+ "copy:package": "cp ./package.json ./dist/",
123
+ "copy:copyright": "cp COPYRIGHT dist/",
124
+ "copy:license": "cp LICENSE dist/",
125
+ "copy:makefile": "cp Makefile dist/",
126
+ "copy:readme": "cp README.md dist/",
127
+ "docs": "typedoc",
128
+ "fix": "eslint --fix src/**/*.ts",
129
+ "filesize:distribution": "filesizes dist/ > dist/Report.txt",
130
+ "lint": "eslint src/**/*.ts",
131
+ "markdown": "yarn remark ./*.md packages/**/*.md --rc-path ./.remarkrc --quiet",
132
+ "prepack": "yarn build",
133
+ "prettier": "prettier --write src/**/*.ts",
134
+ "release:prepare": "yarn pack",
135
+ "release:publish": "yarn publish --access public --ignore-scripts --@OWNER:registry='https://registry.npmjs.org'",
136
+ "start": "node dist/index.js",
137
+ "test": "c8 --config=.c8rc mocha --config=.mocharc"
138
+ },
139
+ "types": "./dist/index.d.ts",
140
+ "version": "0.0.1"
141
+ }
@@ -0,0 +1,4 @@
1
+ import * as fastify from "fastify";
2
+ declare const _default: (app: fastify.FastifyInstance) => void;
3
+ export default _default;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;8BAOd,QAAQ,eAAe;AAA5C,wBAKE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const generate_1 = __importDefault(require("./v1/generate"));
7
+ const encrypt_1 = __importDefault(require("./v1/encrypt"));
8
+ const decrypt_1 = __importDefault(require("./v1/decrypt"));
9
+ const revoke_1 = __importDefault(require("./v1/revoke"));
10
+ exports.default = (app) => {
11
+ (0, generate_1.default)(app);
12
+ (0, encrypt_1.default)(app);
13
+ (0, decrypt_1.default)(app);
14
+ (0, revoke_1.default)(app);
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":";;;;;AAEA,6DAA0C;AAC1C,2DAAwC;AACxC,2DAAwC;AACxC,yDAAsC;AAEtC,kBAAe,CAAC,GAA4B,EAAE,EAAE;IAC9C,IAAA,kBAAa,EAAC,GAAG,CAAC,CAAC;IACnB,IAAA,iBAAY,EAAC,GAAG,CAAC,CAAC;IAClB,IAAA,iBAAY,EAAC,GAAG,CAAC,CAAC;IAClB,IAAA,gBAAW,EAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as fastify from 'fastify';
2
+ declare const _default: (app: fastify.FastifyInstance) => void;
3
+ export default _default;
4
+ //# sourceMappingURL=decrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/decrypt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;8BAId,QAAQ,eAAe;AAA5C,wBAUE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const decrypt_1 = __importDefault(require("@sebastienrousseau/crypto-lib/dist/lib/decrypt"));
7
+ exports.default = (app) => {
8
+ app.get("/v1/decrypt", async (request, reply) => {
9
+ const encryptedData = await (0, decrypt_1.default)({
10
+ message: request.headers["message"],
11
+ passphrase: request.headers["passphrase"],
12
+ });
13
+ reply.send({ data: encryptedData });
14
+ });
15
+ };
16
+ //# sourceMappingURL=decrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../../src/routes/v1/decrypt.ts"],"names":[],"mappings":";;;;;AACA,6FAAqE;AAGrE,kBAAe,CAAC,GAA4B,EAAE,EAAE;IAC9C,GAAG,CAAC,GAAG,CAEJ,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAO,EAAC;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YACnC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;SAC1C,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as fastify from 'fastify';
2
+ declare const _default: (app: fastify.FastifyInstance) => void;
3
+ export default _default;
4
+ //# sourceMappingURL=encrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/encrypt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;8BAId,QAAQ,eAAe;AAA5C,wBAUE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const encrypt_1 = __importDefault(require("@sebastienrousseau/crypto-lib/dist/lib/encrypt"));
7
+ exports.default = (app) => {
8
+ app.get("/v1/encrypt", async (request, reply) => {
9
+ const encryptedData = await (0, encrypt_1.default)({
10
+ message: request.headers["message"],
11
+ passphrase: request.headers["passphrase"],
12
+ });
13
+ reply.send({ data: encryptedData });
14
+ });
15
+ };
16
+ //# sourceMappingURL=encrypt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypt.js","sourceRoot":"","sources":["../../../src/routes/v1/encrypt.ts"],"names":[],"mappings":";;;;;AACA,6FAAqE;AAGrE,kBAAe,CAAC,GAA4B,EAAE,EAAE;IAC9C,GAAG,CAAC,GAAG,CAEJ,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzC,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAO,EAAC;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YACnC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;SAC1C,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as fastify from 'fastify';
2
+ declare const _default: (app: fastify.FastifyInstance) => void;
3
+ export default _default;
4
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;8BAId,QAAQ,eAAe;AAA5C,wBAiBE"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const generate_1 = __importDefault(require("@sebastienrousseau/crypto-lib/dist/lib/generate"));
7
+ exports.default = (app) => {
8
+ app.get("/v1/generate", async (request, reply) => {
9
+ const generateKeyPair = await (0, generate_1.default)({
10
+ type: request.headers["type"],
11
+ bits: Number(request.headers["bits"]),
12
+ name: request.headers["name"],
13
+ email: request.headers["email"],
14
+ passphrase: request.headers["passphrase"],
15
+ curve: request.headers["curve"],
16
+ expiration: Number(request.headers["expiration"]),
17
+ format: request.headers["format"],
18
+ sign: Boolean(request.headers["sign"]),
19
+ });
20
+ reply.send({ data: generateKeyPair });
21
+ });
22
+ };
23
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/routes/v1/generate.ts"],"names":[],"mappings":";;;;;AACA,+FAAuE;AAGvE,kBAAe,CAAC,GAA4B,EAAE,EAAE;IAC9C,GAAG,CAAC,GAAG,CAEJ,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,MAAM,IAAA,kBAAQ,EAAC;YACrC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YAC/B,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;YACzC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;YAC/B,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YACjC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SACvC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as fastify from 'fastify';
2
+ declare const _default: (app: fastify.FastifyInstance) => void;
3
+ export default _default;
4
+ //# sourceMappingURL=revoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.d.ts","sourceRoot":"","sources":["../../../src/routes/v1/revoke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;8BAId,QAAQ,eAAe;AAA5C,wBASE"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const revoke_1 = __importDefault(require("@sebastienrousseau/crypto-lib/dist/lib/revoke"));
7
+ exports.default = (app) => {
8
+ app.get("/v1/revoke", async (request, reply) => {
9
+ const encryptedData = await (0, revoke_1.default)({
10
+ passphrase: request.headers["passphrase"],
11
+ });
12
+ reply.send({ data: encryptedData });
13
+ });
14
+ };
15
+ //# sourceMappingURL=revoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revoke.js","sourceRoot":"","sources":["../../../src/routes/v1/revoke.ts"],"names":[],"mappings":";;;;;AACA,2FAAmE;AAGnE,kBAAe,CAAC,GAA4B,EAAE,EAAE;IAC9C,GAAG,CAAC,GAAG,CAEJ,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,aAAa,GAAG,MAAM,IAAA,gBAAM,EAAC;YACjC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;SAC1C,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,141 @@
1
+ {
2
+ "author": "Sebastien Rousseau <hello@crypto-service.co> (https://github.com/sebastienrousseau/crypto-service)",
3
+ "autoupdate": {
4
+ "fileMap": [
5
+ {
6
+ "basePath": "dist",
7
+ "files": [
8
+ "**/*"
9
+ ]
10
+ }
11
+ ],
12
+ "source": "git",
13
+ "target": "git://github.com/sebastienrousseau/crypto-service.git"
14
+ },
15
+ "bin": {
16
+ "crypto-server": "bin/crypto-server.js"
17
+ },
18
+ "bugs": {
19
+ "url": "https://github.com/sebastienrousseau/crypto-service/issues"
20
+ },
21
+ "dependencies": {
22
+ "@fastify/accepts": "^3.0.0",
23
+ "@fastify/compress": "^5.0.0",
24
+ "@fastify/etag": "^3.0.0",
25
+ "@fastify/helmet": "^8.0.0",
26
+ "@types/node": "latest",
27
+ "@types/uuid": "^8.3.4",
28
+ "fastify": "^3.29.0",
29
+ "fastify-healthcheck": "^3.1.0",
30
+ "fastify-tsconfig": "^1.0.1",
31
+ "tsconfig-paths": "^4.0.0",
32
+ "winston": "^3.7.2"
33
+ },
34
+ "description": "Crypto Server is a Fastify web server that exposes easy consumable REST APIs to perform low-level cryptographic operations. It is implemented using Node.js and relies on Crypto Lib.",
35
+ "devDependencies": {
36
+ "@sebastienrousseau/c8-config": "^0.0.1",
37
+ "@sebastienrousseau/crypto-lib": "^0.0.1",
38
+ "@sebastienrousseau/eslint-config": "^0.0.2",
39
+ "@sebastienrousseau/jsdoc-config": "^0.0.5",
40
+ "@sebastienrousseau/markdownlint-config": "^0.0.1",
41
+ "@sebastienrousseau/mocha-config": "^0.0.1",
42
+ "@sebastienrousseau/prettier-config": "^0.0.4",
43
+ "@sebastienrousseau/remark-config": "^0.0.3",
44
+ "@typescript-eslint/eslint-plugin": "^5.26.0",
45
+ "@typescript-eslint/parser": "^5.26.0",
46
+ "c8": "^7.11.3",
47
+ "chai": "^4.3.6",
48
+ "dotenv": "^16.0.1",
49
+ "eslint": "^8.16.0",
50
+ "filesizes": "^0.1.2",
51
+ "minami": "^1.2.3",
52
+ "mocha": "^10.0.0",
53
+ "prettier": "^2.6.2",
54
+ "remark-cli": "^10.0.1",
55
+ "remark-footnotes": "^4.0.1",
56
+ "remark-preset-lint-consistent": "^5.1.1",
57
+ "remark-preset-lint-markdown-style-guide": "^5.1.2",
58
+ "remark-preset-lint-recommended": "^6.1.2",
59
+ "rimraf": "^3.0.2",
60
+ "typedoc-plugin-missing-exports": "^0.22.6",
61
+ "typedoc": "^0.22.15",
62
+ "typescript": "^4.7.2"
63
+ },
64
+ "directories": {
65
+ "src": "./src"
66
+ },
67
+ "engines": {
68
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
69
+ },
70
+ "files": [
71
+ "dist/"
72
+ ],
73
+ "funding": [
74
+ {
75
+ "type": "github",
76
+ "url": "https://github.com/sponsors/sebastienrousseau"
77
+ },
78
+ {
79
+ "type": "paypal",
80
+ "url": "https://paypal.me/wwdseb"
81
+ }
82
+ ],
83
+ "homepage": "https://cryptosvr.io",
84
+ "keywords": [
85
+ "crypto-api",
86
+ "crypto-library",
87
+ "crypto-service",
88
+ "cryptography",
89
+ "cryptoservice",
90
+ "decryption-tool",
91
+ "decryption",
92
+ "ecc-cryptography",
93
+ "ecc-key-encryption",
94
+ "ecc",
95
+ "encryption-tool",
96
+ "encryption",
97
+ "encryption",
98
+ "openpgpjs",
99
+ "rfc4880",
100
+ "rsa-cryptography",
101
+ "rsa-decryption",
102
+ "rsa"
103
+ ],
104
+ "license": "MIT",
105
+ "license_URI": "http://www.opensource.org/licenses/mit-license.php",
106
+ "lockfileVersion": 1,
107
+ "main": "./dist/index.js",
108
+ "name": "@sebastienrousseau/crypto-server",
109
+ "private": false,
110
+ "publishConfig": {
111
+ "access": "public",
112
+ "registry": "https://npm.pkg.github.com"
113
+ },
114
+ "repository": {
115
+ "directory": "packages/crypto-server",
116
+ "type": "git",
117
+ "url": "git@github.com:sebastienrousseau/crypto-service.git"
118
+ },
119
+ "scripts": {
120
+ "build": "tsc -b && yarn run copy:makefile && yarn copy:package && yarn run copy:copyright && yarn run filesize:distribution",
121
+ "clean": "rimraf ./dist ./docs ./node_modules && rimraf tsconfig.tsbuildinfo",
122
+ "copy:package": "cp ./package.json ./dist/",
123
+ "copy:copyright": "cp COPYRIGHT dist/",
124
+ "copy:license": "cp LICENSE dist/",
125
+ "copy:makefile": "cp Makefile dist/",
126
+ "copy:readme": "cp README.md dist/",
127
+ "docs": "typedoc",
128
+ "fix": "eslint --fix src/**/*.ts",
129
+ "filesize:distribution": "filesizes dist/ > dist/Report.txt",
130
+ "lint": "eslint src/**/*.ts",
131
+ "markdown": "yarn remark ./*.md packages/**/*.md --rc-path ./.remarkrc --quiet",
132
+ "prepack": "yarn build",
133
+ "prettier": "prettier --write src/**/*.ts",
134
+ "release:prepare": "yarn pack",
135
+ "release:publish": "yarn publish --access public --ignore-scripts --@OWNER:registry='https://registry.npmjs.org'",
136
+ "start": "node dist/index.js",
137
+ "test": "c8 --config=.c8rc mocha --config=.mocharc"
138
+ },
139
+ "types": "./dist/index.d.ts",
140
+ "version": "0.0.1"
141
+ }