18 unsigned char result[64];
27 solv_chksum_create(Id type)
30 h = solv_calloc(1, sizeof(*h));
34 case REPOKEY_TYPE_MD5:
35 solv_MD5_Init(&h->c.md5);
37 case REPOKEY_TYPE_SHA1:
38 solv_SHA1_Init(&h->c.sha1);
40 case REPOKEY_TYPE_SHA256:
41 solv_SHA256_Init(&h->c.sha256);
51 solv_chksum_create_from_bin(Id type, const unsigned char *buf)
54 int l = solv_chksum_len(type);
55 if (buf == 0 || l == 0)
57 h = solv_calloc(1, sizeof(*h));
60 memcpy(h->result, buf, l);
65 solv_chksum_add(void *handle, const void *data, int len)
67 struct ctxhandle *h = handle;
72 case REPOKEY_TYPE_MD5:
73 solv_MD5_Update(&h->c.md5, (void *)data, len);
75 case REPOKEY_TYPE_SHA1:
76 solv_SHA1_Update(&h->c.sha1, data, len);
78 case REPOKEY_TYPE_SHA256:
79 solv_SHA256_Update(&h->c.sha256, data, len);
87 solv_chksum_get(void *handle, int *lenp)
89 struct ctxhandle *h = handle;
93 *lenp = solv_chksum_len(h->type);
98 case REPOKEY_TYPE_MD5:
99 solv_MD5_Final(h->result, &h->c.md5);
104 case REPOKEY_TYPE_SHA1:
105 solv_SHA1_Final(&h->c.sha1, h->result);
110 case REPOKEY_TYPE_SHA256:
111 solv_SHA256_Final(h->result, &h->c.sha256);
124 solv_chksum_get_type(void *handle)
126 struct ctxhandle *h = handle;
131 solv_chksum_isfinished(void *handle)
133 struct ctxhandle *h = handle;
138 solv_chksum_type2str(Id type)
142 case REPOKEY_TYPE_MD5:
144 case REPOKEY_TYPE_SHA1:
146 case REPOKEY_TYPE_SHA256:
154 solv_chksum_str2type(const char *str)
156 if (!strcasecmp(str, "md5"))
157 return REPOKEY_TYPE_MD5;
158 if (!strcasecmp(str, "sha") || !strcasecmp(str, "sha1"))
159 return REPOKEY_TYPE_SHA1;
160 if (!strcasecmp(str, "sha256"))
161 return REPOKEY_TYPE_SHA256;
166 solv_chksum_free(void *handle, unsigned char *cp)
170 const unsigned char *res;
172 res = solv_chksum_get(handle, &l);