| 107 | static int initialized_choices = 0; |
| 108 | |
| 109 | struct name_num_item *parse_csum_name(const char *name, int len) |
| 110 | { |
| 111 | struct name_num_item *nni; |
| 112 | |
| 113 | if (len < 0 && name) |
| 114 | len = strlen(name); |
| 115 | |
| 116 | init_checksum_choices(); |
| 117 | |
| 118 | if (!name || (len == 4 && strncasecmp(name, "auto", 4) == 0)) { |
| 119 | if (protocol_version >= 30) { |
| 120 | if (!proper_seed_order) |
| 121 | return &implied_checksum_md5; |
| 122 | name = "md5"; |
| 123 | len = 3; |
| 124 | } else { |
| 125 | if (protocol_version >= 27) |
| 126 | implied_checksum_md4.num = CSUM_MD4_OLD; |
| 127 | else if (protocol_version >= 21) |
| 128 | implied_checksum_md4.num = CSUM_MD4_BUSTED; |
| 129 | else |
| 130 | implied_checksum_md4.num = CSUM_MD4_ARCHAIC; |
| 131 | return &implied_checksum_md4; |
| 132 | } |
| 133 | } |
| 134 | |
| 135 | nni = get_nni_by_name(&valid_checksums, name, len); |
| 136 | |
| 137 | if (!nni) { |
| 138 | rprintf(FERROR, "unknown checksum name: %s\n", name); |
| 139 | exit_cleanup(RERR_UNSUPPORTED); |
| 140 | } |
| 141 | |
| 142 | return nni; |
| 143 | } |
| 144 | |
| 145 | #ifdef USE_OPENSSL |
| 146 | static const EVP_MD *csum_evp_md(struct name_num_item *nni) |
no test coverage detected