// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // Copyright by contributors to this project. // SPDX-License-Identifier: (Apache-2.0 OR MIT)
usecrate::connection_strategy::ConnectionStrategy; usecrate::SqLiteDataStorageError; use rusqlite::Connection;
use hex::ToHex; use zeroize::{ZeroizeOnDrop, Zeroizing};
#[allow(dead_code)] #[derive(Debug, ZeroizeOnDrop, Clone)] /// Representation of a SQLCipher key used to unlock a database. pubenum SqlCipherKey { /// Passphrase based key.
Passphrase(String), /// Raw key material without a salt value.
RawKey([u8; 32]), /// Raw key material with a salt value.
RawKeyWithSalt([u8; 48]),
}
impl SqlCipherConfig { /// Create a new config with a specific key. pubfn new(key: SqlCipherKey) -> SqlCipherConfig {
SqlCipherConfig {
key,
plaintext_header_size: 0,
}
}
// Verify that the database is keyed correctly
connection
.query_row("SELECT count(*) FROM sqlite_master", [], |_| Ok(()))
.map_err(|e| SqLiteDataStorageError::SqlEngineError(e.into()))?;
Ok(connection)
}
}
#[cfg(test)] mod tests { use assert_matches::assert_matches; use tempfile::NamedTempFile;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.