#include #include #include #include #include int main() { int sockfd, opfd; struct sockaddr_alg sa = { .salg_family = AF_ALG, .salg_type = "hash", .salg_name = "sha1" }; sockfd = socket(AF_ALG, SOCK_SEQPACKET, 0); if (sockfd < 0) { perror("socket"); return 1; } if (bind(sockfd, (struct sockaddr *)&sa, sizeof(sa)) < 0) { perror("bind"); close(sockfd); return 1; } opfd = accept(sockfd, NULL, 0); if (opfd < 0) { perror("accept"); close(sockfd); return 1; } char data[] = "hello world"; write(opfd, data, strlen(data)); char hash[20]; read(opfd, hash, sizeof(hash)); printf("SHA1 hash computed\n"); close(opfd); close(sockfd); return 0; }