Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8aab4a2f81 | ||
|
|
f8acbddbd1 | ||
|
|
9a68c885f8 | ||
|
|
3ed40cb71d | ||
|
|
4b0b7e1575 | ||
|
|
b853fd604a | ||
|
|
7943f1860e | ||
|
|
57591d01a9 |
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
---
|
||||
Language: Cpp
|
||||
|
||||
2
.github/workflows/c-cpp.yml
vendored
2
.github/workflows/c-cpp.yml
vendored
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
name: C/C++ CI
|
||||
|
||||
|
||||
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@@ -1,3 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
# Tempfiles
|
||||
*~
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2022 stenc authors
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
stenc AUTHORS
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2022 stenc authors
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
-->
|
||||
|
||||
The Stenc team is looking forward to your contribution.
|
||||
|
||||
13
ChangeLog
13
ChangeLog
@@ -1,10 +1,17 @@
|
||||
xxxx-xx-xx
|
||||
* Version upgraded to 2.x.x
|
||||
* Removed KeyInfo; use standard library to parse hex strings
|
||||
2025-07-24 Jonas Stein <news@jonasstein.de>
|
||||
* Version upgraded to 2.0.1
|
||||
* Fix typo in configure. Superflous ]
|
||||
|
||||
2023-05-14 Jonas Stein <news@jonasstein.de>
|
||||
* Version upgraded to 2.0.0
|
||||
* define C++17 as minimal C++ version
|
||||
* build manpage with pandoc
|
||||
* Add license information according to the SPDX standard
|
||||
* Dropped AIX support. If you can test and develop code for AIX, please contact us.
|
||||
* Added bash completion
|
||||
* New syntax
|
||||
* Added missing includes
|
||||
* Special thanks to James Wilson, Paweł Marciniak, Christian Reiss and Alvaro Muñoz
|
||||
|
||||
2022-04-25 Jonas Stein <news@jonasstein.de>
|
||||
* Version upgraded to 1.1.1
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
SPDX-FileCopyrightText: 1994 Free Software Foundation, Inc.
|
||||
|
||||
SPDX-License-Identifier: FSFUL
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
121
LICENSES/CC0-1.0.txt
Normal file
121
LICENSES/CC0-1.0.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
Creative Commons Legal Code
|
||||
|
||||
CC0 1.0 Universal
|
||||
|
||||
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
|
||||
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
|
||||
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
|
||||
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
|
||||
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
|
||||
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
|
||||
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
|
||||
HEREUNDER.
|
||||
|
||||
Statement of Purpose
|
||||
|
||||
The laws of most jurisdictions throughout the world automatically confer
|
||||
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||
and subsequent owner(s) (each and all, an "owner") of an original work of
|
||||
authorship and/or a database (each, a "Work").
|
||||
|
||||
Certain owners wish to permanently relinquish those rights to a Work for
|
||||
the purpose of contributing to a commons of creative, cultural and
|
||||
scientific works ("Commons") that the public can reliably and without fear
|
||||
of later claims of infringement build upon, modify, incorporate in other
|
||||
works, reuse and redistribute as freely as possible in any form whatsoever
|
||||
and for any purposes, including without limitation commercial purposes.
|
||||
These owners may contribute to the Commons to promote the ideal of a free
|
||||
culture and the further production of creative, cultural and scientific
|
||||
works, or to gain reputation or greater distribution for their Work in
|
||||
part through the use and efforts of others.
|
||||
|
||||
For these and/or other purposes and motivations, and without any
|
||||
expectation of additional consideration or compensation, the person
|
||||
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
|
||||
is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||
elects to apply CC0 to the Work and publicly distribute the Work under its
|
||||
terms, with knowledge of his or her Copyright and Related Rights in the
|
||||
Work and the meaning and intended legal effect of CC0 on those rights.
|
||||
|
||||
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||
protected by copyright and related or neighboring rights ("Copyright and
|
||||
Related Rights"). Copyright and Related Rights include, but are not
|
||||
limited to, the following:
|
||||
|
||||
i. the right to reproduce, adapt, distribute, perform, display,
|
||||
communicate, and translate a Work;
|
||||
ii. moral rights retained by the original author(s) and/or performer(s);
|
||||
iii. publicity and privacy rights pertaining to a person's image or
|
||||
likeness depicted in a Work;
|
||||
iv. rights protecting against unfair competition in regards to a Work,
|
||||
subject to the limitations in paragraph 4(a), below;
|
||||
v. rights protecting the extraction, dissemination, use and reuse of data
|
||||
in a Work;
|
||||
vi. database rights (such as those arising under Directive 96/9/EC of the
|
||||
European Parliament and of the Council of 11 March 1996 on the legal
|
||||
protection of databases, and under any national implementation
|
||||
thereof, including any amended or successor version of such
|
||||
directive); and
|
||||
vii. other similar, equivalent or corresponding rights throughout the
|
||||
world based on applicable law or treaty, and any national
|
||||
implementations thereof.
|
||||
|
||||
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||
of action, whether now known or unknown (including existing as well as
|
||||
future claims and causes of action), in the Work (i) in all territories
|
||||
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||
treaty (including future time extensions), (iii) in any current or future
|
||||
medium and for any number of copies, and (iv) for any purpose whatsoever,
|
||||
including without limitation commercial, advertising or promotional
|
||||
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
|
||||
member of the public at large and to the detriment of Affirmer's heirs and
|
||||
successors, fully intending that such Waiver shall not be subject to
|
||||
revocation, rescission, cancellation, termination, or any other legal or
|
||||
equitable action to disrupt the quiet enjoyment of the Work by the public
|
||||
as contemplated by Affirmer's express Statement of Purpose.
|
||||
|
||||
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||
be judged legally invalid or ineffective under applicable law, then the
|
||||
Waiver shall be preserved to the maximum extent permitted taking into
|
||||
account Affirmer's express Statement of Purpose. In addition, to the
|
||||
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||
person a royalty-free, non transferable, non sublicensable, non exclusive,
|
||||
irrevocable and unconditional license to exercise Affirmer's Copyright and
|
||||
Related Rights in the Work (i) in all territories worldwide, (ii) for the
|
||||
maximum duration provided by applicable law or treaty (including future
|
||||
time extensions), (iii) in any current or future medium and for any number
|
||||
of copies, and (iv) for any purpose whatsoever, including without
|
||||
limitation commercial, advertising or promotional purposes (the
|
||||
"License"). The License shall be deemed effective as of the date CC0 was
|
||||
applied by Affirmer to the Work. Should any part of the License for any
|
||||
reason be judged legally invalid or ineffective under applicable law, such
|
||||
partial invalidity or ineffectiveness shall not invalidate the remainder
|
||||
of the License, and in such case Affirmer hereby affirms that he or she
|
||||
will not (i) exercise any of his or her remaining Copyright and Related
|
||||
Rights in the Work or (ii) assert any associated claims and causes of
|
||||
action with respect to the Work, in either case contrary to Affirmer's
|
||||
express Statement of Purpose.
|
||||
|
||||
4. Limitations and Disclaimers.
|
||||
|
||||
a. No trademark or patent rights held by Affirmer are waived, abandoned,
|
||||
surrendered, licensed or otherwise affected by this document.
|
||||
b. Affirmer offers the Work as-is and makes no representations or
|
||||
warranties of any kind concerning the Work, express, implied,
|
||||
statutory or otherwise, including without limitation warranties of
|
||||
title, merchantability, fitness for a particular purpose, non
|
||||
infringement, or the absence of latent or other defects, accuracy, or
|
||||
the present or absence of errors, whether or not discoverable, all to
|
||||
the greatest extent permissible under applicable law.
|
||||
c. Affirmer disclaims responsibility for clearing rights of other persons
|
||||
that may apply to the Work or any use thereof, including without
|
||||
limitation any person's Copyright and Related Rights in the Work.
|
||||
Further, Affirmer disclaims responsibility for obtaining any necessary
|
||||
consents, permissions or other rights required for any use of the
|
||||
Work.
|
||||
d. Affirmer understands and acknowledges that Creative Commons is not a
|
||||
party to this document and has no duty or obligation with respect to
|
||||
this CC0 or use of the Work.
|
||||
@@ -1,3 +0,0 @@
|
||||
Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
|
||||
|
||||
This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it.
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
SUBDIRS = src man tests bash-completion
|
||||
# EXTRA_DIST = buildconf
|
||||
|
||||
11
README.md
11
README.md
@@ -6,19 +6,18 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
[](https://api.reuse.software/info/github.com/scsitape/stenc/)
|
||||
|
||||
|
||||
Stenc
|
||||
-----
|
||||
|
||||
SCSI Tape Encryption Manager - Manages encryption on LTO tape drives (starting with generation 4) with hardware-based encryption.
|
||||
Program should work on any other SCSI security protocol (SSP) capable tape drives. Built specifically for Linux.
|
||||
SCSI Tape Encryption Manager - Manages hardware encryption on LTO tape drives (starting with generation 4).
|
||||
Program should work on any other SCSI security protocol (SSP) capable tape drives.
|
||||
Supports key change auditing and key descriptors (uKAD).
|
||||
|
||||
Features
|
||||
--------
|
||||
|
||||
* SCSI hardware-based encryption management
|
||||
* Supports Linux
|
||||
* Supports Linux and FreeBSD
|
||||
* Supports most SSP compliant devices, such as LTO-4 tape drives
|
||||
* Key change audit logging
|
||||
* AES Encryption
|
||||
@@ -39,7 +38,6 @@ make
|
||||
Usage example
|
||||
-------------
|
||||
|
||||
|
||||
```
|
||||
$ stenc -f /dev/nst0
|
||||
Status for /dev/nst0 (TANDBERG LTO-6 HH 3579)
|
||||
@@ -55,17 +53,14 @@ Supported algorithms:
|
||||
Raw decryption mode allowed, raw read enabled by default
|
||||
```
|
||||
|
||||
|
||||
Linux Packages
|
||||
--------------
|
||||
[](https://repology.org/metapackage/stenc)
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
AIX support was suspended on 2022-05-08 until we have contributors who can develop and test the code on AIX.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
Program copyright 2012-2022 contributing authors.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#/usr/bin/env sh
|
||||
autoreconf --install || exit 1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
if ENABLE_BASH_COMPLETION
|
||||
bashcompletiondir = $(BASH_COMPLETION_DIR)
|
||||
|
||||
@@ -1,19 +1,16 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
AC_INIT([stenc],[1.1.1])
|
||||
AC_INIT([stenc],[2.0.1])
|
||||
AC_CONFIG_SRCDIR([src/main.cpp])
|
||||
AM_INIT_AUTOMAKE([foreign subdir-objects])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CHECK_HEADER([sys/types.h])
|
||||
AC_CHECK_HEADER([sys/machine.h])
|
||||
AC_CHECK_HEADERS
|
||||
AC_CHECK_HEADERS([arpa/inet.h netinet/in.h])
|
||||
# Checks for programs
|
||||
AC_PROG_CXX
|
||||
|
||||
# Checks for header files.
|
||||
AC_PROG_EGREP
|
||||
|
||||
AC_MSG_CHECKING(whether to output raw SCSI messages)
|
||||
AC_ARG_WITH([scsi-debug],
|
||||
[AS_HELP_STRING([--with-scsi-debug],[enable scsi communication debug])],
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
man1_MANS = stenc.1
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
bin_PROGRAMS = stenc
|
||||
AM_CXXFLAGS = -std=c++17 $(INTI_CFLAGS) $(DEPS_CFLAGS)
|
||||
|
||||
21
src/main.cpp
21
src/main.cpp
@@ -20,31 +20,38 @@ GNU General Public License for more details.
|
||||
#include <config.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <cctype>
|
||||
#include <charconv>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
#include <fstream>
|
||||
#include <functional>
|
||||
#include <iomanip>
|
||||
#include <ios>
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <optional>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <system_error>
|
||||
#include <vector>
|
||||
|
||||
#include <errno.h>
|
||||
#include <getopt.h>
|
||||
#include <string.h>
|
||||
#include <sys/mtio.h>
|
||||
#include <sys/stat.h>
|
||||
#include <syslog.h>
|
||||
#include <termios.h>
|
||||
|
||||
#ifdef HAVE_STDLIB_H
|
||||
#include <stdlib.h>
|
||||
#if HAVE_ARPA_INET_H
|
||||
#include <arpa/inet.h>
|
||||
#endif
|
||||
#ifdef HAVE_STRING_H
|
||||
#include <string.h>
|
||||
#if HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
#ifdef HAVE_UNISTD_H
|
||||
#include <unistd.h>
|
||||
@@ -383,7 +390,7 @@ int main(int argc, char **argv)
|
||||
std::optional<scsi::encrypt_mode> enc_mode;
|
||||
std::optional<scsi::decrypt_mode> dec_mode;
|
||||
std::optional<std::uint8_t> algorithm_index;
|
||||
std::vector<uint8_t> key;
|
||||
std::vector<std::uint8_t> key;
|
||||
std::string key_name;
|
||||
scsi::sde_rdmc rdmc {};
|
||||
scsi::kadf kad_format {};
|
||||
|
||||
@@ -26,6 +26,7 @@ GNU General Public License for more details.
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <system_error>
|
||||
#include <type_traits>
|
||||
|
||||
#include <fcntl.h>
|
||||
@@ -36,7 +37,6 @@ GNU General Public License for more details.
|
||||
#endif
|
||||
|
||||
#if defined(OS_LINUX)
|
||||
#include <scsi/scsi.h>
|
||||
#include <scsi/sg.h>
|
||||
constexpr unsigned int SCSI_TIMEOUT {5000u};
|
||||
#elif defined(OS_FREEBSD)
|
||||
|
||||
@@ -20,8 +20,9 @@ GNU General Public License for more details.
|
||||
#ifndef _SCSIENC_H
|
||||
#define _SCSIENC_H
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <array>
|
||||
#include <bitset>
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
@@ -29,15 +30,14 @@ GNU General Public License for more details.
|
||||
#include <ostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
#include <utility>
|
||||
|
||||
#if HAVE_ARPA_INET_H
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#ifdef HAVE_SYS_MACHINE_H
|
||||
#include <sys/machine.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h>
|
||||
#if HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
namespace scsi {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
Name: stenc
|
||||
Version: 2.x.x
|
||||
|
||||
86
stenc.xml
86
stenc.xml
@@ -1,35 +1,51 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<cpe-list xmlns:config="http://scap.nist.gov/schema/configuration/0.1" xmlns="http://cpe.mitre.org/dictionary/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlnsscap-core="http://scap.nist.gov/schema/scap-core/0.3" xmlns:cpe-23="http://scap.nist.gov/schema/cpe-extension/2.3" xmlns:ns6="http://scap.nist.gov/schema/scap-core/0.1" xmlns:meta="http://scap.nist.gov/schema/cpe-dictionary-metadata/0.2" xsi:schemaLocation="http://scap.nist.gov/schema/cpe-extension/2.3 https://scap.nist.gov/schema/cpe/2.3/cpe-dictionary-extension_2.3.xsd http://cpe.mitre.org/dictionary/2.0 https://scap.nist.gov/schema/cpe/2.3/cpe-dictionary_2.3.xsd http://scap.nist.gov/schema/cpe-dictionary-metadata/0.2 https://scap.nist.gov/schema/cpe/2.1/cpe-dictionary-metadata_0.2.xsd http://scap.nist.gov/schema/scap-core/0.3 https://scap.nist.gov/schema/nvd/scap-core_0.3.xsd http://scap.nist.gov/schema/configuration/0.1 https://scap.nist.gov/schema/nvd/configuration_0.1.xsd http://scap.nist.gov/schema/scap-core/0.1 https://scap.nist.gov/schema/nvd/scap-core_0.1.xsd">
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.0.7">
|
||||
<title xml:lang="en-US">stenc 1.0.7</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.0.7:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.0.8">
|
||||
<title xml:lang="en-US">stenc 1.0.8</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.0.8:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.1.0">
|
||||
<title xml:lang="en-US">stenc 1.1.0</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.1.0:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.1.1">
|
||||
<title xml:lang="en-US">stenc 1.1.1</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.1.1:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
</cpe-list>
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<cpe-list xmlns:config="http://scap.nist.gov/schema/configuration/0.1" xmlns="http://cpe.mitre.org/dictionary/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlnsscap-core="http://scap.nist.gov/schema/scap-core/0.3" xmlns:cpe-23="http://scap.nist.gov/schema/cpe-extension/2.3" xmlns:ns6="http://scap.nist.gov/schema/scap-core/0.1" xmlns:meta="http://scap.nist.gov/schema/cpe-dictionary-metadata/0.2" xsi:schemaLocation="http://scap.nist.gov/schema/cpe-extension/2.3 https://scap.nist.gov/schema/cpe/2.3/cpe-dictionary-extension_2.3.xsd http://cpe.mitre.org/dictionary/2.0 https://scap.nist.gov/schema/cpe/2.3/cpe-dictionary_2.3.xsd http://scap.nist.gov/schema/cpe-dictionary-metadata/0.2 https://scap.nist.gov/schema/cpe/2.1/cpe-dictionary-metadata_0.2.xsd http://scap.nist.gov/schema/scap-core/0.3 https://scap.nist.gov/schema/nvd/scap-core_0.3.xsd http://scap.nist.gov/schema/configuration/0.1 https://scap.nist.gov/schema/nvd/configuration_0.1.xsd http://scap.nist.gov/schema/scap-core/0.1 https://scap.nist.gov/schema/nvd/scap-core_0.1.xsd">
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.0.7">
|
||||
<title xml:lang="en-US">stenc 1.0.7</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.0.7:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.0.8">
|
||||
<title xml:lang="en-US">stenc 1.0.8</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.0.8:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.1.0">
|
||||
<title xml:lang="en-US">stenc 1.1.0</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.1.0:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:1.1.1">
|
||||
<title xml:lang="en-US">stenc 1.1.1</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:1.1.1:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:2.0.0">
|
||||
<title xml:lang="en-US">stenc 2.0.0</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:2.0.0:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
<cpe-item name="cpe:/a:stencproject:stenc:2.0.1">
|
||||
<title xml:lang="en-US">stenc 2.0.1</title>
|
||||
<references>
|
||||
<reference href="https://github.com/scsitape/stenc/releases">VERSION</reference>
|
||||
<reference href="https://github.com/scsitape">VENDOR</reference>
|
||||
</references>
|
||||
<cpe-23:cpe23-item name="cpe:2.3:a:stencproject:stenc:2.0.1:*:*:*:*:*:*:*"/>
|
||||
</cpe-item>
|
||||
</cpe-list>
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
SPDX-FileCopyrightText: 2022 stenc authors
|
||||
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-FileCopyrightText: 2022 stenc authors
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
AM_CPPFLAGS=-std=c++17 -I${top_srcdir}/src
|
||||
TESTS=scsi output
|
||||
|
||||
@@ -5,11 +5,13 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <cstdint>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "config.h"
|
||||
#include "main.cpp"
|
||||
|
||||
using namespace std::literals::string_literals;
|
||||
@@ -58,7 +60,7 @@ TEST_CASE("Test SCSI inquiry output", "[output]")
|
||||
TEST_CASE("SCSI get device encryption status output 1", "[output]")
|
||||
{
|
||||
std::map<std::uint8_t, std::string> algorithms {
|
||||
{ 1, "AES-256-GCM-128"s },
|
||||
{1, "AES-256-GCM-128"s},
|
||||
};
|
||||
const std::uint8_t page[] {
|
||||
0x00, 0x20, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -69,14 +71,15 @@ Reading: Not decrypting\n\
|
||||
Writing: Not encrypting\n\
|
||||
Key instance counter: 0\n"s};
|
||||
std::ostringstream oss;
|
||||
print_device_status(oss, reinterpret_cast<const scsi::page_des&>(page), algorithms);
|
||||
print_device_status(oss, reinterpret_cast<const scsi::page_des&>(page),
|
||||
algorithms);
|
||||
REQUIRE(oss.str() == expected_output);
|
||||
}
|
||||
|
||||
TEST_CASE("SCSI get device encryption status output 2", "[output]")
|
||||
{
|
||||
std::map<std::uint8_t, std::string> algorithms {
|
||||
{ 1, "AES-256-GCM-128"s },
|
||||
{1, "AES-256-GCM-128"s},
|
||||
};
|
||||
const std::uint8_t page[] {
|
||||
0x00, 0x20, 0x00, 0x24, 0x42, 0x02, 0x02, 0x01, 0x00, 0x00,
|
||||
@@ -91,14 +94,15 @@ Writing: Encrypting (AES-256-GCM-128)\n\
|
||||
Key instance counter: 1\n\
|
||||
Drive key desc. (U-KAD): Hello world!\n"s};
|
||||
std::ostringstream oss;
|
||||
print_device_status(oss, reinterpret_cast<const scsi::page_des&>(page), algorithms);
|
||||
print_device_status(oss, reinterpret_cast<const scsi::page_des&>(page),
|
||||
algorithms);
|
||||
REQUIRE(oss.str() == expected_output);
|
||||
}
|
||||
|
||||
TEST_CASE("Test SCSI get next block encryption status output 1", "[output]")
|
||||
{
|
||||
std::map<std::uint8_t, std::string> algorithms {
|
||||
{ 1, "AES-256-GCM-128"s },
|
||||
{1, "AES-256-GCM-128"s},
|
||||
};
|
||||
const std::uint8_t page[] {
|
||||
0x00, 0x21, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -107,14 +111,15 @@ TEST_CASE("Test SCSI get next block encryption status output 1", "[output]")
|
||||
const std::string expected_output {"\
|
||||
Current block status: Not encrypted\n"s};
|
||||
std::ostringstream oss;
|
||||
print_block_status(oss, reinterpret_cast<const scsi::page_nbes&>(page), algorithms);
|
||||
print_block_status(oss, reinterpret_cast<const scsi::page_nbes&>(page),
|
||||
algorithms);
|
||||
REQUIRE(oss.str() == expected_output);
|
||||
}
|
||||
|
||||
TEST_CASE("Test SCSI get next block encryption status output 2", "[output]")
|
||||
{
|
||||
std::map<std::uint8_t, std::string> algorithms {
|
||||
{ 1, "AES-256-GCM-128"s },
|
||||
{1, "AES-256-GCM-128"s},
|
||||
};
|
||||
const std::uint8_t page[] {
|
||||
0x00, 0x21, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -124,14 +129,15 @@ TEST_CASE("Test SCSI get next block encryption status output 2", "[output]")
|
||||
const std::string expected_output {"\
|
||||
Current block status: Encrypted and able to decrypt (AES-256-GCM-128)\n"s};
|
||||
std::ostringstream oss;
|
||||
print_block_status(oss, reinterpret_cast<const scsi::page_nbes&>(page), algorithms);
|
||||
print_block_status(oss, reinterpret_cast<const scsi::page_nbes&>(page),
|
||||
algorithms);
|
||||
REQUIRE(oss.str() == expected_output);
|
||||
}
|
||||
|
||||
TEST_CASE("Test SCSI get next block encryption status output 3", "[output]")
|
||||
{
|
||||
std::map<std::uint8_t, std::string> algorithms {
|
||||
{ 1, "AES-256-GCM-128"s },
|
||||
{1, "AES-256-GCM-128"s},
|
||||
};
|
||||
const std::uint8_t page[] {
|
||||
0x00, 0x21, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
@@ -142,7 +148,8 @@ TEST_CASE("Test SCSI get next block encryption status output 3", "[output]")
|
||||
Current block status: Encrypted, key missing or invalid (AES-256-GCM-128)\n\
|
||||
Current block key desc. (U-KAD): Hello world!\n"s};
|
||||
std::ostringstream oss;
|
||||
print_block_status(oss, reinterpret_cast<const scsi::page_nbes&>(page), algorithms);
|
||||
print_block_status(oss, reinterpret_cast<const scsi::page_nbes&>(page),
|
||||
algorithms);
|
||||
REQUIRE(oss.str() == expected_output);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,22 @@
|
||||
#define CATCH_CONFIG_MAIN
|
||||
#include "catch.hpp"
|
||||
|
||||
#include "config.h"
|
||||
#include "scsiencrypt.h"
|
||||
#include <cstddef>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#if HAVE_ARPA_INET_H
|
||||
#include <arpa/inet.h>
|
||||
#endif
|
||||
#if HAVE_NETINET_IN_H
|
||||
#include <netinet/in.h>
|
||||
#endif
|
||||
|
||||
#include "scsiencrypt.h"
|
||||
|
||||
using namespace std::literals::string_literals;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user