Lines Matching defs:ctx
63 ssh_hmac_init(struct ssh_hmac_ctx *ctx, const void *key, size_t klen)
70 if (klen <= ctx->buf_len)
71 memcpy(ctx->buf, key, klen);
72 else if (ssh_digest_memory(ctx->alg, key, klen, ctx->buf,
73 ctx->buf_len) < 0)
75 for (i = 0; i < ctx->buf_len; i++)
76 ctx->buf[i] ^= 0x36;
77 if (ssh_digest_update(ctx->ictx, ctx->buf, ctx->buf_len) < 0)
79 for (i = 0; i < ctx->buf_len; i++)
80 ctx->buf[i] ^= 0x36 ^ 0x5c;
81 if (ssh_digest_update(ctx->octx, ctx->buf, ctx->buf_len) < 0)
83 explicit_bzero(ctx->buf, ctx->buf_len);
86 if (ssh_digest_copy_state(ctx->ictx, ctx->digest) < 0)
92 ssh_hmac_update(struct ssh_hmac_ctx *ctx, const void *m, size_t mlen)
94 return ssh_digest_update(ctx->digest, m, mlen);
98 ssh_hmac_update_buffer(struct ssh_hmac_ctx *ctx, const struct sshbuf *b)
100 return ssh_digest_update_buffer(ctx->digest, b);
104 ssh_hmac_final(struct ssh_hmac_ctx *ctx, u_char *d, size_t dlen)
108 len = ssh_digest_bytes(ctx->alg);
110 ssh_digest_final(ctx->digest, ctx->buf, len))
113 if (ssh_digest_copy_state(ctx->octx, ctx->digest) < 0 ||
114 ssh_digest_update(ctx->digest, ctx->buf, len) < 0 ||
115 ssh_digest_final(ctx->digest, d, dlen) < 0)
121 ssh_hmac_free(struct ssh_hmac_ctx *ctx)
123 if (ctx != NULL) {
124 ssh_digest_free(ctx->ictx);
125 ssh_digest_free(ctx->octx);
126 ssh_digest_free(ctx->digest);
127 if (ctx->buf) {
128 explicit_bzero(ctx->buf, ctx->buf_len);
129 free(ctx->buf);
131 freezero(ctx, sizeof(*ctx));
141 struct ssh_hmac_ctx *ctx;
145 if ((ctx = ssh_hmac_start(SSH_DIGEST_MD5)) == NULL)
147 if (ssh_hmac_init(ctx, key, klen) < 0 ||
148 ssh_hmac_update(ctx, m, mlen) < 0 ||
149 ssh_hmac_final(ctx, digest, sizeof(digest)) < 0)
151 ssh_hmac_free(ctx);