@loke I'm well aware of what a pointer is.
By masking the pointer type in some cases but not others, you are making your code inconsistent.
You also hide useful information: if a function accepts a parameter of type ssh_key, it is reasonable to wonder if it is a structure passed by copy, a pointer to something you must allocate yourself, or something more complicated altogether.
One good thing with C is that what's happening is usually obvious. Hiding types because you cannot be bothered to write "struct ssh_key *" is a terrible idea.
You may think it's ok because you know that "ssh_key" is a pointer type. But when you have worked with very large C codebases, you learn than you cannot expect to remember what is behind each typedef and must keep things explicit.