cryptix.tools

Class Scar

public class Scar extends Thread

A command line utility to (a) compress, encrypt and asciify files and/or directories (with or without directory recursion), and (b) accomplish the inverse with user-specified option for recreating a source tree directory.

Uses java.zip tools to deflate and inflate data, Cryptix IJCE for the cipher and message digest (used to compute cipher keys from user plain ascii passphrase) algorithms, and a PGP-style Base-64 armour with P. R. Zimmermann 24-bit CRC method (PRZ24 class) for the [de-]asciification.

Hard-wired default values for cipher (Square) and Simple String To Key (S2K) specifier with message digest (RIPEMD-160) algorithms are used. These and other default values can be individually modified for each user by setting the appropriate properties in a scar.properties file placed in the user's home directory.

Current scar properties that the user can alter are:

scar.header
The text that will be enclosed between a pair of ----- to visually indicate the start of an asciified scar. Current default is "BEGIN SCAR ARCHIVE".
scar.comment
A text that will follow the text "Comment: " in a line following scar version information in an asciified scar. Current default is "scar by Cryptix...".
scar.footer
The text that will be enclosed between a pair of ----- to visually indicate the end of an asciified scar. Current default is "END SCAR ARCHIVE."
scar.cipher.algorithm
The name of a symmetric cipher algorithm installed and accessible by the user Java VM. Current default is "Square". Square is a symmetric block cipher algorithm developed by Joan Daemen and Vincent Rijmen .
scar.passphrase
The text to use as the pass-phrase. This pass-phrase will be used as the basis for computing a session key. The algorithms used to generate a session key from the pass-phrase are an implementation of the proposed S2K Simple, Salted, Iterated and Salted-Iterated variations described in the OpenPGP IETF draft document dated November 1997. The current default is "sub rosa."
scar.md.algorithm
The Message Digest algorithm used in the S2K algorithms. "RIPEMD-160" Is the default. RIPEMD-160 is designed by Hans Dobbertin, Antoon Bosselaers and Bart Preneel.
scar.md.salt
A salt value to use in S2K Salted and Iterated-Salted variants. Current value is "Cryptix Development Team".
scar.md.iterations
A positive integer to use in S2K Iterated and Salted-Iterated variants. Current default value is 7. To do: Note: this is an alpha release of scar. The format of encrypted archives may (and probably will) change incompatibly in future releases..

Copyright © 1997, 1998 Systemics Ltd on behalf of the Cryptix Development Team.
All rights reserved.

$Revision: 1.4 $

Author: Raif S. Naffah

Nested Class Summary
classScar.ScarInputStream
classScar.ScarOutputStream
Field Summary
static char[]BASE64
Stringcomment
Comment data.
static intCONV_OTHER
static intCONV_PAD
static intCONV_WHITE
static intdebuglevel
static booleanDEBUG
static StringDEFAULT_CIPHER
static StringDEFAULT_COMMENT
static StringDEFAULT_FOOTER
static StringDEFAULT_HEADER
Default default values!
static intDEFAULT_ITERATIONS
static StringDEFAULT_MD
static StringDEFAULT_PASS_PHRASE
static StringDEFAULT_SALT
static PrintWritererr
Stringfooter
Footer info following ----- in an asciified scar file.
static Stringfs
User runtime jvm host file separator.
Stringheader
Header info following ----- in an asciified scar file.
static booleanIN
static intMAX_LINE_LENGTH
static booleanOUT
PropertyResourceBundleproperties
User ResourceBundle file for his/her scar.properties.
static charPADDING
static SecureRandomrandom
Source of randomness.
static booleanTRACE
static StringVERSION
Constructor Summary
Scar()
Method Summary
static voiddebug(String s)
voidinitDefaults()
Set default properties.
static voidmain(String[] args)
voidprocessOptions(String[] args)
Process command line arguments.
voidrun()
main action.
static voidtrace(boolean in, String s)
static voidtrace(String s)
voidunzip(ZipInputStream zip, File dest)
unzip files and/or directories to a destination.
voidzip(File source, ZipOutputStream zip, int level)
Zip files and/or directories to a ZipOutputStream.

Field Detail

BASE64

static final char[] BASE64

comment

String comment
Comment data.

CONV_OTHER

static final int CONV_OTHER

CONV_PAD

static final int CONV_PAD

CONV_WHITE

static final int CONV_WHITE

debuglevel

static int debuglevel

DEBUG

public static boolean DEBUG

DEFAULT_CIPHER

static final String DEFAULT_CIPHER

DEFAULT_COMMENT

static final String DEFAULT_COMMENT

DEFAULT_FOOTER

static final String DEFAULT_FOOTER

DEFAULT_HEADER

static final String DEFAULT_HEADER
Default default values!

DEFAULT_ITERATIONS

static final int DEFAULT_ITERATIONS

DEFAULT_MD

static final String DEFAULT_MD

DEFAULT_PASS_PHRASE

static final String DEFAULT_PASS_PHRASE

DEFAULT_SALT

static final String DEFAULT_SALT

err

static final PrintWriter err

footer

String footer
Footer info following ----- in an asciified scar file.

fs

static String fs
User runtime jvm host file separator.

header

String header
Header info following ----- in an asciified scar file.

IN

static final boolean IN

MAX_LINE_LENGTH

static final int MAX_LINE_LENGTH

OUT

static final boolean OUT

properties

PropertyResourceBundle properties
User ResourceBundle file for his/her scar.properties. Only user home directory is searched for this properties file.

PADDING

static final char PADDING

random

static final SecureRandom random
Source of randomness.

TRACE

static final boolean TRACE

VERSION

static final String VERSION

Constructor Detail

Scar

public Scar()

Method Detail

debug

static void debug(String s)

initDefaults

void initDefaults()
Set default properties.

main

public static void main(String[] args)

processOptions

public void processOptions(String[] args)
Process command line arguments.

run

public void run()
main action.

trace

static void trace(boolean in, String s)

trace

static void trace(String s)

unzip

public void unzip(ZipInputStream zip, File dest)
unzip files and/or directories to a destination.

Parameters: src source zip stream. dest destination File object.

Throws: IOException if operation fails

zip

public void zip(File source, ZipOutputStream zip, int level)
Zip files and/or directories to a ZipOutputStream.

Parameters: source source file or directory. zip destination zip output stream. level depth level in the recursion tree of this method. Used to distinguish top level directory from sub- directories (whether to apply recursion or not).

Throws: IOException if operation fails