1 /* Loading arbitrary modules using crypto api since v2.6.38
2 *
3 * - minipli
4 */
5 #include <linux/if_alg.h>
6 #include <sys/socket.h>
7 #include <unistd.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <stdio.h>
11 #ifndef AF_ALG
12 #define AF_ALG 38
13 #endif
14
15
main(int argc,char ** argv)16 int main(int argc, char **argv) {
17 struct sockaddr_alg sa_alg = {
18 .salg_family = AF_ALG,
19 .salg_type = "hash",
20 };
21 int sock;
22 if (argc != 2) {
23 printf("usage: %s MODULE_NAME\n", argv[0]);
24 exit(1);
25 }
26 sock = socket(AF_ALG, SOCK_SEQPACKET, 0);
27 if (sock < 0) {
28 perror("socket(AF_ALG)");
29 exit(1);
30 }
31 strncpy((char *) sa_alg.salg_name, argv[1], sizeof(sa_alg.salg_name));
32 bind(sock, (struct sockaddr *) &sa_alg, sizeof(sa_alg));
33 close(sock);
34
35 return 0;
36 }
37