18 unsigned char result[64];
27 sat_chksum_create(Id type)
30 h = sat_calloc(1, sizeof(*h));
34 case REPOKEY_TYPE_MD5:
35 sat_MD5_Init(&h->c.md5);
37 case REPOKEY_TYPE_SHA1:
38 sat_SHA1_Init(&h->c.sha1);
40 case REPOKEY_TYPE_SHA256:
41 sat_SHA256_Init(&h->c.sha256);
51 sat_chksum_create_from_bin(Id type, const unsigned char *buf)
54 int l = sat_chksum_len(type);
55 if (buf == 0 || l == 0)
57 h = sat_calloc(1, sizeof(*h));
60 memcpy(h->result, buf, l);
65 sat_chksum_add(void *handle, const void *data, int len)
67 struct ctxhandle *h = handle;
72 case REPOKEY_TYPE_MD5:
73 sat_MD5_Update(&h->c.md5, (void *)data, len);
75 case REPOKEY_TYPE_SHA1:
76 sat_SHA1_Update(&h->c.sha1, data, len);
78 case REPOKEY_TYPE_SHA256:
79 sat_SHA256_Update(&h->c.sha256, data, len);
87 sat_chksum_get(void *handle, int *lenp)
89 struct ctxhandle *h = handle;
93 *lenp = sat_chksum_len(h->type);
98 case REPOKEY_TYPE_MD5:
99 sat_MD5_Final(h->result, &h->c.md5);
104 case REPOKEY_TYPE_SHA1:
105 sat_SHA1_Final(&h->c.sha1, h->result);
110 case REPOKEY_TYPE_SHA256:
111 sat_SHA256_Final(h->result, &h->c.sha256);
124 sat_chksum_get_type(void *handle)
126 struct ctxhandle *h = handle;
131 sat_chksum_type2str(Id type)
135 case REPOKEY_TYPE_MD5:
137 case REPOKEY_TYPE_SHA1:
139 case REPOKEY_TYPE_SHA256:
147 sat_chksum_str2type(const char *str)
149 if (!strcasecmp(str, "md5"))
150 return REPOKEY_TYPE_MD5;
151 if (!strcasecmp(str, "sha") || !strcasecmp(str, "sha1"))
152 return REPOKEY_TYPE_SHA1;
153 if (!strcasecmp(str, "sha256"))
154 return REPOKEY_TYPE_SHA256;
159 sat_chksum_free(void *handle, unsigned char *cp)
163 const unsigned char *res;
165 res = sat_chksum_get(handle, &l);