crypto: stm32/cryp - update to return iv_out
The kernel crypto API request output the next IV data to IV buffer for CBC implementation. Signed-off-by: Lionel Debieve <lionel.debieve@st.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
29aed438e8
commit
5f49f18d27
|
@ -393,6 +393,23 @@ static void stm32_cryp_hw_write_iv(struct stm32_cryp *cryp, u32 *iv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void stm32_cryp_get_iv(struct stm32_cryp *cryp)
|
||||||
|
{
|
||||||
|
struct ablkcipher_request *req = cryp->req;
|
||||||
|
u32 *tmp = req->info;
|
||||||
|
|
||||||
|
if (!tmp)
|
||||||
|
return;
|
||||||
|
|
||||||
|
*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV0LR));
|
||||||
|
*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV0RR));
|
||||||
|
|
||||||
|
if (is_aes(cryp)) {
|
||||||
|
*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV1LR));
|
||||||
|
*tmp++ = cpu_to_be32(stm32_cryp_read(cryp, CRYP_IV1RR));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void stm32_cryp_hw_write_key(struct stm32_cryp *c)
|
static void stm32_cryp_hw_write_key(struct stm32_cryp *c)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
@ -622,6 +639,9 @@ static void stm32_cryp_finish_req(struct stm32_cryp *cryp, int err)
|
||||||
/* Phase 4 : output tag */
|
/* Phase 4 : output tag */
|
||||||
err = stm32_cryp_read_auth_tag(cryp);
|
err = stm32_cryp_read_auth_tag(cryp);
|
||||||
|
|
||||||
|
if (!err && (!(is_gcm(cryp) || is_ccm(cryp))))
|
||||||
|
stm32_cryp_get_iv(cryp);
|
||||||
|
|
||||||
if (cryp->sgs_copied) {
|
if (cryp->sgs_copied) {
|
||||||
void *buf_in, *buf_out;
|
void *buf_in, *buf_out;
|
||||||
int pages, len;
|
int pages, len;
|
||||||
|
|
Loading…
Reference in New Issue