orgnote-api 0.12.2 → 0.12.3
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/api.ts +119 -0
- package/encryption/__tests__/__snapshots__/note-encryption.spec.ts.snap +185 -0
- package/encryption/__tests__/encryption-keys.ts +163 -0
- package/encryption/__tests__/encryption.spec.ts +165 -0
- package/encryption/__tests__/note-encryption.spec.ts +346 -0
- package/encryption/encryption.ts +172 -0
- package/encryption/index.ts +2 -0
- package/encryption/note-encryption.ts +148 -0
- package/files-api.ts +25 -0
- package/index.ts +7 -0
- package/models/command.ts +45 -0
- package/models/completion.ts +30 -0
- package/models/default-commands.ts +44 -0
- package/models/editor.ts +27 -0
- package/models/encryption.ts +22 -0
- package/models/extension.ts +45 -0
- package/models/index.ts +11 -0
- package/models/modal.ts +12 -0
- package/models/note.ts +26 -0
- package/models/theme-variables.ts +194 -0
- package/models/vue-component.ts +3 -0
- package/models/widget-type.ts +5 -0
- package/models/widget.ts +59 -0
- package/package.json +1 -1
- package/remote-api/.openapi-generator/FILES +8 -0
- package/remote-api/.openapi-generator/VERSION +1 -0
- package/remote-api/.openapi-generator-ignore +23 -0
- package/remote-api/api.ts +2303 -0
- package/remote-api/base.ts +86 -0
- package/remote-api/common.ts +150 -0
- package/remote-api/configuration.ts +110 -0
- package/remote-api/git_push.sh +57 -0
- package/remote-api/index.ts +18 -0
- package/tools/__tests__/is-gpg-encrypted.spec.ts +44 -0
- package/tools/index.ts +2 -0
- package/tools/is-gpg-encrypted.ts +3 -0
- package/tools/mock-server.ts +16 -0
package/api.ts
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Command,
|
|
3
|
+
CSSVariable,
|
|
4
|
+
ThemeVariable,
|
|
5
|
+
Note,
|
|
6
|
+
InlineEmbeddedWidget,
|
|
7
|
+
MultilineEmbeddedWidget,
|
|
8
|
+
OrgLineClass,
|
|
9
|
+
WidgetBuilder,
|
|
10
|
+
CommandPreview,
|
|
11
|
+
OrgNoteEncryption,
|
|
12
|
+
Modal,
|
|
13
|
+
} from './models';
|
|
14
|
+
import type { NavigationFailure } from 'vue-router';
|
|
15
|
+
import { WidgetType } from './models/widget-type';
|
|
16
|
+
import type { Component } from 'vue';
|
|
17
|
+
import { NodeType } from 'org-mode-ast';
|
|
18
|
+
import { EditorExtension } from './models/editor';
|
|
19
|
+
|
|
20
|
+
type WithNodeType<T> = { nodeType: NodeType } & T;
|
|
21
|
+
|
|
22
|
+
export type WidgetMeta =
|
|
23
|
+
| ({ type: WidgetType.Inline } & WithNodeType<InlineEmbeddedWidget>)
|
|
24
|
+
| ({ type: WidgetType.Multiline } & WithNodeType<MultilineEmbeddedWidget>)
|
|
25
|
+
| ({ type: WidgetType.LineClass } & WithNodeType<OrgLineClass>);
|
|
26
|
+
|
|
27
|
+
export interface OrgNoteApi {
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
getExtension?<T>(config: string): T;
|
|
30
|
+
|
|
31
|
+
system: {
|
|
32
|
+
reload: (params?: { verbose: boolean }) => Promise<void>;
|
|
33
|
+
setNewFilesAvailable: (status?: boolean) => void;
|
|
34
|
+
};
|
|
35
|
+
navigation: {
|
|
36
|
+
openNote: (id: string) => Promise<void | NavigationFailure>;
|
|
37
|
+
editNote: (id: string) => Promise<void | NavigationFailure>;
|
|
38
|
+
};
|
|
39
|
+
ui: {
|
|
40
|
+
applyTheme: (theme: { [key in ThemeVariable]: string | number }) => void;
|
|
41
|
+
applyCssVariables: (styles: {
|
|
42
|
+
[key in CSSVariable]: string | number;
|
|
43
|
+
}) => void;
|
|
44
|
+
setThemeByMode: (themeName?: string) => void;
|
|
45
|
+
setDarkTheme: (themeName?: string) => void;
|
|
46
|
+
setLightTheme: (themeName?: string) => void;
|
|
47
|
+
applyStyles: (scopeName: string, styles: string) => void;
|
|
48
|
+
removeStyles: (scopeName: string) => void;
|
|
49
|
+
resetTheme: () => void;
|
|
50
|
+
openModal: (modal: Modal) => void;
|
|
51
|
+
};
|
|
52
|
+
interaction: {
|
|
53
|
+
confirm: (title: string, message: string) => Promise<boolean>;
|
|
54
|
+
};
|
|
55
|
+
currentNote: {
|
|
56
|
+
get: () => Note;
|
|
57
|
+
};
|
|
58
|
+
editor: {
|
|
59
|
+
extensions: {
|
|
60
|
+
add: (...extension: EditorExtension[]) => void;
|
|
61
|
+
remove: (...extension: EditorExtension[]) => void;
|
|
62
|
+
};
|
|
63
|
+
widgets: {
|
|
64
|
+
add: (...widgetMeta: WidgetMeta[]) => void;
|
|
65
|
+
createWidgetBuilder: (
|
|
66
|
+
cmp: Component,
|
|
67
|
+
props?: { [key: string]: unknown }
|
|
68
|
+
) => WidgetBuilder;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
// Available only on mobile apps
|
|
72
|
+
fileSystem: {
|
|
73
|
+
readPath: () => Promise<string>;
|
|
74
|
+
};
|
|
75
|
+
commands: {
|
|
76
|
+
add(...commands: Command[]): void;
|
|
77
|
+
remove(...commands: Command[]): void;
|
|
78
|
+
get(name: string): Command;
|
|
79
|
+
getAll(): Command[];
|
|
80
|
+
addCommandToSidebar(...commands: CommandPreview[]): void;
|
|
81
|
+
removeCommandFromSidebar(...commands: CommandPreview[]): void;
|
|
82
|
+
addCommandToEditorPanel(...commands: CommandPreview[]): void;
|
|
83
|
+
removeCommandFromEditorPanel(...commands: CommandPreview[]): void;
|
|
84
|
+
};
|
|
85
|
+
configuration: () => OrgNoteConfig;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// TODO: master move model to the backend service
|
|
89
|
+
export interface OrgNoteConfig {
|
|
90
|
+
editor: {
|
|
91
|
+
showSpecialSymbols: boolean;
|
|
92
|
+
showPropertyDrawer: boolean;
|
|
93
|
+
};
|
|
94
|
+
developer: {
|
|
95
|
+
developerMode: boolean;
|
|
96
|
+
maximumLogsCount: number;
|
|
97
|
+
};
|
|
98
|
+
completion: {
|
|
99
|
+
showGroup: boolean;
|
|
100
|
+
defaultCompletionLimit: number;
|
|
101
|
+
};
|
|
102
|
+
system: {
|
|
103
|
+
language: string;
|
|
104
|
+
};
|
|
105
|
+
synchronization: {
|
|
106
|
+
type: 'none' | 'api' | 'filesystem';
|
|
107
|
+
path?: string;
|
|
108
|
+
};
|
|
109
|
+
ui: {
|
|
110
|
+
showUserProfiles: boolean;
|
|
111
|
+
theme: 'light' | 'dark' | 'auto';
|
|
112
|
+
darkThemeName?: string;
|
|
113
|
+
lightThemeName?: string;
|
|
114
|
+
};
|
|
115
|
+
extensions: {
|
|
116
|
+
sources: string[];
|
|
117
|
+
};
|
|
118
|
+
encryption: OrgNoteEncryption;
|
|
119
|
+
}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`Should decrypt note content via password 1`] = `
|
|
4
|
+
{
|
|
5
|
+
"content": "#+ID: qweqwe
|
|
6
|
+
#+TITLE: Hello worlld
|
|
7
|
+
|
|
8
|
+
* Hello?",
|
|
9
|
+
"encrypted": false,
|
|
10
|
+
"encryptionType": "gpgPassword",
|
|
11
|
+
"id": "id",
|
|
12
|
+
"meta": {
|
|
13
|
+
"headings": [
|
|
14
|
+
{
|
|
15
|
+
"level": 1,
|
|
16
|
+
"title": "Hello?",
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
"id": "qweqwe",
|
|
20
|
+
"title": "Hello worlld",
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
`;
|
|
24
|
+
|
|
25
|
+
exports[`Should decrypt note via provided keys 1`] = `
|
|
26
|
+
{
|
|
27
|
+
"content": "#+ID: qweqwe
|
|
28
|
+
#+TITLE: Hello worlld
|
|
29
|
+
|
|
30
|
+
* Hello?",
|
|
31
|
+
"encrypted": false,
|
|
32
|
+
"encryptionType": "gpgKeys",
|
|
33
|
+
"id": "id",
|
|
34
|
+
"meta": {
|
|
35
|
+
"headings": [
|
|
36
|
+
{
|
|
37
|
+
"level": 1,
|
|
38
|
+
"title": "Hello?",
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
"id": "qweqwe",
|
|
42
|
+
"title": "Hello worlld",
|
|
43
|
+
},
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
|
|
47
|
+
exports[`Should encrypt note content via password 1`] = `
|
|
48
|
+
{
|
|
49
|
+
"author": {
|
|
50
|
+
"email": "test@mail.com",
|
|
51
|
+
"id": "1",
|
|
52
|
+
"name": "John Doe",
|
|
53
|
+
},
|
|
54
|
+
"encrypted": true,
|
|
55
|
+
"encryptionType": "gpgPassword",
|
|
56
|
+
"id": "id",
|
|
57
|
+
"meta": {
|
|
58
|
+
"id": undefined,
|
|
59
|
+
"published": false,
|
|
60
|
+
},
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
|
|
64
|
+
exports[`Should encrypt note via keys 1`] = `
|
|
65
|
+
{
|
|
66
|
+
"author": {
|
|
67
|
+
"email": "test@mail.com",
|
|
68
|
+
"id": "1",
|
|
69
|
+
"name": "John Doe",
|
|
70
|
+
},
|
|
71
|
+
"encrypted": true,
|
|
72
|
+
"encryptionType": "gpgKeys",
|
|
73
|
+
"id": "id",
|
|
74
|
+
"meta": {
|
|
75
|
+
"id": undefined,
|
|
76
|
+
"published": false,
|
|
77
|
+
},
|
|
78
|
+
}
|
|
79
|
+
`;
|
|
80
|
+
|
|
81
|
+
exports[`Should encrypt note with empty encrypted property 1`] = `
|
|
82
|
+
{
|
|
83
|
+
"author": {
|
|
84
|
+
"email": "test@mail.com",
|
|
85
|
+
"id": "1",
|
|
86
|
+
"name": "John Doe",
|
|
87
|
+
},
|
|
88
|
+
"encrypted": true,
|
|
89
|
+
"id": "id",
|
|
90
|
+
"meta": {
|
|
91
|
+
"id": undefined,
|
|
92
|
+
"published": false,
|
|
93
|
+
},
|
|
94
|
+
}
|
|
95
|
+
`;
|
|
96
|
+
|
|
97
|
+
exports[`Should not decrypt note without provided encrypted type 1`] = `
|
|
98
|
+
{
|
|
99
|
+
"author": {
|
|
100
|
+
"email": "test@mail.com",
|
|
101
|
+
"id": "1",
|
|
102
|
+
"name": "John Doe",
|
|
103
|
+
},
|
|
104
|
+
"content": "#+ID: qweqwe
|
|
105
|
+
#+TITLE: Hello worlld
|
|
106
|
+
|
|
107
|
+
* Hello?",
|
|
108
|
+
"encrypted": false,
|
|
109
|
+
"id": "id",
|
|
110
|
+
"meta": {
|
|
111
|
+
"description": "Awesome description",
|
|
112
|
+
"images": [],
|
|
113
|
+
"published": false,
|
|
114
|
+
"title": "My note title",
|
|
115
|
+
},
|
|
116
|
+
}
|
|
117
|
+
`;
|
|
118
|
+
|
|
119
|
+
exports[`Should not encrypt public note 1`] = `
|
|
120
|
+
{
|
|
121
|
+
"author": {
|
|
122
|
+
"email": "test@mail.com",
|
|
123
|
+
"id": "1",
|
|
124
|
+
"name": "John Doe",
|
|
125
|
+
},
|
|
126
|
+
"content": "#+ID: qweqwe
|
|
127
|
+
#+TITLE: Hello worlld
|
|
128
|
+
|
|
129
|
+
* Hello?",
|
|
130
|
+
"encrypted": false,
|
|
131
|
+
"encryptionType": "gpgPassword",
|
|
132
|
+
"id": "id",
|
|
133
|
+
"meta": {
|
|
134
|
+
"description": "Awesome description",
|
|
135
|
+
"images": [],
|
|
136
|
+
"published": true,
|
|
137
|
+
"title": "My note title",
|
|
138
|
+
},
|
|
139
|
+
}
|
|
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
|
+
`;
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
export const armoredPublicKey = `-----BEGIN PGP PUBLIC KEY BLOCK-----
|
|
2
|
+
|
|
3
|
+
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
|
|
50
|
+
PYl38WJh5gV98/obb+Mp
|
|
51
|
+
=fslD
|
|
52
|
+
-----END PGP PUBLIC KEY BLOCK-----`;
|
|
53
|
+
|
|
54
|
+
export const armoredPrivateKey = `-----BEGIN PGP PRIVATE KEY BLOCK-----
|
|
55
|
+
|
|
56
|
+
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
|
|
159
|
+
KQ==
|
|
160
|
+
=OrI7
|
|
161
|
+
-----END PGP PRIVATE KEY BLOCK-----`;
|
|
162
|
+
|
|
163
|
+
export const privateKeyPassphrase = 'test';
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
encryptViaKeys,
|
|
3
|
+
decryptViaKeys,
|
|
4
|
+
encryptViaPassword,
|
|
5
|
+
decryptViaPassword,
|
|
6
|
+
NoKeysProvidedError,
|
|
7
|
+
NoPasswordProvidedError,
|
|
8
|
+
IncorrectOrMissingPrivateKeyPasswordError,
|
|
9
|
+
} from '../encryption';
|
|
10
|
+
import { test, expect } from 'vitest';
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
armoredPublicKey,
|
|
14
|
+
armoredPrivateKey,
|
|
15
|
+
privateKeyPassphrase,
|
|
16
|
+
} from './encryption-keys';
|
|
17
|
+
|
|
18
|
+
test('Should encrypt text via keys', async () => {
|
|
19
|
+
const res = await encryptViaKeys(
|
|
20
|
+
'Hello world',
|
|
21
|
+
armoredPublicKey,
|
|
22
|
+
armoredPrivateKey,
|
|
23
|
+
privateKeyPassphrase
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
expect(res.startsWith('-----BEGIN PGP MESSAGE-----')).toBeTruthy();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test('Should decrypt via provided keys', async () => {
|
|
30
|
+
const decryptedMessage = await decryptViaKeys(
|
|
31
|
+
`-----BEGIN PGP MESSAGE-----
|
|
32
|
+
|
|
33
|
+
wcFMA/vryg+TTn0rARAAhXuEjOHa856iCNVmdeIGHF+IEoeEwTc5tIcr6Lri
|
|
34
|
+
V6xs//3WnwVwUlyxYrum3yCpx8t5gyWTXFfTNH08VoVqPVP45fkk1H7jdC6Q
|
|
35
|
+
I+tHfn8nXZApdKQlMOku+XMXtRuqvOUQHutqHj4ka3qC+wGIPcOsy2TIoFsS
|
|
36
|
+
xauk13hMggmVHOdQkMzWA1QlxDcz6lFl86SvX18uc7H62s36gHxARmOLZfBd
|
|
37
|
+
nRFdnPgLKNOPGWb6QvYfvxiv03vGSsKlb0tIpwP1Ot0nyZax+yH9CJmIEni/
|
|
38
|
+
rW9Wu/Ph+PRcB2L9kp/X4Opol3RwJ0lI9ilTRw9+GGFipXhCmJcjPJC7WNIg
|
|
39
|
+
vg0/xVUjSmlxQQAZlC9/sefvoXjY0CP+h+djtoZsxLpN4P4iTO1reuoVD0iO
|
|
40
|
+
UwT9JCUR1uDEiNXvh6AmrLlH3ceBynJcBtHXAnx1vcgtY8oKKYBjsoTeEngg
|
|
41
|
+
P5w5ZXcceoPuYLe6g1YPsFECAgGF+e/QuZ9CCfUgr4o7nSteHQRShP2gXZzc
|
|
42
|
+
oHKR4tiV71VVGKzv0EYhCvVt9NGkxIklft9Lq4ZOXeT9QOnJ/7gRofX2veg2
|
|
43
|
+
TpBADPJ/JvBRcxGEe7KUpYb6Hjr5LRfPOBnH3NK1zMJlqgUHt4ZZSVPxfr9I
|
|
44
|
+
6hWwsKxizzQ9gwEnDMciUvtX1tMF8+NiH7B0Ho4QVLfSwcEBwsGjA0yq08I/
|
|
45
|
+
7jK5LGtM8T3xtIW7yZ2binWbAFL6rnbOXjtmI31m4OxCEHW4CVBAV3/lUZlT
|
|
46
|
+
1eCPXEk32h39nDZHExjSeiUcGevCek5RvIvkhlnURzdZ69/BdZN5hr6LEOAe
|
|
47
|
+
O3UtE9mpvyNFKK9NZsn+ckR1fxK1K4yUiX+dtLjL+x+B38EQE0gjA+ekpfUe
|
|
48
|
+
dv7XD/ZAny66mAcwMn+lQozabpeEaNYIY7D8QspCvZWOS+borK/PVRJkF6pT
|
|
49
|
+
ZBmKzI4mvzDTFsd7VguB7frpsb+agUvhXXAJEHWEE4ZR3vQa1sWEnmxyAdNp
|
|
50
|
+
H9UFoIhGf9mSPlbBTMKEcAJmqzEIrb6z4psmmt6oYLXDR8PCxxK+g0xdrmbO
|
|
51
|
+
Az//AD0eRm8XHCHpwGf8YYWrNHOidDYpgmJTy7qFUwknWS+t3NlkU3CsCR+j
|
|
52
|
+
i9Km3edjOwPpJtgI0LeRRqXs3eUhLQARC5nFePbRWnFSXPBuFxBVZyL9AYrS
|
|
53
|
+
KQn4dM1p4eTtsiEu1NaTzRtQNZAFHcJpZ8qAL67LHoNdFe/atpCdlyV3yur9
|
|
54
|
+
RvAA3cB7cj7wab3beX+cTqxdhpGePZh0TrNd3liV69FtbnYfeDrtUYIL1jfT
|
|
55
|
+
EJN3l+qpveimyX655RrgFX3DNGrVbbhpx+FDF9Ky9kqb2BJBTFKoCBxbf0dS
|
|
56
|
+
sniNAsC/t/k6ErG8NKNQsNh1aeN6plXnxeVi1vv6SvO2mwZRVvDNT1hg9Cyc
|
|
57
|
+
UO1Pw43TRLO50HgR9+ERNXL491TJA0aCj14oXwsm0Dtg6EOltX0GUDwcPjv6
|
|
58
|
+
6QMreKTATPLytbhCdPO+JOzObsptU/IlsQQWlMz8yKXwqyuN8z8SOaddJIHR
|
|
59
|
+
YQ==
|
|
60
|
+
=f4F1
|
|
61
|
+
-----END PGP MESSAGE-----
|
|
62
|
+
`,
|
|
63
|
+
armoredPrivateKey,
|
|
64
|
+
privateKeyPassphrase
|
|
65
|
+
);
|
|
66
|
+
expect(decryptedMessage).toEqual('Hello world');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test('Should encrypt via password', async () => {
|
|
70
|
+
const password = 'test';
|
|
71
|
+
const res = await encryptViaPassword('Hello world', password);
|
|
72
|
+
|
|
73
|
+
expect(res.startsWith('-----BEGIN PGP MESSAGE-----')).toBeTruthy();
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
test('Should decrypt via password', async () => {
|
|
77
|
+
const password = 'test';
|
|
78
|
+
const encryptedMsg = `-----BEGIN PGP MESSAGE-----
|
|
79
|
+
|
|
80
|
+
wy4ECQMI6KFWGqyVV+DgYl0qUEeTe1kAdjkoR4FxFJxx+6QiOP+sZ6h7bn//
|
|
81
|
+
aGW80jwBXEQ7uTjT8akpOKiH7BIuhEUZIXh+vDveG0Uwf63s2dIklznAEo+E
|
|
82
|
+
5iO5mEqoXWXg6nAvNxciA56dKuI=
|
|
83
|
+
=B4Tc
|
|
84
|
+
-----END PGP MESSAGE-----
|
|
85
|
+
`;
|
|
86
|
+
|
|
87
|
+
expect(await decryptViaPassword(encryptedMsg, password)).toEqual(
|
|
88
|
+
'Hello world'
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
test('Should raise incorrect or missing private key error', async () => {
|
|
93
|
+
const encryptedMsg = `-----BEGIN PGP MESSAGE-----
|
|
94
|
+
|
|
95
|
+
wcFMA/vryg+TTn0rARAAhXuEjOHa856iCNVmdeIGHF+IEoeEwTc5tIcr6Lri
|
|
96
|
+
V6xs//3WnwVwUlyxYrum3yCpx8t5gyWTXFfTNH08VoVqPVP45fkk1H7jdC6Q
|
|
97
|
+
I+tHfn8nXZApdKQlMOku+XMXtRuqvOUQHutqHj4ka3qC+wGIPcOsy2TIoFsS
|
|
98
|
+
xauk13hMggmVHOdQkMzWA1QlxDcz6lFl86SvX18uc7H62s36gHxARmOLZfBd
|
|
99
|
+
nRFdnPgLKNOPGWb6QvYfvxiv03vGSsKlb0tIpwP1Ot0nyZax+yH9CJmIEni/
|
|
100
|
+
rW9Wu/Ph+PRcB2L9kp/X4Opol3RwJ0lI9ilTRw9+GGFipXhCmJcjPJC7WNIg
|
|
101
|
+
vg0/xVUjSmlxQQAZlC9/sefvoXjY0CP+h+djtoZsxLpN4P4iTO1reuoVD0iO
|
|
102
|
+
UwT9JCUR1uDEiNXvh6AmrLlH3ceBynJcBtHXAnx1vcgtY8oKKYBjsoTeEngg
|
|
103
|
+
P5w5ZXcceoPuYLe6g1YPsFECAgGF+e/QuZ9CCfUgr4o7nSteHQRShP2gXZzc
|
|
104
|
+
oHKR4tiV71VVGKzv0EYhCvVt9NGkxIklft9Lq4ZOXeT9QOnJ/7gRofX2veg2
|
|
105
|
+
TpBADPJ/JvBRcxGEe7KUpYb6Hjr5LRfPOBnH3NK1zMJlqgUHt4ZZSVPxfr9I
|
|
106
|
+
6hWwsKxizzQ9gwEnDMciUvtX1tMF8+NiH7B0Ho4QVLfSwcEBwsGjA0yq08I/
|
|
107
|
+
7jK5LGtM8T3xtIW7yZ2binWbAFL6rnbOXjtmI31m4OxCEHW4CVBAV3/lUZlT
|
|
108
|
+
1eCPXEk32h39nDZHExjSeiUcGevCek5RvIvkhlnURzdZ69/BdZN5hr6LEOAe
|
|
109
|
+
O3UtE9mpvyNFKK9NZsn+ckR1fxK1K4yUiX+dtLjL+x+B38EQE0gjA+ekpfUe
|
|
110
|
+
dv7XD/ZAny66mAcwMn+lQozabpeEaNYIY7D8QspCvZWOS+borK/PVRJkF6pT
|
|
111
|
+
ZBmKzI4mvzDTFsd7VguB7frpsb+agUvhXXAJEHWEE4ZR3vQa1sWEnmxyAdNp
|
|
112
|
+
H9UFoIhGf9mSPlbBTMKEcAJmqzEIrb6z4psmmt6oYLXDR8PCxxK+g0xdrmbO
|
|
113
|
+
Az//AD0eRm8XHCHpwGf8YYWrNHOidDYpgmJTy7qFUwknWS+t3NlkU3CsCR+j
|
|
114
|
+
i9Km3edjOwPpJtgI0LeRRqXs3eUhLQARC5nFePbRWnFSXPBuFxBVZyL9AYrS
|
|
115
|
+
KQn4dM1p4eTtsiEu1NaTzRtQNZAFHcJpZ8qAL67LHoNdFe/atpCdlyV3yur9
|
|
116
|
+
RvAA3cB7cj7wab3beX+cTqxdhpGePZh0TrNd3liV69FtbnYfeDrtUYIL1jfT
|
|
117
|
+
EJN3l+qpveimyX655RrgFX3DNGrVbbhpx+FDF9Ky9kqb2BJBTFKoCBxbf0dS
|
|
118
|
+
sniNAsC/t/k6ErG8NKNQsNh1aeN6plXnxeVi1vv6SvO2mwZRVvDNT1hg9Cyc
|
|
119
|
+
UO1Pw43TRLO50HgR9+ERNXL491TJA0aCj14oXwsm0Dtg6EOltX0GUDwcPjv6
|
|
120
|
+
6QMreKTATPLytbhCdPO+JOzObsptU/IlsQQWlMz8yKXwqyuN8z8SOaddJIHR
|
|
121
|
+
YQ==
|
|
122
|
+
=f4F1
|
|
123
|
+
-----END PGP MESSAGE-----`;
|
|
124
|
+
|
|
125
|
+
try {
|
|
126
|
+
await decryptViaPassword(encryptedMsg, 'password');
|
|
127
|
+
} catch (e) {
|
|
128
|
+
expect(e).toBeInstanceOf(NoKeysProvidedError);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
test('Should raise IncorrectOrMissingPrivateKeyPasswordError error when incorrect armored key provided', async () => {
|
|
133
|
+
const password = 'test';
|
|
134
|
+
const encryptedMsg = `-----BEGIN PGP MESSAGE-----
|
|
135
|
+
|
|
136
|
+
wy4ECQMI6KFWGqyVV+DgYl0qUEeTe1kAdjkoR4FxFJxx+6QiOP+sZ6h7bn//
|
|
137
|
+
aGW80jwBXEQ7uTjT8akpOKiH7BIuhEUZIXh+vDveG0Uwf63s2dIklznAEo+E
|
|
138
|
+
5iO5mEqoXWXg6nAvNxciA56dKuI=
|
|
139
|
+
=B4Tc
|
|
140
|
+
-----END PGP MESSAGE-----
|
|
141
|
+
`;
|
|
142
|
+
|
|
143
|
+
try {
|
|
144
|
+
await decryptViaKeys(encryptedMsg, armoredPublicKey, privateKeyPassphrase);
|
|
145
|
+
} catch (e) {
|
|
146
|
+
expect(e).toBeInstanceOf(IncorrectOrMissingPrivateKeyPasswordError);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
test('Should raise NoPasswordProvidedError error when try to use keys instead of password', async () => {
|
|
151
|
+
const encryptedMsg = `-----BEGIN PGP MESSAGE-----
|
|
152
|
+
|
|
153
|
+
wy4ECQMI6KFWGqyVV+DgYl0qUEeTe1kAdjkoR4FxFJxx+6QiOP+sZ6h7bn//
|
|
154
|
+
aGW80jwBXEQ7uTjT8akpOKiH7BIuhEUZIXh+vDveG0Uwf63s2dIklznAEo+E
|
|
155
|
+
5iO5mEqoXWXg6nAvNxciA56dKuI=
|
|
156
|
+
=B4Tc
|
|
157
|
+
-----END PGP MESSAGE-----
|
|
158
|
+
`;
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
await decryptViaKeys(encryptedMsg, armoredPrivateKey, privateKeyPassphrase);
|
|
162
|
+
} catch (e) {
|
|
163
|
+
expect(e).toBeInstanceOf(NoPasswordProvidedError);
|
|
164
|
+
}
|
|
165
|
+
});
|