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 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