@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.
- package/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/@types/types.d.ts +21 -0
- package/dist/@types/types.d.ts.map +1 -0
- package/dist/@types/types.js +3 -0
- package/dist/@types/types.js.map +1 -0
- package/dist/COPYRIGHT +14 -0
- package/dist/Report.txt +90 -0
- package/dist/config/endpoints.config.d.ts +7 -0
- package/dist/config/endpoints.config.d.ts.map +1 -0
- package/dist/config/endpoints.config.js +8 -0
- package/dist/config/endpoints.config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/logger.d.ts +3 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +18 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/package.json +141 -0
- package/dist/routes/index.d.ts +4 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +16 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/v1/decrypt.d.ts +4 -0
- package/dist/routes/v1/decrypt.d.ts.map +1 -0
- package/dist/routes/v1/decrypt.js +16 -0
- package/dist/routes/v1/decrypt.js.map +1 -0
- package/dist/routes/v1/encrypt.d.ts +4 -0
- package/dist/routes/v1/encrypt.d.ts.map +1 -0
- package/dist/routes/v1/encrypt.js +16 -0
- package/dist/routes/v1/encrypt.js.map +1 -0
- package/dist/routes/v1/generate.d.ts +4 -0
- package/dist/routes/v1/generate.d.ts.map +1 -0
- package/dist/routes/v1/generate.js +23 -0
- package/dist/routes/v1/generate.js.map +1 -0
- package/dist/routes/v1/revoke.d.ts +4 -0
- package/dist/routes/v1/revoke.d.ts.map +1 -0
- package/dist/routes/v1/revoke.js +15 -0
- package/dist/routes/v1/revoke.js.map +1 -0
- 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
|
+

|
|
2
|
+
|
|
3
|
+
[](https://lerna.js.org/)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+

|
|
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 @@
|
|
|
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
|
+
*/
|
package/dist/Report.txt
ADDED
|
@@ -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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
+
}
|