/* * Search auth_alg_names for a match, eg: * "md5" <=> "AUTH_ALGORITHM_HMAC_MD5" */ static int aalg_getbyname_esp(const char *const str, int len) { int ret=-1; unsigned num; if (!str||!*str) { goto out; } ret=alg_enum_search_prefix(&auth_alg_names,"AUTH_ALGORITHM_HMAC_",str,len); if (ret>=0) { goto out; } ret=alg_enum_search_prefix(&auth_alg_names,"AUTH_ALGORITHM_",str,len); if (ret>=0) { goto out; } /* Special value for no authentication since zero is already used. */ ret = INT_MAX; if (!strncasecmp(str, "null", len)) { goto out; } sscanf(str, "id%d%n", &ret, &num); if (ret >=0 && num!=strlen(str)) { ret=-1; } out: return ret; }
static int modp_getbyname_esp(const char *const str, int len) { int ret=-1; if (!str||!*str) goto out; ret=alg_enum_search_prefix(&oakley_group_names,"OAKLEY_GROUP_",str,len); if (ret>=0) goto out; ret=alg_enum_search_ppfix(&oakley_group_names, "OAKLEY_GROUP_", " (extension)", str, len); out: return ret; }
/** * Search oakley_enc_names for a match, eg: * "3des_cbc" <=> "OAKLEY_3DES_CBC" * * @param str String containing ALG name (eg: AES, 3DES) * @param len Length of ALG (eg: 256,512) * @return int Registered # of ALG if loaded. */ static int ealg_getbyname_ike(const char *const str, int len) { int ret=-1; if (!str||!*str) goto out; ret=alg_enum_search_prefix(&oakley_enc_names,"OAKLEY_",str,len); if (ret>=0) goto out; ret=alg_enum_search_ppfix(&oakley_enc_names, "OAKLEY_", "_CBC", str, len); out: return ret; }
static int ealg_getbyname_esp(const char *const str, int len) { int ret=-1; if (!str||!*str) goto out; /* leave special case for eg: "id248" string */ if (strcmp("id", str)==0) return ESP_MAGIC_ID; ret=alg_enum_search_prefix(&esp_transformid_names, "ESP_", str, len); out: return ret; }
/** * Search oakley_hash_names for a match, eg: * "md5" <=> "OAKLEY_MD5" * @param str String containing Hash name (eg: MD5, SHA1) * @param len Length of Hash (eg: 256,512) * @return int Registered # of Hash ALG if loaded. */ static int aalg_getbyname_ike(const char *const str, int len) { int ret=-1; unsigned num; if (!str||!*str) goto out; ret=alg_enum_search_prefix(&oakley_hash_names,"OAKLEY_",str,len); if (ret>=0) goto out; sscanf(str, "id%d%n", &ret, &num); if (ret >=0 && num!=strlen(str)) ret=-1; out: return ret; }