1/* $NetBSD: dst_result.c,v 1.1 2024/02/18 20:57:31 christos Exp $ */ 2 3/* 4 * Copyright (C) Internet Systems Consortium, Inc. ("ISC") 5 * 6 * SPDX-License-Identifier: MPL-2.0 7 * 8 * This Source Code Form is subject to the terms of the Mozilla Public 9 * License, v. 2.0. If a copy of the MPL was not distributed with this 10 * file, you can obtain one at https://mozilla.org/MPL/2.0/. 11 * 12 * See the COPYRIGHT file distributed with this work for additional 13 * information regarding copyright ownership. 14 */ 15 16#include <isc/once.h> 17#include <isc/util.h> 18 19#include <dst/result.h> 20 21static const char *text[DST_R_NRESULTS] = { 22 "algorithm is unsupported", /*%< 0 */ 23 "crypto failure", /*%< 1 */ 24 "built with no crypto support", /*%< 2 */ 25 "illegal operation for a null key", /*%< 3 */ 26 "public key is invalid", /*%< 4 */ 27 "private key is invalid", /*%< 5 */ 28 "external key", /*%< 6 */ 29 "error occurred writing key to disk", /*%< 7 */ 30 "invalid algorithm specific parameter", /*%< 8 */ 31 "UNUSED9", /*%< 9 */ 32 "UNUSED10", /*%< 10 */ 33 "sign failure", /*%< 11 */ 34 "UNUSED12", /*%< 12 */ 35 "UNUSED13", /*%< 13 */ 36 "verify failure", /*%< 14 */ 37 "not a public key", /*%< 15 */ 38 "not a private key", /*%< 16 */ 39 "not a key that can compute a secret", /*%< 17 */ 40 "failure computing a shared secret", /*%< 18 */ 41 "no randomness available", /*%< 19 */ 42 "bad key type", /*%< 20 */ 43 "no engine", /*%< 21 */ 44 "illegal operation for an external key", /*%< 22 */ 45}; 46 47static const char *ids[DST_R_NRESULTS] = { 48 "DST_R_UNSUPPORTEDALG", 49 "DST_R_CRYPTOFAILURE", 50 "DST_R_NOCRYPTO", 51 "DST_R_NULLKEY", 52 "DST_R_INVALIDPUBLICKEY", 53 "DST_R_INVALIDPRIVATEKEY", 54 "UNUSED", 55 "DST_R_WRITEERROR", 56 "DST_R_INVALIDPARAM", 57 "UNUSED", 58 "UNUSED", 59 "DST_R_SIGNFAILURE", 60 "UNUSED", 61 "UNUSED", 62 "DST_R_VERIFYFAILURE", 63 "DST_R_NOTPUBLICKEY", 64 "DST_R_NOTPRIVATEKEY", 65 "DST_R_KEYCANNOTCOMPUTESECRET", 66 "DST_R_COMPUTESECRETFAILURE", 67 "DST_R_NORANDOMNESS", 68 "DST_R_BADKEYTYPE", 69 "DST_R_NOENGINE", 70 "DST_R_EXTERNALKEY", 71}; 72 73#define DST_RESULT_RESULTSET 2 74 75static isc_once_t once = ISC_ONCE_INIT; 76 77static void 78initialize_action(void) { 79 isc_result_t result; 80 81 result = isc_result_register(ISC_RESULTCLASS_DST, DST_R_NRESULTS, text, 82 DST_RESULT_RESULTSET); 83 if (result != ISC_R_SUCCESS) { 84 UNEXPECTED_ERROR(__FILE__, __LINE__, 85 "isc_result_register() failed: %u", result); 86 } 87 result = isc_result_registerids(ISC_RESULTCLASS_DST, DST_R_NRESULTS, 88 ids, DST_RESULT_RESULTSET); 89 if (result != ISC_R_SUCCESS) { 90 UNEXPECTED_ERROR(__FILE__, __LINE__, 91 "isc_result_registerids() failed: %u", result); 92 } 93} 94 95static void 96initialize(void) { 97 RUNTIME_CHECK(isc_once_do(&once, initialize_action) == ISC_R_SUCCESS); 98} 99 100const char * 101dst_result_totext(isc_result_t result) { 102 initialize(); 103 104 return (isc_result_totext(result)); 105} 106 107void 108dst_result_register(void) { 109 initialize(); 110} 111 112/*! \file */ 113