107 lines
2.9 KiB
Plaintext
107 lines
2.9 KiB
Plaintext
import type { CryptoBlockMode, CryptoByteCipherOptions, CryptoDesOptions, CryptoPaddingKind, CryptoRuntimeSnapshot, CryptoTextCipherOptions, CryptoTripleDesOptions, RsaOutputKind } from "../interface.uts"
|
|
|
|
export function createDefaultTextCipherOptions() : CryptoTextCipherOptions {
|
|
return {
|
|
mode: "CBC",
|
|
padding: "PKCS7",
|
|
ivText: "0123456789abcdef",
|
|
keyLength: 16
|
|
} as CryptoTextCipherOptions
|
|
}
|
|
|
|
export function createDefaultByteCipherOptions() : CryptoByteCipherOptions {
|
|
return {
|
|
mode: "CBC",
|
|
padding: "PKCS7",
|
|
ivBytes: new Uint8Array([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102]),
|
|
keyLength: 16
|
|
} as CryptoByteCipherOptions
|
|
}
|
|
|
|
export function createDefaultTripleDesOptions() : CryptoTripleDesOptions {
|
|
return {
|
|
mode: "CBC",
|
|
ivText: "12345678"
|
|
} as CryptoTripleDesOptions
|
|
}
|
|
|
|
export function createDefaultDesOptions() : CryptoDesOptions {
|
|
return {
|
|
mode: "CBC",
|
|
padding: "PKCS7",
|
|
ivText: "12345678"
|
|
} as CryptoDesOptions
|
|
}
|
|
|
|
export function normalizeTextCipherOptions(options : CryptoTextCipherOptions | null) : CryptoTextCipherOptions {
|
|
if (options == null) {
|
|
return createDefaultTextCipherOptions()
|
|
}
|
|
return {
|
|
mode: options.mode,
|
|
padding: options.padding,
|
|
ivText: options.ivText,
|
|
keyLength: options.keyLength
|
|
} as CryptoTextCipherOptions
|
|
}
|
|
|
|
export function normalizeByteCipherOptions(options : CryptoByteCipherOptions | null) : CryptoByteCipherOptions {
|
|
if (options == null) {
|
|
return createDefaultByteCipherOptions()
|
|
}
|
|
return {
|
|
mode: options.mode,
|
|
padding: options.padding,
|
|
ivBytes: options.ivBytes,
|
|
keyLength: options.keyLength
|
|
} as CryptoByteCipherOptions
|
|
}
|
|
|
|
export function normalizeTripleDesOptions(options : CryptoTripleDesOptions | null) : CryptoTripleDesOptions {
|
|
if (options == null) {
|
|
return createDefaultTripleDesOptions()
|
|
}
|
|
return {
|
|
mode: options.mode,
|
|
ivText: options.ivText
|
|
} as CryptoTripleDesOptions
|
|
}
|
|
|
|
export function normalizeDesOptions(options : CryptoDesOptions | null) : CryptoDesOptions {
|
|
if (options == null) {
|
|
return createDefaultDesOptions()
|
|
}
|
|
return {
|
|
mode: options.mode,
|
|
padding: options.padding,
|
|
ivText: options.ivText
|
|
} as CryptoDesOptions
|
|
}
|
|
|
|
export function buildRuntimeSnapshot(platformName : string, engineName : string, supportsAdvancedModes : boolean, usesNativeBridge : boolean) : CryptoRuntimeSnapshot {
|
|
return {
|
|
platformName: platformName,
|
|
engineName: engineName,
|
|
supportsAdvancedModes: supportsAdvancedModes,
|
|
usesNativeBridge: usesNativeBridge
|
|
} as CryptoRuntimeSnapshot
|
|
}
|
|
|
|
export function resolveHexOutput(outputKind : RsaOutputKind | null) : boolean {
|
|
return outputKind == "hex"
|
|
}
|
|
|
|
export function createAsciiBlock(text : string, size : number) : Uint8Array {
|
|
const output = new Uint8Array(size)
|
|
let index = 0
|
|
while (index < size) {
|
|
if (index < text.length) {
|
|
output[index] = text.charCodeAt(index) & 0xff
|
|
} else {
|
|
output[index] = 0
|
|
}
|
|
index += 1
|
|
}
|
|
return output
|
|
}
|