Skip to content

Commit 8ff2e4c

Browse files
committed
Codecleanup, Version bump 1.1.0
1 parent 0ad0a20 commit 8ff2e4c

File tree

5 files changed

+75
-80
lines changed

5 files changed

+75
-80
lines changed

ChangeLog

+5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
2022-04-22 Jonas Stein <[email protected]>
2+
* Version upgraded to 1.1.0
3+
* Code cleanup
4+
* Use /dev/random to create a key
5+
16
2020-06-16 Jonas Stein <[email protected]>
27
* Version upgraded to 1.0.8
38
* Merged patches to fix make files and provide more error messages

configure.ac

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
AC_INIT([stenc],[1.0.8])
1+
AC_INIT([stenc],[1.1.0])
22
AC_CONFIG_SRCDIR([src/main.cpp])
33
AM_INIT_AUTOMAKE([foreign])
44

src/main.cpp

+50-55
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ GNU General Public License for more details.
2323
#endif
2424
#include <fstream>
2525
#include <iomanip>
26+
#include <ios>
2627
#include <iostream>
2728
#include <sstream>
2829
#include <string>
@@ -73,7 +74,6 @@ void echo(bool);
7374
std::ofstream logFile;
7475

7576
int main(int argc, char **argv) {
76-
7777
bitcheck bc;
7878
memset(&bc, 0, 1);
7979
bc.bit2 = 1;
@@ -97,8 +97,7 @@ int main(int argc, char **argv) {
9797
#endif
9898
break;
9999
default:
100-
std::cerr << "Unknown bit check result " << std::hex << check;
101-
std::cerr << std::endl;
100+
std::cerr << "Unknown bit check result " << std::hex << check << "\n";
102101
errorOut("Exiting program because it will not run properly");
103102
break;
104103
}
@@ -120,7 +119,7 @@ int main(int argc, char **argv) {
120119
}
121120
if (thisCmd == "--version") {
122121
std::cout << "stenc v" << VERSION << " - SCSI Tape Encryption Manager\n";
123-
std::cout << "https://github.com/scsitape/stenc" << std::endl;
122+
std::cout << "https://github.com/scsitape/stenc \n";
124123
exit(EXIT_SUCCESS);
125124
}
126125
if (thisCmd == "-g") { // Check if the help flag was passed. If it was,
@@ -134,7 +133,7 @@ int main(int argc, char **argv) {
134133
keyLength = keyLength / 8;
135134
if (keyLength > SSP_KEY_LENGTH) {
136135
std::cout << "Warning: Keys over " << (SSP_KEY_LENGTH * 8)
137-
<< " bits cannot be used by this program!" << std::endl;
136+
<< " bits cannot be used by this program! \n";
138137
}
139138
action = 2; // generating key
140139
} else if (thisCmd == "-e") {
@@ -214,9 +213,9 @@ int main(int argc, char **argv) {
214213
}
215214
kf << newkey << keyDesc;
216215
kf.close();
217-
std::cout << "Random key saved into '" << keyFile << "'" << std::endl;
216+
std::cout << "Random key saved into '" << keyFile << "'\n";
218217
chmod(keyFile.c_str(), 0600);
219-
std::cout << "Permissions of keyfile set to 600" << std::endl;
218+
std::cout << "Permissions of keyfile set to 600\n";
220219
exit(EXIT_SUCCESS);
221220
}
222221
// validate the tape device
@@ -247,14 +246,14 @@ int main(int argc, char **argv) {
247246
logFile.open(LOGFILE, std::ios::app);
248247
if (!logFile.is_open()) {
249248
std::cout << "Warning: Could not open '" << LOGFILE
250-
<< "' for key change auditing!" << std::endl;
249+
<< "' for key change auditing!\n";
251250
}
252251
chmod(LOGFILE, 0600);
253252

254253
if (action == 0) {
255-
std::cout << "Status for " << tapeDrive << std::endl;
256-
std::cout << "--------------------------------------------------"
257-
<< std::endl;
254+
std::cout << "Status for " << tapeDrive << "\n"
255+
<< "--------------------------------------------------\n";
256+
258257
if (detail)
259258
inquiryDrive(tapeDrive);
260259
showDriveStatus(tapeDrive, detail);
@@ -274,14 +273,13 @@ int main(int argc, char **argv) {
274273
echo(false);
275274
getline(std::cin, p1);
276275
echo(true);
277-
std::cout << std::endl;
278-
std::cout << "Re-enter key in hex format: ";
276+
std::cout << "\nRe-enter key in hex format: ";
279277
echo(false);
280278
getline(std::cin, p2);
281279
echo(true);
282-
std::cout << std::endl;
280+
std::cout << "\n";
283281
if (p1 != p2) {
284-
std::cout << "Keys do not match!!" << std::endl;
282+
std::cout << "Keys do not match!\n";
285283
} else {
286284
ki.load(p1);
287285
if (ki.valid) {
@@ -292,7 +290,7 @@ int main(int argc, char **argv) {
292290
done = true;
293291
}
294292
} else
295-
std::cout << "Invalid key!" << std::endl;
293+
std::cout << "Invalid key!\n";
296294
}
297295
}
298296
drvOptions.keyName = keyDesc;
@@ -367,7 +365,7 @@ int main(int argc, char **argv) {
367365
// exits to shell with an error message
368366

369367
void errorOut(std::string const message) {
370-
std::cerr << "Error: " << message << std::endl;
368+
std::cerr << "Error: " << message << "\n";
371369
showUsage();
372370
exit(EXIT_FAILURE);
373371
}
@@ -376,10 +374,9 @@ void errorOut(std::string const message) {
376374
void showUsage() {
377375
std::cout
378376
<< "Usage: stenc --version | -g <length> -k <file> [-kd <description>] | "
379-
"-f <device> [--detail] [-e <on/mixed/rawread/off> [-k <file>] [-kd "
380-
"<description>] [-a <index>] [--protect | --unprotect] [--ckod] ]"
381-
<< std::endl;
382-
std::cout << "Type 'man stenc' for more information." << std::endl;
377+
"-f <device> [--detail] [-e <on/mixed/rawread/off> [-k <file>] "
378+
"[-kd <description>] [-a <index>] [--protect | --unprotect] [--ckod] ]\n\n"
379+
"Type 'man stenc' for more information.\n";
383380
}
384381
void inquiryDrive(std::string tapeDevice) {
385382
// todo: std::cout should not be used outside main()
@@ -422,58 +419,58 @@ void showDriveStatus(std::string tapeDrive, bool detail) {
422419
)
423420
emode = "off";
424421

425-
std::cout << emode << std::endl;
422+
std::cout << emode << "\n";
426423
if (detail) {
427424
std::cout << std::left << std::setw(25) << "Drive Output:";
428425
switch ((int)opt->des.decryptionMode) {
429426
case 0x0:
430-
std::cout << "Not decrypting" << std::endl;
427+
std::cout << "Not decrypting\n";
431428
std::cout << std::setw(25) << " "
432-
<< "Raw encrypted data not outputted" << std::endl;
429+
<< "Raw encrypted data not outputted\n";
433430
break;
434431
case 0x1:
435-
std::cout << "Not decrypting" << std::endl;
432+
std::cout << "Not decrypting\n";
436433
std::cout << std::setw(25) << " "
437-
<< "Raw encrypted data outputted" << std::endl;
434+
<< "Raw encrypted data outputted\n";
438435
break;
439436
case 0x2:
440-
std::cout << "Decrypting" << std::endl;
437+
std::cout << "Decrypting\n";
441438
std::cout << std::setw(25) << " "
442-
<< "Unencrypted data not outputted" << std::endl;
439+
<< "Unencrypted data not outputted\n";
443440
break;
444441
case 0x3:
445-
std::cout << "Decrypting" << std::endl;
442+
std::cout << "Decrypting\n";
446443
std::cout << std::setw(25) << " "
447-
<< "Unencrypted data outputted" << std::endl;
444+
<< "Unencrypted data outputted\n";
448445
break;
449446
default:
450447
std::cout << "Unknown '0x" << std::hex << (int)opt->des.decryptionMode
451-
<< "' " << std::endl;
448+
<< "' \n";
452449
break;
453450
}
454451
std::cout << std::setw(25) << "Drive Input:";
455452
switch ((int)opt->des.encryptionMode) {
456453
case 0x0:
457-
std::cout << "Not encrypting" << std::endl;
454+
std::cout << "Not encrypting\n";
458455
break;
459456
case 0x2:
460-
std::cout << "Encrypting" << std::endl;
457+
std::cout << "Encrypting\n";
461458
break;
462459
default:
463460
std::cout << "Unknown result '0x" << std::hex
464-
<< (int)opt->des.encryptionMode << "'" << std::endl;
461+
<< (int)opt->des.encryptionMode << "'\n";
465462
break;
466463
}
467464
if (opt->des.RDMD == 1) {
468465
std::cout << std::setw(25) << " "
469-
<< "Protecting from raw read" << std::endl;
466+
<< "Protecting from raw read\n";
470467
}
471468

472469
std::cout << std::setw(25) << "Key Instance Counter:" << std::dec
473-
<< BSLONG(opt->des.keyInstance) << std::endl;
470+
<< BSLONG(opt->des.keyInstance) << "\n";
474471
if (opt->des.algorithmIndex != 0) {
475472
std::cout << std::setw(25) << "Encryption Algorithm:" << std::hex
476-
<< (int)opt->des.algorithmIndex << std::endl;
473+
<< (int)opt->des.algorithmIndex << "\n";
477474
}
478475
}
479476
if (opt->kads.size() > 0) {
@@ -510,34 +507,33 @@ void showVolumeStatus(std::string tapeDrive) {
510507
std::cout << std::left << std::setw(25) << "Volume Compressed:";
511508
switch (opt->nbes.compressionStatus) {
512509
case 0x00:
513-
std::cout << "Drive cannot determine" << std::endl;
510+
std::cout << "Drive cannot determine\n";
514511
break;
515512
default:
516513
std::cout << "Unknown result '" << std::hex
517-
<< (int)opt->nbes.compressionStatus << "'" << std::endl;
514+
<< (int)opt->nbes.compressionStatus << "'\n";
518515
break;
519516
}
520517
}
521518
std::cout << std::left << std::setw(25) << "Volume Encryption:";
522519
switch ((int)opt->nbes.encryptionStatus) {
523520
case 0x01:
524-
std::cout << "Unable to determine" << std::endl;
521+
std::cout << "Unable to determine\n";
525522
break;
526523
case 0x02:
527-
std::cout << "Logical block is not a logical block" << std::endl;
524+
std::cout << "Logical block is not a logical block\n";
528525
break;
529526
case 0x03:
530-
std::cout << "Not encrypted" << std::endl;
527+
std::cout << "Not encrypted\n";
531528
break;
532529
case 0x05:
533-
std::cout << "Encrypted and able to decrypt" << std::endl;
530+
std::cout << "Encrypted and able to decrypt\n";
534531
if (opt->nbes.RDMDS == 1)
535-
std::cout << std::left << std::setw(25) << " "
536-
<< "Protected from raw read" << std::endl;
532+
std::cout << std::left << std::setw(25)
533+
<< " Protected from raw read\n";
537534
break;
538535
case 0x06:
539-
std::cout << "Encrypted, but unable to decrypt due to invalid key. "
540-
<< std::endl;
536+
std::cout << "Encrypted, but unable to decrypt due to invalid key.\n";
541537
if (opt->kads.size() > 0) {
542538
for (unsigned int i = 0; i < opt->kads.size(); i++) {
543539
std::stringstream lbl;
@@ -561,19 +557,17 @@ void showVolumeStatus(std::string tapeDrive) {
561557
}
562558
}
563559
if (opt->nbes.RDMDS == 1)
564-
std::cout << std::left << std::setw(25) << " "
565-
<< "Protected from raw read" << std::endl;
560+
std::cout << std::left << std::setw(25) << " Protected from raw read\n";
566561
break;
567562

568563
default:
569564
std::cout << "Unknown result '" << std::hex
570-
<< (int)opt->nbes.encryptionStatus << "'" << std::endl;
565+
<< (int)opt->nbes.encryptionStatus << "'\n";
571566
break;
572567
}
573568
if (opt->nbes.algorithmIndex != 0) {
574569
std::cout << std::left << std::setw(25)
575-
<< "Volume Algorithm:" << (int)opt->nbes.algorithmIndex
576-
<< std::endl;
570+
<< "Volume Algorithm:" << (int)opt->nbes.algorithmIndex << "\n";
577571
}
578572

579573
delete opt;
@@ -586,6 +580,7 @@ void echo(bool on = true) {
586580
on ? (settings.c_lflag | ECHO) : (settings.c_lflag & ~(ECHO));
587581
tcsetattr(STDIN_FILENO, TCSANOW, &settings);
588582
}
583+
589584
std::string timestamp() {
590585
time_t tm{};
591586
time(&tm);
@@ -611,9 +606,9 @@ std::string randomKey(int length) {
611606
}
612607
random.close();
613608
} else {
614-
std::cout << "Enter random keys on the keyboard to seed the "
615-
"generator.\nEnd by pressing enter..."
616-
<< std::endl;
609+
std::cout << "Enter random keys on the keyboard to seed the generator.\n"
610+
"End by pressing enter...\n";
611+
617612
double check = 0;
618613
char c = 0;
619614
echo(false);

src/scsiencrypt.cpp

+18-23
Original file line numberDiff line numberDiff line change
@@ -492,52 +492,50 @@ void readIOError(int err) {
492492
std::cerr << "ERROR: ";
493493
switch (err) {
494494
case EAGAIN:
495-
std::cerr << "Device already open" << std::endl;
495+
std::cerr << "Device already open.\n";
496496
break;
497497
case EBUSY:
498-
std::cerr << "Device Busy" << std::endl;
498+
std::cerr << "Device Busy.\n";
499499
break;
500500
case ETIMEDOUT:
501-
std::cerr << "Device operation timed out" << std::endl;
501+
std::cerr << "Device operation timed out\n";
502502
break;
503503
case EIO:
504-
std::cerr << "Device I/O Error." << std::endl;
504+
std::cerr << "Device I/O Error.\n";
505505
break;
506506
case EPERM:
507-
std::cerr << "You do not have privileges to do this. Are you root?"
508-
<< std::endl;
507+
std::cerr << "You do not have privileges to do this. Are you root?\n";
509508
break;
510509
#ifdef OS_AIX
511510
case EBADF:
512-
std::cerr << "EBADF" << std::endl;
511+
std::cerr << "EBADF\n";
513512
break;
514513
case EFAULT:
515-
std::cerr << "EFAULT" << std::endl;
514+
std::cerr << "EFAULT\n";
516515
break;
517516
case EINTR:
518-
std::cerr << "EINTR" << std::endl;
517+
std::cerr << "EINTR\n";
519518
break;
520519
case EINVAL:
521-
std::cerr << "Invalid device" << std::endl;
520+
std::cerr << "Invalid device.\n";
522521
break;
523522

524523
case ENOTTY:
525-
std::cerr << "ENOTTY" << std::endl;
524+
std::cerr << "ENOTTY\n";
526525
break;
527526

528527
case ENODEV:
529-
std::cerr << "Device is not responding" << std::endl;
528+
std::cerr << "Device is not responding.\n";
530529
break;
531530

532531
case ENXIO:
533-
std::cerr << "ENXIO" << std::endl;
532+
std::cerr << "ENXIO\n";
534533
break;
535534

536535
#endif
537536
default:
538537
if (errno != 0) {
539-
std::cerr << "0x" << std::hex << errno << " " << strerror(errno)
540-
<< std::endl;
538+
std::cerr << "0x" << std::hex << errno << " " << strerror(errno) << "\n";
541539
}
542540
}
543541
}
@@ -571,20 +569,17 @@ void outputSense(SCSI_PAGE_SENSE *sd) {
571569
break;
572570
}
573571

574-
std::cerr << " (0x" << std::hex << (sd->senseKey);
575-
std::cerr << ")\n";
572+
std::cerr << " (0x" << std::hex << (sd->senseKey) << ")\n";
576573

577574
std::cerr << std::left << std::setw(25) << " ASC:"
578-
<< "0x" << std::hex << (sd->addSenseCode);
579-
std::cerr << "\n";
575+
<< "0x" << std::hex << (sd->addSenseCode) << "\n";
580576

581577
std::cerr << std::left << std::setw(25) << " ASCQ:"
582-
<< "0x" << std::hex << (sd->addSenseCodeQual);
583-
std::cerr << "\n";
578+
<< "0x" << std::hex << (sd->addSenseCodeQual) << "\n";
584579

585580
if (sd->addSenseLen > 0) {
586-
std::cerr << std::left << std::setw(25) << " Additional data:"
587-
<< "0x";
581+
std::cerr << std::left << std::setw(25) << " Additional data:"
582+
<< "0x";
588583

589584
for (int i = 0; i < sd->addSenseLen; i++) {
590585
std::cerr << std::hex << (sd->addSenseData[i]);

0 commit comments

Comments
 (0)