From 5dcad73d29bb431c7ae4529cc3755b56edbbb402 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 27 Dec 2022 09:05:45 +0100 Subject: [PATCH] -prepare for AML staff PKI --- src/exchangedb/0003-aml_history.sql | 13 +++++++--- src/exchangedb/0003-aml_staff.sql | 37 +++++++++++++++++++++++++++++ src/exchangedb/exchange-0003.sql.in | 2 ++ 3 files changed, 49 insertions(+), 3 deletions(-) create mode 100644 src/exchangedb/0003-aml_staff.sql diff --git a/src/exchangedb/0003-aml_history.sql b/src/exchangedb/0003-aml_history.sql index 60382cc26..2d6298ed8 100644 --- a/src/exchangedb/0003-aml_history.sql +++ b/src/exchangedb/0003-aml_history.sql @@ -32,7 +32,8 @@ BEGIN ',new_status INT4 NOT NULL DEFAULT(0)' ',decision_time INT8 NOT NULL DEFAULT(0)' ',justification VARCHAR NOT NULL' - ',decider VARCHAR NOT NULL' + ',decider_pub BYTEA PRIMARY KEY CHECK (LENGTH(decider_pub)=32)' + ',decider_sig BYTEA PRIMARY KEY CHECK (LENGTH(decider_sig)=64)' ') %s ;' ,table_name ,'PARTITION BY HASH (h_payto)' @@ -74,8 +75,14 @@ BEGIN ,partition_suffix ); PERFORM comment_partitioned_column( - 'Name of the staff member who made the AML decision' - ,'decider' + 'Public key of the staff member who made the AML decision' + ,'decider_pub' + ,table_name + ,partition_suffix + ); + PERFORM comment_partitioned_column( + 'Signature key of the staff member affirming the AML decision; of type AML_DECISION' + ,'decider_sig' ,table_name ,partition_suffix ); diff --git a/src/exchangedb/0003-aml_staff.sql b/src/exchangedb/0003-aml_staff.sql new file mode 100644 index 000000000..3c538df1d --- /dev/null +++ b/src/exchangedb/0003-aml_staff.sql @@ -0,0 +1,37 @@ +-- +-- This file is part of TALER +-- Copyright (C) 2014--2022 Taler Systems SA +-- +-- TALER is free software; you can redistribute it and/or modify it under the +-- terms of the GNU General Public License as published by the Free Software +-- Foundation; either version 3, or (at your option) any later version. +-- +-- TALER is distributed in the hope that it will be useful, but WITHOUT ANY +-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +-- A PARTICULAR PURPOSE. See the GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License along with +-- TALER; see the file COPYING. If not, see +-- + + +CREATE TABLE aml_staff + (aml_staff_uuid BIGINT GENERATED BY DEFAULT AS IDENTITY UNIQUE + ,decider_pub BYTEA PRIMARY KEY CHECK (LENGTH(decider_pub)=32) + ,master_sig BYTEA PRIMARY KEY CHECK (LENGTH(master_sig)=64) + ,decider_name VARCHAR NOT NULL + ,is_active BOOLEAN NOT NULL + ,last_change INT8 NOT NULL + ); +COMMENT ON TABLE aml_staff + IS 'Table with AML staff members the exchange uses or has used in the past. Entries never expire as we need to remember the last_change column indefinitely.'; +COMMENT ON COLUMN aml_staff.decider_pub + IS 'Public key of the AML staff member.'; +COMMENT ON COLUMN aml_staff.master_sig + IS 'The master public key signature on the AML staff member status.'; +COMMENT ON COLUMN aml_staff.decider_name + IS 'Name of the staff member.'; +COMMENT ON COLUMN aml_staff.is_active + IS 'true if we are currently supporting the use of this AML staff member.'; +COMMENT ON COLUMN aml_staff.last_change + IS 'Latest time when active status changed. Used to detect replays of old messages.'; diff --git a/src/exchangedb/exchange-0003.sql.in b/src/exchangedb/exchange-0003.sql.in index 59f79968e..5461c0dd3 100644 --- a/src/exchangedb/exchange-0003.sql.in +++ b/src/exchangedb/exchange-0003.sql.in @@ -23,6 +23,8 @@ SET search_path TO exchange; #include "0003-purse_deletion.sql" #include "0003-kyc_attributes.sql" #include "0003-aml_status.sql" +#include "0003-aml_staff.sql" #include "0003-aml_history.sql" + COMMIT;