diff --git a/rr.c b/rr.c index c7ab12e..1698c0a 100644 --- a/rr.c +++ b/rr.c @@ -874,6 +874,8 @@ int extract_algorithm(char **s, char *what) return ALG_ED25519; if (strcmp(str_alg, "ed448") == 0) return ALG_ED448; + if (strcmp(str_alg, "xmss") == 0) + return ALG_XMSS; if (strcmp(str_alg, "privatedns") == 0) return ALG_PRIVATEDNS; @@ -909,6 +911,8 @@ int algorithm_type(int alg) return ALG_ECC_FAMILY; case ALG_ED448: return ALG_ECC_FAMILY; + case ALG_XMSS: + return ALG_XMSS_FAMILY; case ALG_PRIVATEDNS: return ALG_PRIVATE_FAMILY; case ALG_PRIVATEOID: diff --git a/rr.h b/rr.h index a2d39b2..fdc556d 100644 --- a/rr.h +++ b/rr.h @@ -76,6 +76,7 @@ #define ALG_RSA_FAMILY 2 #define ALG_PRIVATE_FAMILY 3 #define ALG_ECC_FAMILY 4 +#define ALG_XMSS_FAMILY 5 #define RRCAST(t) struct rr_ ## t *rr = (struct rr_ ## t *)rrv diff --git a/sshfp.c b/sshfp.c index 67fe236..92c588f 100644 --- a/sshfp.c +++ b/sshfp.c @@ -24,7 +24,7 @@ static struct rr* sshfp_parse(char *name, long ttl, int type, char *s) algorithm = extract_integer(&s, "algorithm", NULL); if (algorithm < 0) return NULL; - if (algorithm != 1 && algorithm != 2 && algorithm != 3 && algorithm != 4) + if (algorithm != 1 && algorithm != 2 && algorithm != 3 && algorithm != 4 && algorithm != 5 ) return bitch("unsupported algorithm"); rr->algorithm = algorithm;