chore!: removed @mtcute/wasm dependency from core

breaking: `WasmCryptoProvider` no longer exists
This commit is contained in:
alina 🌸 2024-03-04 04:04:58 +03:00
parent baa4ccf755
commit fbf5c8f4bc
Signed by: teidesu
SSH key fingerprint: SHA256:uNeCpw6aTSU4aIObXLvHfLkDa82HWH9EiOj9AXOIRpI
5 changed files with 46 additions and 58 deletions

View file

@ -51,7 +51,6 @@
"dependencies": { "dependencies": {
"@mtcute/tl": "workspace:^", "@mtcute/tl": "workspace:^",
"@mtcute/tl-runtime": "workspace:^", "@mtcute/tl-runtime": "workspace:^",
"@mtcute/wasm": "workspace:^",
"@mtcute/file-id": "workspace:^", "@mtcute/file-id": "workspace:^",
"@types/events": "3.0.0", "@types/events": "3.0.0",
"events": "3.2.0", "events": "3.2.0",

View file

@ -5,4 +5,3 @@ export * from './miller-rabin.js'
export * from './mtproto.js' export * from './mtproto.js'
export * from './password.js' export * from './password.js'
export * from './utils.js' export * from './utils.js'
export * from './wasm.js'

View file

@ -1,50 +0,0 @@
import {
createCtr256,
ctr256,
deflateMaxSize,
freeCtr256,
gunzip,
ige256Decrypt,
ige256Encrypt,
sha1,
sha256,
} from '@mtcute/wasm'
import { BaseCryptoProvider, IAesCtr, ICryptoProvider, IEncryptionScheme } from './abstract.js'
export abstract class WasmCryptoProvider extends BaseCryptoProvider implements Partial<ICryptoProvider> {
abstract randomFill(buf: Uint8Array): void
abstract initialize(): Promise<void>
sha1(data: Uint8Array): Uint8Array {
return sha1(data)
}
sha256(data: Uint8Array): Uint8Array {
return sha256(data)
}
createAesCtr(key: Uint8Array, iv: Uint8Array): IAesCtr {
const ctx = createCtr256(key, iv)
return {
process: (data) => ctr256(ctx, data),
close: () => freeCtr256(ctx),
}
}
createAesIge(key: Uint8Array, iv: Uint8Array): IEncryptionScheme {
return {
encrypt: (data) => ige256Encrypt(data, key, iv),
decrypt: (data) => ige256Decrypt(data, key, iv),
}
}
gzip(data: Uint8Array, maxSize: number): Uint8Array | null {
return deflateMaxSize(data, maxSize)
}
gunzip(data: Uint8Array): Uint8Array {
return gunzip(data)
}
}

View file

@ -1,5 +1,16 @@
import { ICryptoProvider, WasmCryptoProvider } from '@mtcute/core/utils.js' import { BaseCryptoProvider, IAesCtr, ICryptoProvider, IEncryptionScheme } from '@mtcute/core/utils.js'
import { initSync } from '@mtcute/wasm' import {
createCtr256,
ctr256,
deflateMaxSize,
freeCtr256,
gunzip,
ige256Decrypt,
ige256Encrypt,
initSync,
sha1,
sha256,
} from '@mtcute/wasm'
import { loadWasmBinary, WasmInitInput } from './wasm.js' import { loadWasmBinary, WasmInitInput } from './wasm.js'
@ -14,10 +25,42 @@ export interface WebCryptoProviderOptions {
wasmInput?: WasmInitInput wasmInput?: WasmInitInput
} }
export class WebCryptoProvider extends WasmCryptoProvider implements ICryptoProvider { export class WebCryptoProvider extends BaseCryptoProvider implements ICryptoProvider {
readonly crypto: Crypto readonly crypto: Crypto
private _wasmInput?: WasmInitInput private _wasmInput?: WasmInitInput
sha1(data: Uint8Array): Uint8Array {
return sha1(data)
}
sha256(data: Uint8Array): Uint8Array {
return sha256(data)
}
createAesCtr(key: Uint8Array, iv: Uint8Array): IAesCtr {
const ctx = createCtr256(key, iv)
return {
process: (data) => ctr256(ctx, data),
close: () => freeCtr256(ctx),
}
}
createAesIge(key: Uint8Array, iv: Uint8Array): IEncryptionScheme {
return {
encrypt: (data) => ige256Encrypt(data, key, iv),
decrypt: (data) => ige256Decrypt(data, key, iv),
}
}
gzip(data: Uint8Array, maxSize: number): Uint8Array | null {
return deflateMaxSize(data, maxSize)
}
gunzip(data: Uint8Array): Uint8Array {
return gunzip(data)
}
constructor(params?: WebCryptoProviderOptions) { constructor(params?: WebCryptoProviderOptions) {
super() super()
const crypto = params?.crypto ?? globalThis.crypto const crypto = params?.crypto ?? globalThis.crypto

View file

@ -126,9 +126,6 @@ importers:
'@mtcute/tl-runtime': '@mtcute/tl-runtime':
specifier: workspace:^ specifier: workspace:^
version: link:../tl-runtime version: link:../tl-runtime
'@mtcute/wasm':
specifier: workspace:^
version: link:../wasm
'@types/events': '@types/events':
specifier: 3.0.0 specifier: 3.0.0
version: 3.0.0 version: 3.0.0