DefinitelyTyped/types/sic-ecies/index.d.ts
Methrat0n ee1a310306 Add @types for sic-ecies (#38460)
* write sic-ecies types

* use bitcore-lib PrivateKey and PublicKey and add the CBC constructor parameters. Also add readonly before all parameter arrays (they are not modified)

* test corrections, also remove readonly to keep lower ts version
2019-10-01 13:00:33 -07:00

99 lines
2.6 KiB
TypeScript

// Type definitions for sic-ecies 1.0
// Project: sic-ecies
// Definitions by: Methrat0n <https://github.com/Methrat0n>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.2
import { PrivateKey, PublicKey } from 'bitcore-lib';
export interface ECIESOptions {
shortTag?: boolean;
noKey?: boolean;
}
export interface ECIES {
(opts?: ECIESOptions): ECIES;
privateKey: (privateKey: PrivateKey) => ECIES;
publicKey: (publicKey: PublicKey) => ECIES;
encrypt: (message: string | Buffer, ivbuf?: Buffer) => Buffer;
decrypt: (encbuf: Buffer) => Buffer;
Rbuf: Buffer;
kEkM: Buffer;
kE: Buffer;
kM: Buffer;
}
export interface AESCBC {
(): AESCBC;
encrypt: (messagebuf: Buffer, passwordstr: string) => Buffer;
decrypt: (encbuf: Buffer, passwordstr: string) => Buffer;
encryptCipherkey: (messagebuf: Buffer, cipherkeybuf: Buffer, ivbuf: Buffer) => Buffer;
decryptCipherkey: (encbuf: Buffer, cipherkeybuf: Buffer) => Buffer;
}
interface Blockcipher {
encrypt: (xorbuf: Buffer, cipherkeybuf: Buffer) => Buffer;
decrypt: (encbuf: Buffer, cipherkeybuf: Buffer) => Buffer;
}
export interface CBC {
(blockcipher: Blockcipher, cipherkeybuf: Buffer, ivbuf: Buffer): CBC;
buf2blockbufs: (buf: Buffer, blocksize: number) => Buffer[];
blockbufs2buf: (blockbufs: Buffer[]) => Buffer;
encrypt: (
messagebuf: Buffer,
ivbuf: Buffer,
blockcipher: Blockcipher,
cipherkeybuf: Buffer
) => Buffer;
decrypt: (
encbuf: Buffer,
ivbuf: Buffer,
blockcipher: Blockcipher,
cipherkeybuf: Buffer
) => Buffer;
encryptblock: (
blockbuf: Buffer,
ivbuf: Buffer,
blockcipher: Blockcipher,
cipherkeybuf: Buffer
) => Buffer;
decryptblock: (
encbuf: Buffer,
ivbuf: Buffer,
blockcipher: Blockcipher,
cipherkeybuf: Buffer
) => Buffer;
encryptblocks: (
blockbufs: Buffer[],
ivbuf: Buffer,
blockcipher: Blockcipher,
cipherkeybuf: Buffer
) => Buffer[];
decryptblocks: (
encbufs: Buffer[],
ivbuf: Buffer,
blockcipher: Blockcipher,
cipherkeybuf: Buffer
) => Buffer[];
pkcs7pad: (buf: Buffer, blocksize: number) => Buffer;
pkcs7unpad: (paddedbuf: Buffer) => Buffer;
xorbufs: (buf1: Buffer, buf2: Buffer) => Buffer;
}
export interface AES {
(): AES;
encrypt: (messagebuf: Buffer, keybuf: Buffer) => Buffer;
decrypt: (encbuf: Buffer, keybuf: Buffer) => Buffer;
buf2words: (buf: Buffer) => number[];
words2buf: (words: number[]) => Buffer;
}
export const ECIES: ECIES;
export const AES: AES;
export const CBC: CBC;
export const AESCBC: AESCBC;
export {};