EbicsConstants.kt (4024B)
1 /* 2 * This file is part of LibEuFin. 3 * Copyright (C) 2024 Taler Systems S.A. 4 5 * LibEuFin is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU Affero General Public License as 7 * published by the Free Software Foundation; either version 3, or 8 * (at your option) any later version. 9 10 * LibEuFin is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General 13 * Public License for more details. 14 15 * You should have received a copy of the GNU Affero General Public 16 * License along with LibEuFin; see the file COPYING. If not, see 17 * <http://www.gnu.org/licenses/> 18 */ 19 20 package tech.libeufin.ebics 21 22 23 // TODO import missing using a script 24 @Suppress("SpellCheckingInspection") 25 enum class EbicsReturnCode(val code: String) { 26 EBICS_OK("000000"), 27 EBICS_DOWNLOAD_POSTPROCESS_DONE("011000"), 28 EBICS_DOWNLOAD_POSTPROCESS_SKIPPED("011001"), 29 EBICS_TX_SEGMENT_NUMBER_UNDERRUN("011101"), 30 EBICS_AUTHENTICATION_FAILED("061001"), 31 EBICS_INVALID_REQUEST("061002"), 32 EBICS_INTERNAL_ERROR("061099"), 33 EBICS_TX_RECOVERY_SYNC("061101"), 34 EBICS_AUTHORISATION_ORDER_IDENTIFIER_FAILED("090003"), 35 EBICS_INVALID_ORDER_DATA_FORMAT("090004"), 36 EBICS_NO_DOWNLOAD_DATA_AVAILABLE("090005"), 37 38 // Transaction administration 39 EBICS_INVALID_USER_OR_USER_STATE("091002"), 40 EBICS_USER_UNKNOWN("091003"), 41 EBICS_INVALID_USER_STATE("091004"), 42 EBICS_INVALID_ORDER_IDENTIFIER("091005"), 43 EBICS_UNSUPPORTED_ORDER_TYPE("091006"), 44 EBICS_INVALID_XML("091010"), 45 EBICS_TX_UNKNOWN_TXID("091101"), 46 EBICS_TX_ABORT("091102"), 47 EBICS_TX_MESSAGE_REPLAY("091102"), 48 EBICS_TX_SEGMENT_NUMBER_EXCEEDED("091104"), 49 EBICS_INVALID_ORDER_PARAMS("091112"), 50 EBICS_INVALID_REQUEST_CONTENT("091113"), 51 EBICS_ORDERID_UNKNOWN("091114"), 52 EBICS_ORDERID_ALREADY_FINAL("091115"), 53 EBICS_PROCESSING_ERROR("091116"), 54 EBICS_ORDER_ALREADY_EXISTS("091122"), 55 56 // Key-Management errors 57 EBICS_KEYMGMT_UNSUPPORTED_VERSION_SIGNATURE("091201"), 58 EBICS_KEYMGMT_UNSUPPORTED_VERSION_AUTHENTICATION("091202"), 59 EBICS_KEYMGMT_UNSUPPORTED_VERSION_ENCRYPTION("091203"), 60 EBICS_KEYMGMT_KEYLENGTH_ERROR_SIGNATURE("091204"), 61 EBICS_KEYMGMT_KEYLENGTH_ERROR_AUTHENTICATION("091205"), 62 EBICS_KEYMGMT_KEYLENGTH_ERROR_ENCRYPTION("091206"), 63 EBICS_X509_CERTIFICATE_EXPIRED("091208"), 64 EBICS_X509_CERTIFICATE_NOT_VALID_YET("091209"), 65 EBICS_X509_WRONG_KEY_USAGE("091210"), 66 EBICS_X509_WRONG_ALGORITHM("091211"), 67 EBICS_X509_INVALID_THUMBPRINT("091212"), 68 EBICS_X509_CTL_INVALID("091213"), 69 EBICS_X509_UNKNOWN_CERTIFICATE_AUTHORITY("091214"), 70 EBICS_X509_INVALID_POLICY("091215"), 71 EBICS_X509_INVALID_BASIC_CONSTRAINTS("091216"), 72 EBICS_ONLY_X509_SUPPORT("091217"), 73 EBICS_KEYMGMT_DUPLICATE_KEY("091218"), 74 EBICS_CERTIFICATE_VALIDATION_ERROR("091219"), 75 76 // Pre-erification errors 77 EBICS_SIGNATURE_VERIFICATION_FAILED("091301"), 78 EBICS_ACCOUNT_AUTHORISATION_FAILED("091302"), 79 EBICS_AMOUNT_CHECK_FAILED("091303"), 80 EBICS_SIGNER_UNKNOWN("091304"), 81 EBICS_INVALID_SIGNER_STATE("091305"), 82 EBICS_DUPLICATE_SIGNATURE("091306"); 83 84 enum class Kind { 85 Information, 86 Note, 87 Warning, 88 Error 89 } 90 91 fun kind(): Kind { 92 return when (val errorClass = code.substring(0..1)) { 93 "00" -> Kind.Information 94 "01" -> Kind.Note 95 "03" -> Kind.Warning 96 "06", "09" -> Kind.Error 97 else -> throw Exception("Unknown EBICS status code error class: $errorClass") 98 } 99 } 100 101 companion object { 102 fun lookup(code: String): EbicsReturnCode { 103 for (x in entries) { 104 if (x.code == code) { 105 return x 106 } 107 } 108 throw Exception( 109 "Unknown EBICS status code: $code" 110 ) 111 } 112 } 113 }