mtcute/packages/crypto-node/src/index.ts

23 lines
727 B
TypeScript
Raw Normal View History

import { NodeCryptoProvider, IEncryptionScheme } from '@mtcute/core'
import { ige256_decrypt, ige256_encrypt } from './native'
/**
* Crypto provider for NodeJS that uses a native extension to improve
* performance of the IGE mode.
*
* Other modes are supported natively by OpenSSL, and
* they *are* faster than the custom ones.
*/
export class NodeNativeCryptoProvider extends NodeCryptoProvider {
createAesIge(key: Buffer, iv: Buffer): IEncryptionScheme {
return {
encrypt(data: Buffer): Buffer {
return ige256_encrypt(data, key, iv)
},
decrypt(data: Buffer): Buffer {
return ige256_decrypt(data, key, iv)
},
}
}
}