diff options
| author | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2019-02-01 19:59:12 +0900 |
|---|---|---|
| committer | Aya Morisawa <AyaMorisawa4869@gmail.com> | 2019-02-01 19:59:12 +0900 |
| commit | 40e177fa9639b1c62184a41cd9d64eecfa527f45 (patch) | |
| tree | 3e5a95006e080c3fd31d750856b363264815ef70 /src/@types | |
| parent | Create type definition for 'deepcopy' (#4000) (diff) | |
| download | sharkey-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.ts | 75 |
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; +} |