Merge branch 'master' of git://git.denx.de/u-boot-tegra
[platform/kernel/u-boot.git] / drivers / crypto / fsl / fsl_blob.c
1 /*
2  * Copyright 2014 Freescale Semiconductor, Inc.
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  *
6  */
7
8 #include <common.h>
9 #include <malloc.h>
10 #include "jobdesc.h"
11 #include "desc.h"
12 #include "jr.h"
13
14 int blob_decrypt(u8 *key_mod, u8 *src, u8 *dst, u8 len)
15 {
16         int ret, i = 0;
17         u32 *desc;
18
19         printf("\nDecapsulating data to form blob\n");
20         desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
21         if (!desc) {
22                 debug("Not enough memory for descriptor allocation\n");
23                 return -1;
24         }
25
26         inline_cnstr_jobdesc_blob_decap(desc, key_mod, src, dst, len);
27
28         for (i = 0; i < 14; i++)
29                 printf("%x\n", *(desc + i));
30         ret = run_descriptor_jr(desc);
31
32         if (ret)
33                 printf("Error in Decapsulation %d\n", ret);
34
35         free(desc);
36         return ret;
37 }
38
39 int blob_encrypt(u8 *key_mod, u8 *src, u8 *dst, u8 len)
40 {
41         int ret, i = 0;
42         u32 *desc;
43
44         printf("\nEncapsulating data to form blob\n");
45         desc = malloc(sizeof(int) * MAX_CAAM_DESCSIZE);
46         if (!desc) {
47                 debug("Not enough memory for descriptor allocation\n");
48                 return -1;
49         }
50
51         inline_cnstr_jobdesc_blob_encap(desc, key_mod, src, dst, len);
52         for (i = 0; i < 14; i++)
53                 printf("%x\n", *(desc + i));
54         ret = run_descriptor_jr(desc);
55
56         if (ret)
57                 printf("Error in Encapsulation %d\n", ret);
58
59         free(desc);
60         return ret;
61 }