2 * Copyright (c) 2008-2012, Novell Inc.
4 * This program is licensed under the BSD license, read LICENSE.BSD
5 * for further information
25 unsigned char result[64];
34 solv_chksum_create(Id type)
37 h = solv_calloc(1, sizeof(*h));
41 case REPOKEY_TYPE_MD5:
42 solv_MD5_Init(&h->c.md5);
44 case REPOKEY_TYPE_SHA1:
45 solv_SHA1_Init(&h->c.sha1);
47 case REPOKEY_TYPE_SHA256:
48 solv_SHA256_Init(&h->c.sha256);
58 solv_chksum_len(Id type)
62 case REPOKEY_TYPE_MD5:
64 case REPOKEY_TYPE_SHA1:
66 case REPOKEY_TYPE_SHA256:
74 solv_chksum_create_from_bin(Id type, const unsigned char *buf)
77 int l = solv_chksum_len(type);
78 if (buf == 0 || l == 0)
80 h = solv_calloc(1, sizeof(*h));
83 memcpy(h->result, buf, l);
88 solv_chksum_add(void *handle, const void *data, int len)
90 struct ctxhandle *h = handle;
95 case REPOKEY_TYPE_MD5:
96 solv_MD5_Update(&h->c.md5, (void *)data, len);
98 case REPOKEY_TYPE_SHA1:
99 solv_SHA1_Update(&h->c.sha1, data, len);
101 case REPOKEY_TYPE_SHA256:
102 solv_SHA256_Update(&h->c.sha256, data, len);
109 const unsigned char *
110 solv_chksum_get(void *handle, int *lenp)
112 struct ctxhandle *h = handle;
116 *lenp = solv_chksum_len(h->type);
121 case REPOKEY_TYPE_MD5:
122 solv_MD5_Final(h->result, &h->c.md5);
127 case REPOKEY_TYPE_SHA1:
128 solv_SHA1_Final(&h->c.sha1, h->result);
133 case REPOKEY_TYPE_SHA256:
134 solv_SHA256_Final(h->result, &h->c.sha256);
147 solv_chksum_get_type(void *handle)
149 struct ctxhandle *h = handle;
154 solv_chksum_isfinished(void *handle)
156 struct ctxhandle *h = handle;
161 solv_chksum_type2str(Id type)
165 case REPOKEY_TYPE_MD5:
167 case REPOKEY_TYPE_SHA1:
169 case REPOKEY_TYPE_SHA256:
177 solv_chksum_str2type(const char *str)
179 if (!strcasecmp(str, "md5"))
180 return REPOKEY_TYPE_MD5;
181 if (!strcasecmp(str, "sha") || !strcasecmp(str, "sha1"))
182 return REPOKEY_TYPE_SHA1;
183 if (!strcasecmp(str, "sha256"))
184 return REPOKEY_TYPE_SHA256;
189 solv_chksum_free(void *handle, unsigned char *cp)
193 const unsigned char *res;
195 res = solv_chksum_get(handle, &l);