summaryrefslogtreecommitdiff
path: root/src/@types
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2019-02-01 19:59:12 +0900
committerAya Morisawa <AyaMorisawa4869@gmail.com>2019-02-01 19:59:12 +0900
commit40e177fa9639b1c62184a41cd9d64eecfa527f45 (patch)
tree3e5a95006e080c3fd31d750856b363264815ef70 /src/@types
parentCreate type definition for 'deepcopy' (#4000) (diff)
downloadsharkey-40e177fa9639b1c62184a41cd9d64eecfa527f45.tar.gz
sharkey-40e177fa9639b1c62184a41cd9d64eecfa527f45.tar.bz2
sharkey-40e177fa9639b1c62184a41cd9d64eecfa527f45.zip
Create type definition for 'http-signature' (#4049)
* Create type definition for 'http-signature' * Follow lint
Diffstat (limited to 'src/@types')
-rw-r--r--src/@types/http-signature.d.ts75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/@types/http-signature.d.ts b/src/@types/http-signature.d.ts
new file mode 100644
index 0000000000..6366b2addd
--- /dev/null
+++ b/src/@types/http-signature.d.ts
@@ -0,0 +1,75 @@
+declare module 'http-signature' {
+ import { IncomingMessage, ClientRequest } from 'http';
+
+ interface ISignature {
+ keyId: string;
+ algorithm: string;
+ headers: string[];
+ signature: string;
+ }
+
+ interface IOptions {
+ headers?: string[];
+ algorithm?: string;
+ strict?: boolean;
+ authorizationHeaderName?: string;
+ }
+
+ interface IParseRequestOptions extends IOptions {
+ clockSkew?: number;
+ }
+
+ interface IParsedSignature {
+ scheme: string;
+ params: ISignature;
+ signingString: string;
+ }
+
+ type RequestSignerConstructorOptions =
+ IRequestSignerConstructorOptionsFromProperties |
+ IRequestSignerConstructorOptionsFromFunction;
+
+ interface IRequestSignerConstructorOptionsFromProperties {
+ keyId: string;
+ key: string | Buffer;
+ algorithm?: string;
+ }
+
+ interface IRequestSignerConstructorOptionsFromFunction {
+ sign?: (data: string, cb: (err: any, sig: ISignature) => void) => void;
+ }
+
+ class RequestSigner {
+ constructor(options: RequestSignerConstructorOptions);
+
+ public writeHeader(header: string, value: string): string;
+
+ public writeDateHeader(): string;
+
+ public writeTarget(method: string, path: string): void;
+
+ public sign(cb: (err: any, authz: string) => void): void;
+ }
+
+ interface ISignRequestOptions extends IOptions {
+ keyId: string;
+ key: string;
+ httpVersion?: string;
+ }
+
+ export function parse(request: IncomingMessage, options?: IParseRequestOptions): IParsedSignature;
+ export function parseRequest(request: IncomingMessage, options?: IParseRequestOptions): IParsedSignature;
+
+ export function sign(request: ClientRequest, options: ISignRequestOptions): boolean;
+ export function signRequest(request: ClientRequest, options: ISignRequestOptions): boolean;
+ export function createSigner(): RequestSigner;
+ export function isSigner(obj: any): obj is RequestSigner;
+
+ export function sshKeyToPEM(key: string): string;
+ export function sshKeyFingerprint(key: string): string;
+ export function pemToRsaSSHKey(pem: string, comment: string): string;
+
+ export function verify(parsedSignature: IParsedSignature, pubkey: string | Buffer): boolean;
+ export function verifySignature(parsedSignature: IParsedSignature, pubkey: string | Buffer): boolean;
+ export function verifyHMAC(parsedSignature: IParsedSignature, secret: string): boolean;
+}