return 0;
 }
 
+static int nhpoly1305_neon_digest(struct shash_desc *desc,
+                                 const u8 *src, unsigned int srclen, u8 *out)
+{
+       return crypto_nhpoly1305_init(desc) ?:
+              nhpoly1305_neon_update(desc, src, srclen) ?:
+              crypto_nhpoly1305_final(desc, out);
+}
+
 static struct shash_alg nhpoly1305_alg = {
        .base.cra_name          = "nhpoly1305",
        .base.cra_driver_name   = "nhpoly1305-neon",
        .init                   = crypto_nhpoly1305_init,
        .update                 = nhpoly1305_neon_update,
        .final                  = crypto_nhpoly1305_final,
+       .digest                 = nhpoly1305_neon_digest,
        .setkey                 = crypto_nhpoly1305_setkey,
        .descsize               = sizeof(struct nhpoly1305_state),
 };