gm-crypto-wasm
Version:
An implementation of GM/T industry standards of wasm version
173 lines (172 loc) • 5.66 kB
TypeScript
declare module "gm-crypto-wasm" {
export namespace SM2 {
export enum constants {
C1C2C3,
C1C3C2,
/** 未压缩 */
PC = "04",
}
/** Generates a new asymmetric key pair */
export function generateKeyPair(): {
privateKey: string;
publicKey: string;
};
/**
* Encrypt data
* @param data Plain message
* @param key Public key generated by SM2.generateKeyPair()
* @param options encrypt options
* */
export function encrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: EncryptOptions
): string;
export function encrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: Omit<EncryptOptions, "outputEncoding">
): ArrayBuffer;
/**
* Decrypt data
* @param data Ciphered data
* @param key Public key generated by SM2.generateKeyPair()
* @param options
* */
export function decrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: DecryptOptions
): string;
export function decrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: Omit<DecryptOptions, "outputEncoding">
): ArrayBuffer;
export interface EncryptOptions {
/**
* Concatenation mode
* @default SM2.constants.C1C3C2
* */
mode?: SM2.constants;
/**
* The encoding of the plain data string,if `data` is not a string then `inputEncoding` is ignored.
* @default "utf8"
*/
inputEncoding?: BufferEncoding;
/** If `outputEncoding` is provided, a string will be returned, otherwise a [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) is returned. */
outputEncoding: BufferEncoding;
/**
* @default false
* */
pc?: boolean;
}
export interface DecryptOptions {
/**
* Concatenation mode
* @default SM2.constants.C1C3C2
* */
mode?: SM2.constants;
/**
* The encoding of the plain data string,if `data` is not a string then `inputEncoding` is ignored.
*/
inputEncoding?: BufferEncoding;
/** If `outputEncoding` is provided, a string will be returned, otherwise a [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) is returned. */
outputEncoding: BufferEncoding;
/**
* @default false
* */
pc?: boolean;
}
}
export namespace SM3 {
/**
* Calculates the digest.
* @param data Data message
* @param inputEncoding The encoding of the data string, if data is not a string then inputEncoding is ignored.Default is "utf8"
* @param outputEncoding If `outputEncoding` is provided, a string will be returned, otherwise a [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) is returned.
*/
export function digest(
data: string | ArrayBuffer | Buffer,
inputEncoding: string,
outputEncoding: BufferEncoding
): string;
export function digest(
data: string | ArrayBuffer | Buffer,
inputEncoding?: BufferEncoding
): ArrayBuffer;
}
export namespace SM4 {
export enum constants {
ECB = 1,
CBC,
}
/**
* Encrypt data.
* @param data Plain message
* @param key Cipher key(any string of 32 hexadecimal digits)
* @param options Options
*/
export function encrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: EncryptOptions
): string;
export function encrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: Omit<EncryptOptions, "outputEncoding">
): ArrayBuffer;
export interface EncryptOptions {
/**
* Block cipher mode
* @default SM4.constants.ECB
*/
mode?: SM4.constants;
/**
* Initialization vector(any string of 32 hexadecimal digits)
*/
iv?: string;
/**
* The encoding of the plain data string,if data is not a string then inputEncoding is ignored.
* @default "utf8"
*/
inputEncoding?: BufferEncoding;
/** If `outputEncoding` is provided, a string will be returned, otherwise a [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) is returned. */
outputEncoding: BufferEncoding;
}
/**
* Decrypt data.
* @param data Ciphered data
* @param key Cipher key(any string of 32 hexadecimal digits)
* @param options Options
*/
export function decrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: DecryptOptions
): string;
export function decrypt(
data: string | ArrayBuffer | Buffer,
key: string,
options?: Omit<DecryptOptions, "outputEncoding">
): ArrayBuffer;
export interface DecryptOptions {
/**
* Block cipher mode
* @default "ECB"
*/
mode?: SM4.constants;
/**
* Initialization vector(any string of 32 hexadecimal digits)
*/
iv?: string;
/**
* The encoding of the plain data string,if data is not a string then inputEncoding is ignored.
*/
inputEncoding?: BufferEncoding;
/** If `outputEncoding` is provided, a string will be returned, otherwise a [ArrayBuffer](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) is returned. */
outputEncoding: BufferEncoding;
}
}
}