/* Copyright (C) 2017-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk4mdch.ctr */ /** @file dk4mdch.c The dk4mdch module. */ #line 8 "dk4mdch.ctr" #include "dk4conf.h" #include "dk4md.h" #include "dk4strd.h" #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif #line 22 "dk4mdch.ctr" /** Message digest type names. Order must match the definition order in the enum in dk4md.h. */ static const dkChar * const dk4md_type_names[] = { /* 0 */ dkT("md5"), /* 1 */ dkT("sha-1"), /* 2 */ dkT("sha-224"), /* 3 */ dkT("sha-256"), /* 4 */ dkT("sha-384"), /* 5 */ dkT("sha-512"), /* 6 */ dkT("ripemd-160"), /* 7 */ dkT("sha1"), /* 8 */ dkT("sha224"), /* 9 */ dkT("sha256"), /* 10 */ dkT("sha384"), /* 11 */ dkT("sha512"), /* 12 */ dkT("ripemd160"), NULL #line 44 "dk4mdch.ctr" }; int dk4md_choose_type(const dkChar *name, dk4_er_t *erp) { int back = -1; #if DK4_USE_ASSERT assert(NULL != name); #endif if (NULL != name) { switch (dk4str_array_index(dk4md_type_names, name, 0)) { case 0: { back = DK4_MD_MD5; } break; case 1: case 7: { back = DK4_MD_SHA1; } break; case 2: case 8: { back = DK4_MD_SHA224; } break; case 3: case 9: { back = DK4_MD_SHA256; } break; case 4: case 10: { back = DK4_MD_SHA384; } break; case 5: case 11: { back = DK4_MD_SHA512; } break; case 6: case 12: { back = DK4_MD_RIPEMD_160; } break; } if (-1 == back) { dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; } int dk4md_check_type(int mdtype) { int back = 0; switch (mdtype) { case DK4_MD_MD5 : { #if DK4_HAVE_OPENSSL_MD5_H back = 1; #endif } break; case DK4_MD_SHA1 : { #if DK4_HAVE_OPENSSL_SHA_H back = 1; #endif } break; case DK4_MD_SHA224 : { #if DK4_HAVE_OPENSSL_SHA_H && DK4_HAVE_SHA224 back = 1; #endif } break; case DK4_MD_SHA256 : { #if DK4_HAVE_OPENSSL_SHA_H && DK4_HAVE_SHA256 back = 1; #endif } break; case DK4_MD_SHA384 : { #if DK4_HAVE_OPENSSL_SHA_H && DK4_HAVE_SHA384 back = 1; #endif } break; case DK4_MD_SHA512 : { #if DK4_HAVE_OPENSSL_SHA_H && DK4_HAVE_SHA512 back = 1; #endif } break; case DK4_MD_RIPEMD_160 : { #if DK4_HAVE_OPENSSL_RIPEMD_H back = 1; #endif } break; } return back; }