One more thought about why userspace using AF_ALG is a bad idea --- there is no guarantee that all kernels will have all of the crypto algorithms you need built into the kernel. People who build custom kernels very often only include those kernel modules they need. So by default I don't normally build the more exotic crypto algorithms into my kernel --- and some people might not the crypto algorithms _you_ care about built into the kernel. (Not every one uses distro kernels.) So if you want your program to work everywhere, you're going to have to provide fallback crypto algorithms anyway. Which is why arguably it was a Really Bad Idea that AF_ALG provides access to software-only crypto implementations in the kernel. It led userspace programmers down the primrose path into making programs that are fragile with respect to users with custom-built kernels. - Ted