final functions as well int HASH_Final(CRYPTO_CTX *ctx, unsigned char *md, unsigned int len) { memcpy(md, ctx->mac, len);
return !cryptodev_close(ctx); } On 07/09/10 10:02, Kasatkin Dmitry (Nokia-MS/Helsinki) wrote: > Please look to patch description. > > normally OpenSSL API use looks like: > > http://www.openssl.org/docs/crypto/sha.html# > > > SHA1_Init() > SHA1_Update() > ... > .. > SHA1_Update() > SHA1_Final() > > > This is how openssl like api looks like > > > int cryptodev_open(CRYPTO_CTX *ctx) > { > /* Open the crypto device */ > ctx->fd = open("/dev/crypto", O_RDWR, 0); > if (ctx->fd < 0) { > perror("open(/dev/crypto)"); > return 1; > } > > /* Clone file descriptor */ > if (ioctl(ctx->fd, CRIOGET, &ctx->cfd)) { > perror("ioctl(CRIOGET)"); > return 1; > } > > /* Set close-on-exec (not really neede here) */ > if (fcntl(ctx->cfd, F_SETFD, 1) == -1) { > perror("fcntl(F_SETFD)"); > return 1; > } > > return 0; > } > > int cryptodev_close(CRYPTO_CTX *ctx) > { > /* Finish crypto session */ > if (ioctl(ctx->cfd, CIOCFSESSION, &ctx->sess.ses)) { > perror("ioctl(CIOCFSESSION)"); > return 1; > } > > /* Close cloned descriptor */ > if (close(ctx->cfd)) { > perror("close(cfd)"); > return 1; > } > > /* Close the original descriptor */ > if (close(ctx->fd)) { > perror("close(fd)"); > return 1; > } > return 0; > } > > int HASH_Init(SHA_CTX *ctx, int mac) > { > if (cryptodev_open(ctx)) > return 0; > > /* SHA1 plain test */ > memset(&ctx->sess, 0, sizeof(ctx->sess)); > > ctx->sess.cipher = 0; > ctx->sess.mac = mac; > if (ioctl(ctx->cfd, CIOCGSESSION, &ctx->sess)) { > perror("ioctl(CIOCGSESSION)"); > return 0; > } > > return 1; > } > > int HASH_Update(SHA_CTX *ctx, const void *data, unsigned long len) > { > struct crypt_op cryp; > > cryp.ses = ctx->sess.ses; > cryp.len = len; > cryp.src = (void *)data; > cryp.mac = ctx->mac; > cryp.op = COP_ENCRYPT; > cryp.flags = COP_FLAG_UPDATE; > > if (ioctl(ctx->cfd, CIOCCRYPT, &cryp)) { > perror("ioctl(CIOCCRYPT)"); > return 0; > } > > return 1; > } > > > Dmitry Kasatkin (1): > multi-update support for hash calculation > > cryptodev.h | 1 + > cryptodev_main.c | 15 +++++++++------ > 2 files changed, 10 insertions(+), 6 deletions(-) > > > _______________________________________________ > Cryptodev-linux-devel mailing list > Cryptodev-linux-devel@gna.org > https://mail.gna.org/listinfo/cryptodev-linux-devel > _______________________________________________ Cryptodev-linux-devel mailing list Cryptodev-linux-devel@gna.org https://mail.gna.org/listinfo/cryptodev-linux-devel