orgnote-api 0.10.2 → 0.10.4
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/encryption/__tests__/__snapshots__/note-encryption.spec.ts.snap +57 -7
- package/encryption/__tests__/note-encryption.spec.ts +56 -5
- package/encryption/note-encryption.ts +17 -9
- package/package.json +1 -1
- package/tools/__tests__/is-gpg-encrypted.spec.ts +44 -0
- package/tools/index.ts +1 -0
- package/tools/is-gpg-encrypted.ts +3 -0
|
@@ -6,7 +6,8 @@ exports[`Should decrypt note content via password 1`] = `
|
|
|
6
6
|
#+TITLE: Hello worlld
|
|
7
7
|
|
|
8
8
|
* Hello?",
|
|
9
|
-
"encrypted":
|
|
9
|
+
"encrypted": false,
|
|
10
|
+
"encryptionType": "gpgPassword",
|
|
10
11
|
"id": "id",
|
|
11
12
|
"meta": {
|
|
12
13
|
"headings": [
|
|
@@ -27,7 +28,8 @@ exports[`Should decrypt note via provided keys 1`] = `
|
|
|
27
28
|
#+TITLE: Hello worlld
|
|
28
29
|
|
|
29
30
|
* Hello?",
|
|
30
|
-
"encrypted":
|
|
31
|
+
"encrypted": false,
|
|
32
|
+
"encryptionType": "gpgKeys",
|
|
31
33
|
"id": "id",
|
|
32
34
|
"meta": {
|
|
33
35
|
"headings": [
|
|
@@ -49,7 +51,8 @@ exports[`Should encrypt note content via password 1`] = `
|
|
|
49
51
|
"id": "1",
|
|
50
52
|
"name": "John Doe",
|
|
51
53
|
},
|
|
52
|
-
"encrypted":
|
|
54
|
+
"encrypted": true,
|
|
55
|
+
"encryptionType": "gpgPassword",
|
|
53
56
|
"id": "id",
|
|
54
57
|
"meta": {
|
|
55
58
|
"id": undefined,
|
|
@@ -65,7 +68,8 @@ exports[`Should encrypt note via keys 1`] = `
|
|
|
65
68
|
"id": "1",
|
|
66
69
|
"name": "John Doe",
|
|
67
70
|
},
|
|
68
|
-
"encrypted":
|
|
71
|
+
"encrypted": true,
|
|
72
|
+
"encryptionType": "gpgKeys",
|
|
69
73
|
"id": "id",
|
|
70
74
|
"meta": {
|
|
71
75
|
"id": undefined,
|
|
@@ -81,7 +85,7 @@ exports[`Should encrypt note with empty encrypted property 1`] = `
|
|
|
81
85
|
"id": "1",
|
|
82
86
|
"name": "John Doe",
|
|
83
87
|
},
|
|
84
|
-
"encrypted":
|
|
88
|
+
"encrypted": true,
|
|
85
89
|
"id": "id",
|
|
86
90
|
"meta": {
|
|
87
91
|
"id": undefined,
|
|
@@ -101,7 +105,7 @@ exports[`Should not decrypt note without provided encrypted type 1`] = `
|
|
|
101
105
|
#+TITLE: Hello worlld
|
|
102
106
|
|
|
103
107
|
* Hello?",
|
|
104
|
-
"encrypted":
|
|
108
|
+
"encrypted": false,
|
|
105
109
|
"id": "id",
|
|
106
110
|
"meta": {
|
|
107
111
|
"description": "Awesome description",
|
|
@@ -123,7 +127,8 @@ exports[`Should not encrypt public note 1`] = `
|
|
|
123
127
|
#+TITLE: Hello worlld
|
|
124
128
|
|
|
125
129
|
* Hello?",
|
|
126
|
-
"encrypted":
|
|
130
|
+
"encrypted": false,
|
|
131
|
+
"encryptionType": "gpgPassword",
|
|
127
132
|
"id": "id",
|
|
128
133
|
"meta": {
|
|
129
134
|
"description": "Awesome description",
|
|
@@ -133,3 +138,48 @@ exports[`Should not encrypt public note 1`] = `
|
|
|
133
138
|
},
|
|
134
139
|
}
|
|
135
140
|
`;
|
|
141
|
+
|
|
142
|
+
exports[`Should set not encrypted status when params type does not provided 1`] = `
|
|
143
|
+
{
|
|
144
|
+
"content": "-----BEGIN PGP MESSAGE-----
|
|
145
|
+
|
|
146
|
+
wcFMA/vryg+TTn0rAQ//TBFRjKmjRQoLhSrgeH+NbsZXbxvo7Ey4k+BQ9XA5
|
|
147
|
+
+CMpXH9uFUxsSaI5+McUSEt32VI17HRpXQDCL9nwaWqWOanMaRe0tXXhtox2
|
|
148
|
+
gfe2f/6zsge9ux+mXF2BG4z+V5T8XIOrfzxosVprdJHZHM3x7cW5USQ0t2i2
|
|
149
|
+
FiOUWxSZO1899J3yICpMvhDXvTLVZuKpSNQho5PyXSeZa83eN+uYkhgt9lsk
|
|
150
|
+
0KW88Nr435S6n6mVw/zpitXIgEKpkqh46mhG+1W3aC0lYx6j9lHm3bjtdb4r
|
|
151
|
+
2mtZbWKwfdBggEy8qEeiUeslvKd6uWtEccomzFgJkaqWVGknLmrBdHfztRIV
|
|
152
|
+
fbZhxHz+J3GFOIgXf/5+fv+zg0nTazgz1mDUfnTHw3+qcAyEJ0ADdyg9EZc+
|
|
153
|
+
bKbK0GwzMDPQeM+cCRDWUTiIa1ruyEETiwMdhWUDztF8XxY2o8jXPerZ0NhG
|
|
154
|
+
R8l+SvAdYQQXPfxEh9lA3thkyz/Vp72pW46lUeJHGSq/fS6KIdLHLP9Z2e1J
|
|
155
|
+
aCFpNMgyAN+BaXwnbLZfz6k5hV8awbRScSWQLEg69D9b287SFDPOYW7OZikn
|
|
156
|
+
CKXL7xyQ5LrWJZN9Z/UPGjy+PdEw1SBhyluW6DQ+Sz1j4K8USTLqY89EInDl
|
|
157
|
+
G7AxHGujR9UkUGyUvvc71XW7jEOogiDgn1ZMoj9Y58LSweUB8vfkY3VF84Fy
|
|
158
|
+
zGVvLFWnFbtnWuoQC4OOXv1F6ETdmEsSMEMWKzRLDGPyqNX7FhG3cejlEuiK
|
|
159
|
+
EsT5oQhz00RECmnR8mJkGmJhzWmmeoQvaucFqhTOZjvYl9ivuEMBZ2jtkdHn
|
|
160
|
+
R6UNcNZRpCbfnl7YoikqbGBgqDFYydFGHXKHDpYhcQYWJsMDUayzUiPtzmaE
|
|
161
|
+
tgfTgNNqgPxkLnWA99KYNU8DH+FwgaYBuw9dwdqwcjxSbZjHhCFGUfsqM+ik
|
|
162
|
+
O9gcoAwVO1usODlESU7OWuSF2tIv5DBG5rhlSyxBp4d4aWmaumTswAdojy2O
|
|
163
|
+
sM70ETbg0mC8niW9lNsgJp55oFmlksvzjUIit5rBEr55rtPcJSgakPpR2yvd
|
|
164
|
+
Q4XjybUmV0IdONMhk/OlqaBPtnA0RG+qTcm7oP1qH/m5zRA0ZplVQ5ylkQwr
|
|
165
|
+
LwGq5JQpJkgxxgLIrUbbtzYBShXSr5c1XXR0LIRiNgtb6s1s4mt+fbyExdJF
|
|
166
|
+
+ceuu+/xYrW/YTuEJpHxLiZ+aNPW5g5Y7Hbqu3hp3UL/kD44cc8JjZh18spX
|
|
167
|
+
p/ncojDhF2r2vhR+CndYcMkpGMV+t1pGKC8wlcFc7lb9GJASnqMGvhQmvIaG
|
|
168
|
+
gO/x7UjuTZSBW+kITHHZJDqYryKUv1j0CkHxIn9tWsYOpa1giOFtXX5v0AAM
|
|
169
|
+
AJR/s/beLlqwCsUdYnw1TkP/0u0ZK3RPio1nJ7S6ckPfsM7DqCWD8ILD8Cdr
|
|
170
|
+
cuzQrWaE30t5PXx53xBPO+6t5wKfDL35WHWG1Irmvz9UuT7tDS3IzwtF4ijF
|
|
171
|
+
PX6alTbxGnoHgZ4bG4J1wfpTNPppP1gJeVg67VqOypzdZi+SjofMWnFgRFmD
|
|
172
|
+
yEN8xpFUs7A9xryVZOosp9Sfe3IbBkO99sAQ7jV4EoMYk3/GKA==
|
|
173
|
+
=LjkG
|
|
174
|
+
-----END PGP MESSAGE-----",
|
|
175
|
+
"encrypted": true,
|
|
176
|
+
"encryptionType": "gpgKeys",
|
|
177
|
+
"id": "id",
|
|
178
|
+
"meta": {
|
|
179
|
+
"description": "Awesome description",
|
|
180
|
+
"images": [],
|
|
181
|
+
"published": false,
|
|
182
|
+
"title": "My note title for decryption via keys",
|
|
183
|
+
},
|
|
184
|
+
}
|
|
185
|
+
`;
|
|
@@ -16,7 +16,7 @@ test('Should encrypt note content via password', async () => {
|
|
|
16
16
|
|
|
17
17
|
const note: Note = {
|
|
18
18
|
id: 'id',
|
|
19
|
-
|
|
19
|
+
encryptionType: 'gpgPassword',
|
|
20
20
|
meta: {
|
|
21
21
|
title: 'My note title',
|
|
22
22
|
images: [],
|
|
@@ -46,7 +46,7 @@ test('Should encrypt note content via password', async () => {
|
|
|
46
46
|
test('Should decrypt note content via password', async () => {
|
|
47
47
|
const note: Note = {
|
|
48
48
|
id: 'id',
|
|
49
|
-
|
|
49
|
+
encryptionType: 'gpgPassword',
|
|
50
50
|
meta: {
|
|
51
51
|
title: 'My note title',
|
|
52
52
|
images: [],
|
|
@@ -79,7 +79,7 @@ test('Should encrypt note via keys', async () => {
|
|
|
79
79
|
|
|
80
80
|
const note: Note = {
|
|
81
81
|
id: 'id',
|
|
82
|
-
|
|
82
|
+
encryptionType: 'gpgKeys',
|
|
83
83
|
meta: {
|
|
84
84
|
title: 'My note title for encryption via keys',
|
|
85
85
|
images: [],
|
|
@@ -111,7 +111,7 @@ test('Should encrypt note via keys', async () => {
|
|
|
111
111
|
test('Should decrypt note via provided keys', async () => {
|
|
112
112
|
const note: Note = {
|
|
113
113
|
id: 'id',
|
|
114
|
-
|
|
114
|
+
encryptionType: 'gpgKeys',
|
|
115
115
|
meta: {
|
|
116
116
|
title: 'My note title for decryption via keys',
|
|
117
117
|
images: [],
|
|
@@ -169,7 +169,7 @@ test('Should not encrypt public note', async () => {
|
|
|
169
169
|
|
|
170
170
|
const note: Note = {
|
|
171
171
|
id: 'id',
|
|
172
|
-
|
|
172
|
+
encryptionType: 'gpgPassword',
|
|
173
173
|
meta: {
|
|
174
174
|
title: 'My note title',
|
|
175
175
|
images: [],
|
|
@@ -271,6 +271,7 @@ test('Should decrypt note and note meta', async () => {
|
|
|
271
271
|
const note: Note = {
|
|
272
272
|
id: 'id',
|
|
273
273
|
meta: { ...meta },
|
|
274
|
+
encryptionType: 'gpgPassword',
|
|
274
275
|
content: `#+TITLE: My note title
|
|
275
276
|
#+DESCRIPTION: Awesome description
|
|
276
277
|
#+PUBLISHED: false
|
|
@@ -293,3 +294,53 @@ Hello world`,
|
|
|
293
294
|
|
|
294
295
|
expect(meta).toEqual(decryptedNote.meta);
|
|
295
296
|
});
|
|
297
|
+
|
|
298
|
+
test('Should set not encrypted status when params type does not provided', async () => {
|
|
299
|
+
const note: Note = {
|
|
300
|
+
id: 'id',
|
|
301
|
+
encryptionType: 'gpgKeys',
|
|
302
|
+
meta: {
|
|
303
|
+
title: 'My note title for decryption via keys',
|
|
304
|
+
images: [],
|
|
305
|
+
published: false,
|
|
306
|
+
description: 'Awesome description',
|
|
307
|
+
},
|
|
308
|
+
content: `-----BEGIN PGP MESSAGE-----
|
|
309
|
+
|
|
310
|
+
wcFMA/vryg+TTn0rAQ//TBFRjKmjRQoLhSrgeH+NbsZXbxvo7Ey4k+BQ9XA5
|
|
311
|
+
+CMpXH9uFUxsSaI5+McUSEt32VI17HRpXQDCL9nwaWqWOanMaRe0tXXhtox2
|
|
312
|
+
gfe2f/6zsge9ux+mXF2BG4z+V5T8XIOrfzxosVprdJHZHM3x7cW5USQ0t2i2
|
|
313
|
+
FiOUWxSZO1899J3yICpMvhDXvTLVZuKpSNQho5PyXSeZa83eN+uYkhgt9lsk
|
|
314
|
+
0KW88Nr435S6n6mVw/zpitXIgEKpkqh46mhG+1W3aC0lYx6j9lHm3bjtdb4r
|
|
315
|
+
2mtZbWKwfdBggEy8qEeiUeslvKd6uWtEccomzFgJkaqWVGknLmrBdHfztRIV
|
|
316
|
+
fbZhxHz+J3GFOIgXf/5+fv+zg0nTazgz1mDUfnTHw3+qcAyEJ0ADdyg9EZc+
|
|
317
|
+
bKbK0GwzMDPQeM+cCRDWUTiIa1ruyEETiwMdhWUDztF8XxY2o8jXPerZ0NhG
|
|
318
|
+
R8l+SvAdYQQXPfxEh9lA3thkyz/Vp72pW46lUeJHGSq/fS6KIdLHLP9Z2e1J
|
|
319
|
+
aCFpNMgyAN+BaXwnbLZfz6k5hV8awbRScSWQLEg69D9b287SFDPOYW7OZikn
|
|
320
|
+
CKXL7xyQ5LrWJZN9Z/UPGjy+PdEw1SBhyluW6DQ+Sz1j4K8USTLqY89EInDl
|
|
321
|
+
G7AxHGujR9UkUGyUvvc71XW7jEOogiDgn1ZMoj9Y58LSweUB8vfkY3VF84Fy
|
|
322
|
+
zGVvLFWnFbtnWuoQC4OOXv1F6ETdmEsSMEMWKzRLDGPyqNX7FhG3cejlEuiK
|
|
323
|
+
EsT5oQhz00RECmnR8mJkGmJhzWmmeoQvaucFqhTOZjvYl9ivuEMBZ2jtkdHn
|
|
324
|
+
R6UNcNZRpCbfnl7YoikqbGBgqDFYydFGHXKHDpYhcQYWJsMDUayzUiPtzmaE
|
|
325
|
+
tgfTgNNqgPxkLnWA99KYNU8DH+FwgaYBuw9dwdqwcjxSbZjHhCFGUfsqM+ik
|
|
326
|
+
O9gcoAwVO1usODlESU7OWuSF2tIv5DBG5rhlSyxBp4d4aWmaumTswAdojy2O
|
|
327
|
+
sM70ETbg0mC8niW9lNsgJp55oFmlksvzjUIit5rBEr55rtPcJSgakPpR2yvd
|
|
328
|
+
Q4XjybUmV0IdONMhk/OlqaBPtnA0RG+qTcm7oP1qH/m5zRA0ZplVQ5ylkQwr
|
|
329
|
+
LwGq5JQpJkgxxgLIrUbbtzYBShXSr5c1XXR0LIRiNgtb6s1s4mt+fbyExdJF
|
|
330
|
+
+ceuu+/xYrW/YTuEJpHxLiZ+aNPW5g5Y7Hbqu3hp3UL/kD44cc8JjZh18spX
|
|
331
|
+
p/ncojDhF2r2vhR+CndYcMkpGMV+t1pGKC8wlcFc7lb9GJASnqMGvhQmvIaG
|
|
332
|
+
gO/x7UjuTZSBW+kITHHZJDqYryKUv1j0CkHxIn9tWsYOpa1giOFtXX5v0AAM
|
|
333
|
+
AJR/s/beLlqwCsUdYnw1TkP/0u0ZK3RPio1nJ7S6ckPfsM7DqCWD8ILD8Cdr
|
|
334
|
+
cuzQrWaE30t5PXx53xBPO+6t5wKfDL35WHWG1Irmvz9UuT7tDS3IzwtF4ijF
|
|
335
|
+
PX6alTbxGnoHgZ4bG4J1wfpTNPppP1gJeVg67VqOypzdZi+SjofMWnFgRFmD
|
|
336
|
+
yEN8xpFUs7A9xryVZOosp9Sfe3IbBkO99sAQ7jV4EoMYk3/GKA==
|
|
337
|
+
=LjkG
|
|
338
|
+
-----END PGP MESSAGE-----`,
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
const decryptedNote = await decryptNote(note, {
|
|
342
|
+
type: 'disabled',
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
expect(decryptedNote).toMatchSnapshot();
|
|
346
|
+
});
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
} from './encryption';
|
|
12
12
|
import { OrgNoteEncryption } from '../models/encryption';
|
|
13
13
|
import { parse, withMetaInfo } from 'org-mode-ast';
|
|
14
|
+
import { isGpgEncrypted } from '..';
|
|
14
15
|
|
|
15
16
|
export type NoteEncryptionType = `${ModelsPublicNote['encryptionType']}`;
|
|
16
17
|
|
|
@@ -27,6 +28,7 @@ export async function encryptNote<T extends AbstractEncryptedNote>(
|
|
|
27
28
|
note: T,
|
|
28
29
|
encryptionParams: OrgNoteEncryption
|
|
29
30
|
): Promise<T> {
|
|
31
|
+
note.encrypted = false;
|
|
30
32
|
if (
|
|
31
33
|
!encryptionParams.type ||
|
|
32
34
|
encryptionParams.type === ModelsPublicNoteEncryptionTypeEnum.Disabled ||
|
|
@@ -37,15 +39,18 @@ export async function encryptNote<T extends AbstractEncryptedNote>(
|
|
|
37
39
|
|
|
38
40
|
note.meta = { id: note.meta.id, published: note.meta.published };
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
const encryptedNote =
|
|
43
|
+
encryptionParams.type === ModelsPublicNoteEncryptionTypeEnum.GpgKeys
|
|
44
|
+
? await encryptNoteViaKeys(
|
|
45
|
+
note,
|
|
46
|
+
encryptionParams.publicKey,
|
|
47
|
+
encryptionParams.privateKey,
|
|
48
|
+
encryptionParams.privateKeyPassphrase
|
|
49
|
+
)
|
|
50
|
+
: await encryptNoteViaPassword(note, encryptionParams.password);
|
|
51
|
+
|
|
52
|
+
encryptedNote.encrypted = true;
|
|
53
|
+
return encryptedNote;
|
|
49
54
|
}
|
|
50
55
|
export async function encryptNoteViaPassword<T extends AbstractEncryptedNote>(
|
|
51
56
|
note: T,
|
|
@@ -89,8 +94,10 @@ export async function decryptNote<T extends AbstractEncryptedNote>(
|
|
|
89
94
|
!encryptionParams.type ||
|
|
90
95
|
encryptionParams.type === ModelsPublicNoteEncryptionTypeEnum.Disabled
|
|
91
96
|
) {
|
|
97
|
+
note.encrypted = isGpgEncrypted(note.content);
|
|
92
98
|
return note;
|
|
93
99
|
}
|
|
100
|
+
note.encrypted = true;
|
|
94
101
|
const decryptedNote =
|
|
95
102
|
encryptionParams.type === ModelsPublicNoteEncryptionTypeEnum.GpgKeys
|
|
96
103
|
? await decryptNoteViaKeys(
|
|
@@ -104,6 +111,7 @@ export async function decryptNote<T extends AbstractEncryptedNote>(
|
|
|
104
111
|
|
|
105
112
|
return {
|
|
106
113
|
...decryptedNote,
|
|
114
|
+
encrypted: false,
|
|
107
115
|
meta: parsed.meta,
|
|
108
116
|
};
|
|
109
117
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { expect, test } from 'vitest';
|
|
2
|
+
import { isGpgEncrypted } from '../is-gpg-encrypted';
|
|
3
|
+
|
|
4
|
+
test('Should return true if the content is gpg encrypted', () => {
|
|
5
|
+
const content = `-----BEGIN PGP MESSAGE-----
|
|
6
|
+
|
|
7
|
+
wcFMA/vryg+TTn0rAQ//TBFRjKmjRQoLhSrgeH+NbsZXbxvo7Ey4k+BQ9XA5
|
|
8
|
+
+CMpXH9uFUxsSaI5+McUSEt32VI17HRpXQDCL9nwaWqWOanMaRe0tXXhtox2
|
|
9
|
+
gfe2f/6zsge9ux+mXF2BG4z+V5T8XIOrfzxosVprdJHZHM3x7cW5USQ0t2i2
|
|
10
|
+
FiOUWxSZO1899J3yICpMvhDXvTLVZuKpSNQho5PyXSeZa83eN+uYkhgt9lsk
|
|
11
|
+
0KW88Nr435S6n6mVw/zpitXIgEKpkqh46mhG+1W3aC0lYx6j9lHm3bjtdb4r
|
|
12
|
+
2mtZbWKwfdBggEy8qEeiUeslvKd6uWtEccomzFgJkaqWVGknLmrBdHfztRIV
|
|
13
|
+
fbZhxHz+J3GFOIgXf/5+fv+zg0nTazgz1mDUfnTHw3+qcAyEJ0ADdyg9EZc+
|
|
14
|
+
bKbK0GwzMDPQeM+cCRDWUTiIa1ruyEETiwMdhWUDztF8XxY2o8jXPerZ0NhG
|
|
15
|
+
R8l+SvAdYQQXPfxEh9lA3thkyz/Vp72pW46lUeJHGSq/fS6KIdLHLP9Z2e1J
|
|
16
|
+
aCFpNMgyAN+BaXwnbLZfz6k5hV8awbRScSWQLEg69D9b287SFDPOYW7OZikn
|
|
17
|
+
CKXL7xyQ5LrWJZN9Z/UPGjy+PdEw1SBhyluW6DQ+Sz1j4K8USTLqY89EInDl
|
|
18
|
+
G7AxHGujR9UkUGyUvvc71XW7jEOogiDgn1ZMoj9Y58LSweUB8vfkY3VF84Fy
|
|
19
|
+
zGVvLFWnFbtnWuoQC4OOXv1F6ETdmEsSMEMWKzRLDGPyqNX7FhG3cejlEuiK
|
|
20
|
+
EsT5oQhz00RECmnR8mJkGmJhzWmmeoQvaucFqhTOZjvYl9ivuEMBZ2jtkdHn
|
|
21
|
+
R6UNcNZRpCbfnl7YoikqbGBgqDFYydFGHXKHDpYhcQYWJsMDUayzUiPtzmaE
|
|
22
|
+
tgfTgNNqgPxkLnWA99KYNU8DH+FwgaYBuw9dwdqwcjxSbZjHhCFGUfsqM+ik
|
|
23
|
+
O9gcoAwVO1usODlESU7OWuSF2tIv5DBG5rhlSyxBp4d4aWmaumTswAdojy2O
|
|
24
|
+
sM70ETbg0mC8niW9lNsgJp55oFmlksvzjUIit5rBEr55rtPcJSgakPpR2yvd
|
|
25
|
+
Q4XjybUmV0IdONMhk/OlqaBPtnA0RG+qTcm7oP1qH/m5zRA0ZplVQ5ylkQwr
|
|
26
|
+
LwGq5JQpJkgxxgLIrUbbtzYBShXSr5c1XXR0LIRiNgtb6s1s4mt+fbyExdJF
|
|
27
|
+
+ceuu+/xYrW/YTuEJpHxLiZ+aNPW5g5Y7Hbqu3hp3UL/kD44cc8JjZh18spX
|
|
28
|
+
p/ncojDhF2r2vhR+CndYcMkpGMV+t1pGKC8wlcFc7lb9GJASnqMGvhQmvIaG
|
|
29
|
+
gO/x7UjuTZSBW+kITHHZJDqYryKUv1j0CkHxIn9tWsYOpa1giOFtXX5v0AAM
|
|
30
|
+
AJR/s/beLlqwCsUdYnw1TkP/0u0ZK3RPio1nJ7S6ckPfsM7DqCWD8ILD8Cdr
|
|
31
|
+
cuzQrWaE30t5PXx53xBPO+6t5wKfDL35WHWG1Irmvz9UuT7tDS3IzwtF4ijF
|
|
32
|
+
PX6alTbxGnoHgZ4bG4J1wfpTNPppP1gJeVg67VqOypzdZi+SjofMWnFgRFmD
|
|
33
|
+
yEN8xpFUs7A9xryVZOosp9Sfe3IbBkO99sAQ7jV4EoMYk3/GKA==
|
|
34
|
+
=LjkG
|
|
35
|
+
-----END PGP MESSAGE-----`;
|
|
36
|
+
|
|
37
|
+
expect(isGpgEncrypted(content)).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('Should return false if the content is not gpg encrypted', () => {
|
|
41
|
+
const content = `Hello World!`;
|
|
42
|
+
|
|
43
|
+
expect(isGpgEncrypted(content)).toBe(false);
|
|
44
|
+
});
|
package/tools/index.ts
CHANGED