void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len)
{
    CRYPTO_gcm128_finish(ctx, NULL, 0);
    memcpy(tag, ctx->Xi.c,
           len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));
}
['static int gcm_cipher_final(PROV_GCM_CTX *ctx, unsigned char *tag)\n{\n    if (ctx->enc) {\n        CRYPTO_gcm128_tag(&ctx->gcm, tag, GCM_TAG_MAX_SIZE);\n        ctx->taglen = GCM_TAG_MAX_SIZE;\n    } else {\n        if (ctx->taglen < 0\n            || CRYPTO_gcm128_finish(&ctx->gcm, tag, ctx->taglen) != 0)\n            return 0;\n    }\n    return 1;\n}', 'void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len)\n{\n    CRYPTO_gcm128_finish(ctx, NULL, 0);\n    memcpy(tag, ctx->Xi.c,\n           len <= sizeof(ctx->Xi.c) ? len : sizeof(ctx->Xi.c));\n}']