context("reference")
## In order to ensure backward compatibility we need to be able to
## read reference examples from previous versions of cyphr.
## Periodically we will create a new reference and ensure that it can
## be read in. The most important part is the byte packing; there are
## 3 ways that we do that (sodium, openssl symmetric and openssl
## asymmetric), plus a little around how the data directory approach
## is structured.
## The data are generated by `make-reference.R` and stored in the
## reference directory under version number.
test_that("compatibility with 1.0.0", {
skip_on_cran()
path <- unzip_reference("reference/1.0.0.zip")
path_cypher <- file.path(path, "cypher")
cleartext <- readLines(file.path(path, "cleartext"))
path_openssl_alice <- file.path(path, "openssl", "alice")
path_openssl_bob <- file.path(path, "openssl", "bob")
path_data <- file.path(path, "data")
key_openssl_sym <- readRDS(file.path(path, "openssl", "sym.key"))
key_sodium_sym <- read_binary(file.path(path, "sodium", "sym.key"))
key_sodium_alice <- read_binary(file.path(path, "sodium", "alice.key"))
pub_sodium_alice <- read_binary(file.path(path, "sodium", "alice.pub"))
key_sodium_bob <- read_binary(file.path(path, "sodium", "bob.key"))
pub_sodium_bob <- read_binary(file.path(path, "sodium", "bob.pub"))
expect_identical(
decrypt_string(file.path(path_cypher, "sodium_sym"),
key_sodium(key_sodium_sym)),
cleartext)
expect_identical(
decrypt_string(file.path(path_cypher, "openssl_sym"),
key_openssl(key_openssl_sym)),
cleartext)
pair_bob <- keypair_sodium(pub_sodium_alice, key_sodium_bob)
expect_identical(
decrypt_string(file.path(path_cypher, "sodium_asym_alice"), pair_bob),
cleartext)
pair_bob <- keypair_openssl(path_openssl_alice, path_openssl_bob)
expect_identical(
decrypt_string(file.path(path_cypher, "openssl_asym_alice"), pair_bob),
cleartext)
expect_warning(
data_key <- data_key(path_data, path_openssl_alice),
"Your cyphr schema version is out of date")
filename <- file.path(path_data, "secret.txt")
expect_identical(decrypt(readLines(filename), data_key), cleartext)
})
test_that("compatibility with 1.1.0", {
skip_on_cran()
path <- unzip_reference("reference/1.1.0.zip")
path_cypher <- file.path(path, "cypher")
cleartext <- readLines(file.path(path, "cleartext"))
path_openssl_alice <- file.path(path, "openssl", "alice")
path_openssl_bob <- file.path(path, "openssl", "bob")
path_data <- file.path(path, "data")
key_openssl_sym <- readRDS(file.path(path, "openssl", "sym.key"))
key_sodium_sym <- read_binary(file.path(path, "sodium", "sym.key"))
key_sodium_alice <- read_binary(file.path(path, "sodium", "alice.key"))
pub_sodium_alice <- read_binary(file.path(path, "sodium", "alice.pub"))
key_sodium_bob <- read_binary(file.path(path, "sodium", "bob.key"))
pub_sodium_bob <- read_binary(file.path(path, "sodium", "bob.pub"))
expect_identical(
decrypt_string(file.path(path_cypher, "sodium_sym"),
key_sodium(key_sodium_sym)),
cleartext)
expect_identical(
decrypt_string(file.path(path_cypher, "openssl_sym"),
key_openssl(key_openssl_sym)),
cleartext)
pair_bob <- keypair_sodium(pub_sodium_alice, key_sodium_bob)
expect_identical(
decrypt_string(file.path(path_cypher, "sodium_asym_alice"), pair_bob),
cleartext)
pair_bob <- keypair_openssl(path_openssl_alice, path_openssl_bob)
expect_identical(
decrypt_string(file.path(path_cypher, "openssl_asym_alice"), pair_bob),
cleartext)
data_key <- data_key(path_data, path_openssl_alice)
filename <- file.path(path_data, "secret.txt")
expect_identical(decrypt(readLines(filename), data_key), cleartext)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.