-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathpgpMock.ts
34 lines (27 loc) · 968 Bytes
/
pgpMock.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
type VerifyResult = {
valid: string[]
invalid: string[]
}
function createSignature(payload: string, secretKey: string) {
return `${payload}-${secretKey}`
}
export class PgpMock {
private readonly publicKey: string
private readonly keyId: string
private signature?: string
constructor(publicKey: string, keyId: string) {
this.publicKey = publicKey
this.keyId = keyId
}
sign(params: { payload: string, secretKey: string }): { signature: string } {
this.signature = createSignature(params.payload, params.secretKey)
return { signature: this.signature }
}
async verify(params: { payload: string, publicKey: string, signature?: string }): Promise<VerifyResult> {
const sigValid = this.signature && this.publicKey === params.publicKey && params.signature === this.signature
const invalid: string[] = []
const valid: string[] = []
;(sigValid ? valid : invalid).push(this.keyId)
return { valid, invalid }
}
}