[ ] check bootloaders/HV for any other functions that are used outside of XeCrypt-internal stuff
[ ] add test vectors for each function
[ ] ensure all _STATE structs are byteswapped before/after accesses to them
Kernel: 67/88
Export Name
Location
Implemented
Has Tests?
Notes
XeCryptAesKey
Kernel
:heavy_check_mark:
:x:
XeCryptAesEcb
Kernel
:heavy_check_mark:
:x:
XeCryptAesCbc
Kernel
:heavy_check_mark:
:x:
XeCryptBnDwLeDhEqualBase
Kernel
:x:
:x:
XeCryptBnDwLeDhInvalBase
Kernel
:x:
:x:
XeCryptBnDwLeDhModExp
Kernel
:x:
:x:
XeCryptBnDw_Copy
Kernel
:heavy_check_mark:
:x:
XeCryptBnDw_SwapLeBe
Kernel
:heavy_check_mark:
:x:
XeCryptBnDw_Zero
Kernel
:heavy_check_mark:
:x:
XeCryptBnDwLePkcs1Format
Kernel
:x:
:x:
XeCryptBnDwLePkcs1Verify
Kernel
:x:
:x:
XeCryptBnQwBeSigCreate
Kernel
:x:
:x:
XeCryptBnQwBeSigFormat
Kernel
:heavy_check_mark:
:x:
XeCryptBnQwBeSigVerify
Kernel
:heavy_check_mark:
:x:
XeCryptBnQwNeModExp
Kernel
:x:
:x:
XeCryptBnQwNeModExpRoot
Kernel
:x:
:x:
XeCryptBnQwNeModInv
Kernel
:heavy_check_mark:
:x:
XeCryptBnQwNeModMul
Kernel
:heavy_check_mark:
:x:
XeCryptBnQwNeRsaKeyGen
Kernel
:x:
:x:
XeCryptBnQwNeRsaPrvCrypt
Kernel
:x:
:x:
XeCryptBnQwNeRsaPubCrypt
Kernel
:heavy_check_mark:
:x:
XeCryptBnQw_Copy
Kernel
:heavy_check_mark:
:x:
XeCryptBnQw_SwapDwQw
Kernel
:heavy_check_mark:
:x:
XeCryptBnQw_SwapDwQwLeBe
Kernel
:heavy_check_mark:
:x:
XeCryptBnQw_SwapLeBe
Kernel
:heavy_check_mark:
:x:
XeCryptBnQw_Zero
Kernel
:heavy_check_mark:
:x:
XeCryptChainAndSumMac
Kernel
:heavy_check_mark:
:x:
XeCryptDesParity
Kernel
:heavy_check_mark:
:x:
XeCryptDesKey
Kernel
:heavy_check_mark:
:x:
XeCryptDesEcb
Kernel
:heavy_check_mark:
:x:
XeCryptDesCbc
Kernel
:heavy_check_mark:
:x:
XeCryptDes3Key
Kernel
:heavy_check_mark:
:x:
XeCryptDes3Ecb
Kernel
:heavy_check_mark:
:x:
XeCryptDes3Cbc
Kernel
:heavy_check_mark:
:x:
XeCryptHmacMd5Init
Kernel
:heavy_check_mark:
:x:
XeCryptHmacMd5Update
Kernel
:heavy_check_mark:
:x:
XeCryptHmacMd5Final
Kernel
:heavy_check_mark:
:x:
XeCryptHmacMd5
Kernel
:heavy_check_mark:
:x:
XeCryptHmacShaInit
Kernel
:heavy_check_mark:
:x:
XeCryptHmacShaUpdate
Kernel
:heavy_check_mark:
:x:
XeCryptHmacShaFinal
Kernel
:heavy_check_mark:
:x:
XeCryptHmacSha
Kernel
:heavy_check_mark:
:x:
XeCryptHmacShaVerify
Kernel
:heavy_check_mark:
:x:
XeCryptMd5Init
Kernel
:heavy_check_mark:
:x:
XeCryptMd5Update
Kernel
:heavy_check_mark:
:x:
XeCryptMd5Final
Kernel
:heavy_check_mark:
:x:
XeCryptMd5
Kernel
:heavy_check_mark:
:x:
XeCryptParveEcb
Kernel
:heavy_check_mark:
:x:
XeCryptParveCbcMac
Kernel
:heavy_check_mark:
:x:
XeCryptRandom
Kernel
:x:
:x:
Uses RC4 with a static RC4_STATE, inited by Hypervisor during boot - is it possible to find what that initial value is?
XeCryptRc4Key
Kernel
:heavy_check_mark:
:x:
XeCryptRc4Ecb
Kernel
:heavy_check_mark:
:x:
XeCryptRc4
Kernel
:heavy_check_mark:
:x:
XeCryptRotSumSha
Kernel
:heavy_check_mark:
:x:
XeCryptShaInit
Kernel
:heavy_check_mark:
:x:
XeCryptShaUpdate
Kernel
:heavy_check_mark:
:x:
XeCryptShaFinal
Kernel
:heavy_check_mark:
:x:
XeCryptSha
Kernel
:heavy_check_mark:
:x:
XeCryptSha256Init
Kernel
:heavy_check_mark:
:x:
XeCryptSha256Update
Kernel
:heavy_check_mark:
:x:
XeCryptSha256Final
Kernel
:heavy_check_mark:
:x:
XeCryptSha256
Kernel
:heavy_check_mark:
:x:
XeCryptSha384Init
Kernel
:heavy_check_mark:
:x:
XeCryptSha384Update
Kernel
:heavy_check_mark:
:x:
XeCryptSha384Final
Kernel
:heavy_check_mark:
:x:
XeCryptSha384
Kernel
:heavy_check_mark:
:x:
XeCryptSha512Init
Kernel
:heavy_check_mark:
:x:
XeCryptSha512Update
Kernel
:heavy_check_mark:
:x:
XeCryptSha512Final
Kernel
:heavy_check_mark:
:x:
XeCryptSha512
Kernel
:heavy_check_mark:
:x:
XeCryptBnQwNeCompare
Kernel
:heavy_check_mark:
:x:
XeCryptAesCtr
Kernel
:x:
:x:
XeCryptAesCbcMac
Kernel
:x:
:x:
XeCryptAesDmMac
Kernel
:x:
:x:
XeCryptSha224Init
Kernel
:heavy_check_mark:
:x:
XeCryptAesCreateKeySchedule
Kernel
:heavy_check_mark:
:x:
XeCryptAesEncryptOne
Kernel
:heavy_check_mark:
:x:
XeCryptAesDecryptOne
Kernel
:heavy_check_mark:
:x:
XeCryptAesCbcEncrypt
Kernel
:heavy_check_mark:
:x:
XeCryptAesCbcDecrypt
Kernel
:heavy_check_mark:
:x:
XeCryptAesGcmInitialize
Kernel
:x:
:x:
XeCryptAesGcmUpdate
Kernel
:x:
:x:
XeCryptAesGcmFinalize
Kernel
:x:
:x:
XeCryptEccGetCurveParameters
Kernel
:heavy_check_mark:
:x:
Weird function, returns an address to a uint32? Is there anything that uses this we can look at?
XeCryptEccEcdhGenerateKeypair
Kernel
:x:
:x:
XeCryptEccEcdhExponentiate
Kernel
:x:
:x:
XeCryptEccEcdsaGenerateSignature
Kernel
:x:
:x:
XeCryptEccEcdsaVerifySignature
Kernel
:x:
:x:
Extra: 2/8
These are mentioned in a header file available on pastebin, doesn't seem like kernel has them included though, need to see if any bootloaders or other OS files might include them (otherwise there's not really any way to tell how they're implemented...)
If nothing uses them I guess they aren't that important, but still worth mentioning for completeness sake.
Export Name
Location
Implemented
Has Tests?
Notes
XeCryptBnQwNeRsaPrvExpFromRoot
Header
:x:
:x:
Generates private exponent for input private key?
XeCryptBnQwBeSigDifference
Header (+ Bootloaders/HV?)
✔️
:x:
Mostly same as SigVerify but "returns difference"?
TODO:
Extra: 2/8
These are mentioned in a header file available on pastebin, doesn't seem like kernel has them included though, need to see if any bootloaders or other OS files might include them (otherwise there's not really any way to tell how they're implemented...)
If nothing uses them I guess they aren't that important, but still worth mentioning for completeness sake.