diff options
Diffstat (limited to 'schema.sql')
-rw-r--r-- | schema.sql | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/schema.sql b/schema.sql deleted file mode 100644 index c79b3c0..0000000 --- a/schema.sql +++ /dev/null @@ -1,119 +0,0 @@ --- SQLite3 schema for Cryptech PKCS #11 implementation. --- --- Author: Rob Austein --- Copyright (c) 2015-2016, NORDUnet A/S --- All rights reserved. --- --- Redistribution and use in source and binary forms, with or without --- modification, are permitted provided that the following conditions are --- met: --- - Redistributions of source code must retain the above copyright notice, --- this list of conditions and the following disclaimer. --- --- - Redistributions in binary form must reproduce the above copyright --- notice, this list of conditions and the following disclaimer in the --- documentation and/or other materials provided with the distribution. --- --- - Neither the name of the NORDUnet nor the names of its contributors may --- be used to endorse or promote products derived from this software --- without specific prior written permission. --- --- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS --- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED --- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A --- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT --- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, --- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR --- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF --- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING --- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS --- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --- Notes: --- --- The CHECK constraints in the attribute tables are checking --- CKA_TOKEN, to make sure we don't accidently file token objects in --- the session table or vice versa. --- --- temp.object.token_object_id is a foreign-key reference to --- main.token_object.id, but we can't use a real foreign key reference --- because they're in different databases. If we're careful about how --- we do our joins, this is harmless, but may lead to some clutter if --- a long running session has handles on token objects which some --- other process deletes from the database. If this happens and we --- care for some reason, we can clean up such clutter with something --- like: --- --- WITH --- known AS (SELECT token_object_id FROM token_object) --- DELETE FROM object --- WHERE token_object_id IS NOT NULL --- AND token_object_id NOT IN known; - -PRAGMA foreign_keys = ON; - -CREATE TEMPORARY TABLE IF NOT EXISTS session ( - session_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - session_handle INTEGER NOT NULL UNIQUE - CHECK (session_handle > 0 AND session_handle <= 0xFFFFFFFF) -); - -CREATE TEMPORARY TABLE IF NOT EXISTS object ( - object_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - object_handle INTEGER NOT NULL UNIQUE - CHECK (object_handle > 0 AND object_handle <= 0xFFFFFFFF), - session_id INTEGER REFERENCES session - ON DELETE CASCADE ON UPDATE CASCADE - DEFERRABLE INITIALLY DEFERRED, - token_object_id INTEGER, - session_object_id INTEGER REFERENCES session_object - ON DELETE CASCADE ON UPDATE CASCADE - DEFERRABLE INITIALLY DEFERRED, - CHECK (token_object_id IS NULL OR (session_id IS NULL AND session_object_id IS NULL)), - UNIQUE (token_object_id), - UNIQUE (session_id, session_object_id) -); - -CREATE TEMPORARY TABLE IF NOT EXISTS session_object ( - session_object_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - hal_pkey_uuid BLOB, - object_id INTEGER NOT NULL UNIQUE - REFERENCES object - ON DELETE CASCADE ON UPDATE CASCADE -); - -CREATE TEMPORARY TABLE IF NOT EXISTS session_attribute ( - type INTEGER NOT NULL, - session_object_id INTEGER NOT NULL REFERENCES session_object - ON DELETE CASCADE ON UPDATE CASCADE, - value BLOB NOT NULL, - UNIQUE (type, session_object_id), - CHECK (type <> 1 OR value = X'00') -); - -CREATE TABLE IF NOT EXISTS token_object ( - token_object_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, - hal_pkey_uuid BLOB -); - -CREATE TABLE IF NOT EXISTS token_attribute ( - type INTEGER NOT NULL, - token_object_id INTEGER NOT NULL REFERENCES token_object - ON DELETE CASCADE ON UPDATE CASCADE, - value BLOB NOT NULL, - UNIQUE (type, token_object_id), - CHECK (type <> 1 OR value <> X'00') -); - --- http://sqlite.org/foreignkeys.html says we might want these. - -CREATE INDEX IF NOT EXISTS temp.object__session ON object(session_id); -CREATE INDEX IF NOT EXISTS temp.object__session_object ON object(session_object_id); -CREATE INDEX IF NOT EXISTS temp.session_object__object ON session_object(object_id); -CREATE INDEX IF NOT EXISTS temp.session_attribute__session_object ON session_attribute(session_object_id); -CREATE INDEX IF NOT EXISTS token_attribute__token_object ON token_attribute(token_object_id); - --- Local variables: --- indent-tabs-mode: nil --- End: |