#include #include #include #include #include #include int main(int argc, char *argv[]) { int fd, status; if (argc < 3) { printf ("usage : ./test_caphash \n"); exit(-1); } /* Hash the capability */ HMAC_CTX hctx; char *sigptr; unsigned int outputlen; unsigned char *key = argv[2]; unsigned char output[20], *buf; char *input = argv[1]; HMAC_CTX_init(&hctx); HMAC_Init(&hctx, key, strlen(key), EVP_sha1()); HMAC(EVP_sha1(), key, strlen(key), (unsigned char *) input, strlen(input), output, &outputlen); unsigned int t = outputlen; buf = output; printf("hash of the capability being written to /dev/caphash :\n"); while (t--) printf("%02x", *buf++); printf("\n"); fd = open("/dev/caphash", O_RDWR); if (fd < 0) perror("error opening the file"); status = write(fd, output, outputlen); if (status < 0) perror("error writing to the file"); printf("Capability successfully written to the /dev/caphash \n"); return 0; }