lookup_token_family_key.h (2958B)
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 src/include/merchant-database/lookup_token_family_key.h 18 * @brief implementation of the lookup_token_family_key function for Postgres 19 * @author Christian Blättler 20 */ 21 #ifndef MERCHANT_DATABASE_LOOKUP_TOKEN_FAMILY_KEY_H 22 #define MERCHANT_DATABASE_LOOKUP_TOKEN_FAMILY_KEY_H 23 24 #include <gnunet/gnunet_common.h> 25 #include <taler/taler_util.h> 26 #include <taler/taler_json_lib.h> 27 #include "merchantdb_lib.h" 28 29 30 /** 31 * Details about a token key. 32 */ 33 struct TALER_MERCHANTDB_TokenFamilyKeyDetails 34 { 35 /** 36 * Tokens signed with this key are valid from this date on. 37 * This is the time the key was created. 38 */ 39 struct GNUNET_TIME_Timestamp signature_validity_start; 40 41 /** 42 * Tokens signed with this key are valid until this date. 43 */ 44 struct GNUNET_TIME_Timestamp signature_validity_end; 45 46 /** 47 * Private key expires for use at this time. Signatures can 48 * only be created until this point. 49 */ 50 struct GNUNET_TIME_Timestamp private_key_deleted_at; 51 52 /** 53 * Token family public key. 54 */ 55 struct TALER_TokenIssuePublicKey pub; 56 57 /** 58 * Token family private key. 59 */ 60 struct TALER_TokenIssuePrivateKey priv; 61 62 /** 63 * Details about the token family this key belongs to. 64 */ 65 struct TALER_MERCHANTDB_TokenFamilyDetails token_family; 66 }; 67 68 69 /** 70 * Lookup details about a particular token family key. The valid_after field 71 * of the key has to be >= @e min_valid_after and < @e max_valid_after. 72 * 73 * @param pg database context 74 * @param instance_id instance to lookup token family key for 75 * @param token_family_slug slug of token family to lookup 76 * @param valid_at find a key with a validity period that includes this time 77 * @param sign_until find a private key that can sign until this time 78 * @param[out] details set to the token family key details on success, can be NULL 79 * (in that case we only want to check if the token family key exists) 80 * @return database result code 81 */ 82 enum GNUNET_DB_QueryStatus 83 TALER_MERCHANTDB_lookup_token_family_key ( 84 struct TALER_MERCHANTDB_PostgresContext *pg, 85 const char *instance_id, 86 const char *token_family_slug, 87 struct GNUNET_TIME_Timestamp valid_at, 88 struct GNUNET_TIME_Timestamp sign_until, 89 struct TALER_MERCHANTDB_TokenFamilyKeyDetails *details); 90 91 92 #endif