… | |
… | |
1210 | { |
1210 | { |
1211 | mds_boot(); |
1211 | mds_boot(); |
1212 | } |
1212 | } |
1213 | |
1213 | |
1214 | SV * |
1214 | SV * |
1215 | md2(sv) |
1215 | md2(...) |
1216 | SV *sv |
|
|
1217 | ALIAS: |
1216 | ALIAS: |
1218 | md4 = 0x1 |
1217 | md4 = 0x1 |
1219 | md5 = 0x2 |
1218 | md5 = 0x2 |
1220 | sha = 0x3 |
1219 | sha = 0x3 |
1221 | sha1 = 0x4 |
1220 | sha1 = 0x4 |
… | |
… | |
1239 | sha1_base64 = 0x24 |
1238 | sha1_base64 = 0x24 |
1240 | dss_base64 = 0x25 |
1239 | dss_base64 = 0x25 |
1241 | dss1_base64 = 0x26 |
1240 | dss1_base64 = 0x26 |
1242 | mdc2_base64 = 0x27 |
1241 | mdc2_base64 = 0x27 |
1243 | ripemd160_base64 = 0x28 |
1242 | ripemd160_base64 = 0x28 |
1244 | PREINIT: |
1243 | CODE: |
1245 | EVP_MD_CTX ctx; |
1244 | EVP_MD_CTX ctx; |
1246 | STRLEN l; |
1245 | STRLEN l; |
1247 | char *p; |
1246 | char *p; |
1248 | unsigned char md[EVP_MAX_MD_SIZE]; |
1247 | unsigned char md[EVP_MAX_MD_SIZE]; |
1249 | unsigned int md_len; |
1248 | unsigned int md_len; |
1250 | CODE: |
1249 | int i; |
|
|
1250 | |
1251 | EVP_DigestInit(&ctx, _mds[NO_FLAGS(ix)]); |
1251 | EVP_DigestInit(&ctx, _mds[NO_FLAGS(ix)]); |
|
|
1252 | |
|
|
1253 | for (i = 0; i < items; i++) |
|
|
1254 | { |
1252 | p = SvPV(sv, l); |
1255 | p = SvPV(ST(i), l); |
1253 | EVP_DigestUpdate(&ctx, p, l); |
1256 | EVP_DigestUpdate(&ctx, p, l); |
|
|
1257 | } |
|
|
1258 | |
1254 | EVP_DigestFinal(&ctx, md, &md_len); |
1259 | EVP_DigestFinal(&ctx, md, &md_len); |
1255 | switch(ix & ~15) { |
1260 | switch(ix & ~15) { |
1256 | case 0: |
1261 | case 0: |
1257 | RETVAL = newSVpvn(md, md_len); |
1262 | RETVAL = newSVpvn(md, md_len); |
1258 | break; |
1263 | break; |