Home | History | Annotate | Download | only in src
      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