-
Notifications
You must be signed in to change notification settings - Fork 19
/
errors.ts
141 lines (128 loc) · 4.48 KB
/
errors.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
import { IPublicKey } from './externalTypes';
/**
* Custom error class for errors specific to Virgil E3kit.
*/
export class SdkError extends Error {
constructor(m: string, name: string = 'SdkError', DerivedClass: any = SdkError) {
super(m);
Object.setPrototypeOf(this, DerivedClass.prototype);
this.name = name;
}
}
/**
* Error thrown by {@link EThree.register} when identity is already registered on Virgil Cloud.
* To load private key use EThree.restorePrivateKey or EThree.rotatePrivateKey.
*/
export class IdentityAlreadyExistsError extends SdkError {
constructor() {
super(
'This identity is already registered on Virgil Cloud. To load private key use EThree.restorePrivateKey or EThree.rotatePrivateKey',
'IdentityAlreadyExistsError',
IdentityAlreadyExistsError,
);
}
}
/**
* Error thrown by {@link EThree.encrypt}, {@link EThree.decrypt},
* {@link Ethree.unregister} and {@link EThree.backupPrivateKey}
* when current identity of E3kit instance is not registered.
*/
export class RegisterRequiredError extends SdkError {
constructor() {
super('This identity is not registered', 'RegisterRequiredError', RegisterRequiredError);
}
}
/**
* Error thrown by {@link EThree.backupPrivateKey}, {@link EThree.changePassword} and
* {@link EThree.resetPrivateKeyBackup} when user enters wrong password.
*/
export class WrongKeyknoxPasswordError extends SdkError {
constructor() {
super(
'Password from remote private key storage is invalid',
'WrongKeyknoxPasswordError',
WrongKeyknoxPasswordError,
);
}
}
/**
* Error thrown by {@link EThree.rotatePrivateKey} and {@link EThree.restorePrivateKey}
*/
export class PrivateKeyAlreadyExistsError extends SdkError {
constructor() {
super(
'You already have a private key. Use EThree.cleanup() to delete it. If you delete the last copy of the private key, you will not be able to decrypt any information encrypted for this private key',
'PrivateKeyAlreadyExistsError',
PrivateKeyAlreadyExistsError,
);
}
}
/**
* Error thrown by {@link EThree.resetPrivateKeyBackup} when backup copy of private key doesn't exist
*/
export class PrivateKeyNoBackupError extends SdkError {
constructor() {
super(
"Backup copy of private key doesn't exist",
'PrivateKeyNoBackupError',
PrivateKeyNoBackupError,
);
}
}
/**
* Error thrown by {@link EThree.register}, {@link EThree.rotatePrivateKey} and {@link EThree.lookupPublicKeys}
* when one user has more then one card.
*/
export class MultipleCardsError extends SdkError {
constructor(public identity: string) {
super(
`There are several public keys registered with ${identity}, which is not supported.`,
'MultipleCardsError',
MultipleCardsError,
);
}
}
export type LookupResultWithErrors = {
[identity: string]: IPublicKey | Error;
};
/**
* Error thrown by {@link EThree.lookupPublicKeys} in case if some identity missing or has multiple cards.
*/
export class LookupError extends SdkError {
/**
* Key Value object, where key is identity and value is IPublicKey or [[MultipleCardsError]] or [[LookupNotFoundError]]
*/
public lookupResult: LookupResultWithErrors;
constructor(lookupResult: LookupResultWithErrors) {
super(
'Failed some public keys lookups. You can see the results by calling error.lookupResult property of this error instance',
'LookupError',
LookupError,
);
this.lookupResult = lookupResult;
}
}
/**
* Error thrown by {@link EThree.lookupPublicKeys} in case if sought identity is not registered.
*/
export class LookupNotFoundError extends SdkError {
constructor(public identity: string) {
super(`${identity} not found`, 'LookupNotFoundError', LookupNotFoundError);
}
}
/**
* Error thrown by {@link EThree.decryptFile} in case if signature of the file is not valid.
*/
export class IntegrityCheckFailedError extends SdkError {
constructor(message: string) {
super(message, 'IntegrityCheckFailedError', IntegrityCheckFailedError);
}
}
/**
* Error thrown by {@link EThree.decryptFile} or {@link EThree.encryptFile} if user aborts an operation.
*/
export class AbortError extends SdkError {
constructor() {
super('Operation aborted by user', 'AbortError', AbortError);
}
}