Line data Source code
1 : /* 2 : This file is part of TALER 3 : Copyright (C) 2024 Taler Systems SA 4 : 5 : TALER is free software; you can redistribute it and/or modify it under the 6 : terms of the GNU General Public License as published by the Free Software 7 : Foundation; either version 3, or (at your option) any later version. 8 : 9 : TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 : WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 : A PARTICULAR PURPOSE. See the GNU General Public License for more details. 12 : 13 : You should have received a copy of the GNU General Public License along with 14 : TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 : */ 16 : /** 17 : * @file kyc_signatures.c 18 : * @brief Utility functions for KYC account holders 19 : * @author Christian Grothoff 20 : */ 21 : #include "platform.h" 22 : #include "taler_util.h" 23 : #include "taler_signatures.h" 24 : 25 : 26 : GNUNET_NETWORK_STRUCT_BEGIN 27 : 28 : /** 29 : * @brief Format used to generate the signature on a 30 : * KYC authorization. 31 : */ 32 : struct TALER_KycQueryPS 33 : { 34 : /** 35 : * Purpose must be #TALER_SIGNATURE_KYC_AUTH. 36 : * Used for an EdDSA signature with the `union TALER_AccountPublicKeyP`. 37 : */ 38 : struct GNUNET_CRYPTO_EccSignaturePurpose purpose; 39 : 40 : }; 41 : 42 : GNUNET_NETWORK_STRUCT_END 43 : 44 : 45 : void 46 16 : TALER_account_kyc_auth_sign ( 47 : const union TALER_AccountPrivateKeyP *account_priv, 48 : union TALER_AccountSignatureP *account_sig) 49 : { 50 16 : struct TALER_KycQueryPS aq = { 51 16 : .purpose.purpose = htonl (TALER_SIGNATURE_KYC_AUTH), 52 16 : .purpose.size = htonl (sizeof (aq)) 53 : }; 54 : 55 16 : GNUNET_CRYPTO_eddsa_sign ( 56 : &account_priv->reserve_priv.eddsa_priv, 57 : &aq, 58 : &account_sig->reserve_sig.eddsa_signature); 59 16 : } 60 : 61 : 62 : enum GNUNET_GenericReturnValue 63 14 : TALER_account_kyc_auth_verify ( 64 : const union TALER_AccountPublicKeyP *account_pub, 65 : const union TALER_AccountSignatureP *account_sig) 66 : { 67 14 : struct TALER_KycQueryPS aq = { 68 14 : .purpose.purpose = htonl (TALER_SIGNATURE_KYC_AUTH), 69 14 : .purpose.size = htonl (sizeof (aq)) 70 : }; 71 : 72 14 : return GNUNET_CRYPTO_eddsa_verify ( 73 : TALER_SIGNATURE_KYC_AUTH, 74 : &aq, 75 : &account_sig->reserve_sig.eddsa_signature, 76 : &account_pub->reserve_pub.eddsa_pub); 77 : } 78 : 79 : 80 : /* end of kyc_signatures.c */