/* * Copyright (C) 2012 KU Leuven * * Author: Nikos Mavrogiannopoulos * * This file is part of libdane. * * The libdane library is free software; you can redistribute it * and/or modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see * */ #include #include #include #include #include #include #include #include #include #include typedef struct cert_type_entry { const char *name; dane_cert_type_t type; } cert_type_entry; static const cert_type_entry dane_cert_types[] = { {"X.509", DANE_CERT_X509}, {"SubjectPublicKeyInfo", DANE_CERT_PK}, {NULL, 0} }; typedef struct match_type_entry { const char *name; dane_match_type_t type; } match_type_entry; static const match_type_entry dane_match_types[] = { {"Exact match", DANE_MATCH_EXACT}, {"SHA2-256 hash", DANE_MATCH_SHA2_256}, {"SHA2-512 hash", DANE_MATCH_SHA2_512}, {NULL, 0} }; typedef struct cert_usage_entry { const char *name; dane_cert_usage_t usage; } cert_usage_entry; static const cert_usage_entry dane_cert_usages[] = { {"CA", DANE_CERT_USAGE_CA}, {"End-entity", DANE_CERT_USAGE_EE}, {"Local CA", DANE_CERT_USAGE_LOCAL_CA}, {"Local end-entity", DANE_CERT_USAGE_LOCAL_EE}, {NULL, 0} }; /** * dane_cert_type_name: * @type: is a DANE match type * * Convert a #dane_cert_type_t value to a string. * * Returns: a string that contains the name of the specified * type, or %NULL. **/ const char *dane_cert_type_name(dane_cert_type_t type) { const cert_type_entry *e = dane_cert_types; while (e->name != NULL) { if (e->type == type) return e->name; e++; } return NULL; } /** * dane_match_type_name: * @type: is a DANE match type * * Convert a #dane_match_type_t value to a string. * * Returns: a string that contains the name of the specified * type, or %NULL. **/ const char *dane_match_type_name(dane_match_type_t type) { const match_type_entry *e = dane_match_types; while (e->name != NULL) { if (e->type == type) return e->name; e++; } return NULL; } /** * dane_cert_usage_name: * @usage: is a DANE certificate usage * * Convert a #dane_cert_usage_t value to a string. * * Returns: a string that contains the name of the specified * type, or %NULL. **/ const char *dane_cert_usage_name(dane_cert_usage_t usage) { const cert_usage_entry *e = dane_cert_usages; while (e->name != NULL) { if (e->usage == usage) return e->name; e++; } return NULL; }