export declare enum AesKeySize { Aes128 = 128, Aes256 = 256 } export declare enum AesAlgorithm { AesCbcPkcs7 = "AesCbcPkcs7" } export interface XAesService { generateKey(algorithm: AesAlgorithm, size: AesKeySize): Promise; exportKey(key: XAesKey): Promise; loadKey(algorithm: AesAlgorithm, bytes: Int8Array): Promise; encrypt(data: Int8Array, key: XAesKey, iv?: Int8Array): Promise; decrypt(ivAndEncryptedData: Int8Array, key: XAesKey): Promise; } export interface XAesKey { readonly aesKey?: any; readonly algorithm: string; } export interface XCryptoService extends PartialXCryptoService { readonly rsa: XRsaService; readonly strongRandom: XStrongRandom; } export interface PartialXCryptoService { readonly aes: XAesService; readonly digest: XDigestService; readonly rsa: PartialXRsaService & Partial; readonly strongRandom: PartialXStrongRandom & Partial; readonly hmac: XHmacService; } export interface XDigestService { sha256(data: Int8Array): Promise; } export declare enum HmacAlgorithm { HmacSha512 = "HmacSha512", HmacSha256 = "HmacSha256" } export interface XHmacService { generateKey(algorithm: HmacAlgorithm, keySize?: number): Promise; exportKey(key: XHmacKey): Promise; loadKey(algorithm: HmacAlgorithm, bytes: Int8Array): Promise; sign(data: Int8Array, key: XHmacKey): Promise; verify(signature: Int8Array, data: Int8Array, key: XHmacKey): Promise; } export interface XHmacKey { readonly hmacKey?: any; readonly keySize: number; readonly algorithm: string; } export declare enum RsaKeySize { Rsa2048 = 2048, Rsa4096 = 4096 } export declare enum RsaEncryptionAlgorithm { OaepWithSha1 = "OaepWithSha1", OaepWithSha256 = "OaepWithSha256" } export declare enum RsaSignatureAlgorithm { PssWithSha256 = "PssWithSha256" } export type RsaAlgorithm = RsaEncryptionAlgorithm | RsaSignatureAlgorithm; interface PartialXRsaService { generateKeyPair(algorithm: RsaAlgorithm, keySize: RsaKeySize): Promise; exportPrivateKeyPkcs8(key: XPrivateRsaKey): Promise; exportPublicKeySpki(key: XPublicRsaKey): Promise; loadPrivateKeyPkcs8(algorithm: RsaAlgorithm, privateKeyPkcs8: Int8Array): Promise; loadPublicKeySpki(algorithm: RsaAlgorithm, publicKeySpki: Int8Array): Promise; encrypt(data: Int8Array, publicKey: XPublicRsaKey): Promise; decrypt(data: Int8Array, privateKey: XPrivateRsaKey): Promise; sign(data: Int8Array, privateKey: XPrivateRsaKey): Promise; verifySignature(signature: Int8Array, data: Int8Array, publicKey: XPublicRsaKey): Promise; } interface XRsaService extends PartialXRsaService { loadKeyPairPkcs8(algorithm: RsaAlgorithm, privateKeyPkcs8: Int8Array): Promise; exportPrivateKeyJwk(key: XPrivateRsaKey): Promise; exportPublicKeyJwk(key: XPublicRsaKey): Promise; loadPrivateKeyJwk(privateKeyJwk: JsonWebKey): Promise; loadPublicKeyJwk(publicKeyJwk: JsonWebKey): Promise; } export interface XRsaKeypair { readonly private: XPrivateRsaKey; readonly public: XPublicRsaKey; } export interface XPrivateRsaKey { readonly privateKey?: any; readonly algorithm: string; } export interface XPublicRsaKey { readonly publicKey?: any; readonly algorithm: string; } export interface XStrongRandom extends PartialXStrongRandom { randomUUID(): string; fill(array: Int8Array): void; } export interface PartialXStrongRandom { randomBytes(length: number): Int8Array; } export {};