25import java.nio.ByteBuffer;
26import java.util.ArrayList;
29import org.cipherpack.CPFactory;
30import org.cipherpack.CipherpackListener;
31import org.cipherpack.CryptoConfig;
32import org.cipherpack.PackHeader;
33import org.jau.io.ByteInStream;
34import org.jau.io.ByteInStreamUtil;
35import org.jau.io.PrintUtil;
43 static void print_usage() {
44 PrintUtil.println(System.err,
"Usage: pack [-epk <enc-pub-key>]+ -ssk <sign-sec-key> -sskp <sign-sec-key-passphrase> -in <input-source> -target_path <target-path-filename> "+
45 "-intention <string> -version <file-version-str> -version_parent <file-version-parent-str> -phash <payload-hash-algo> -out <output-filename>");
46 PrintUtil.println(System.err,
"Usage: unpack [-spk <sign-pub-key>]+ -dsk <dec-sec-key> -dskp <dec-sec-key-passphrase> -in <input-source> -phash <payload-hash-algo> -out <output-filename>");
49 public static void main(
final String[] args)
throws InterruptedException {
50 final int argc = args.length;
51 for(
int i=0; i< argc; i++) {
52 final String arg = args[i];
53 if( arg.equals(
"-cp_debug") && args.length > (i+1) ) {
54 System.setProperty(
"cipherpack.debug", args[++i]);
55 }
else if( arg.equals(
"-cp_verbose") && args.length > (i+1) ) {
56 System.setProperty(
"cipherpack.verbose", args[++i]);
61 PrintUtil.println(System.err,
"Cipherpack initialized!");
65 PrintUtil.fprintf_td(System.err,
"Called with %d arguments: ", argc);
66 for(
int i=0; i<argc; i++) {
67 PrintUtil.fprintf_td(System.err,
"%s ", args[i]);
69 PrintUtil.fprintf_td(System.err,
"\n");
76 final String command = args[++argi];
78 if( command.equals(
"pack" ) ) {
79 final List<String> enc_pub_keys =
new ArrayList<String>();
80 String sign_sec_key_fname =
new String();
81 final ByteBuffer sign_sec_key_passphrase =
null;
82 String source_name =
new String();
83 String target_path =
new String();
84 String intention =
new String();
85 String payload_version =
"0";
86 String payload_version_parent =
"0";
87 String payload_hash_algo = org.cipherpack.Cipherpack.default_hash_algo();
88 String fname_output =
new String();
89 for(
int i=argi; i + 1 < argc; ++i) {
90 final String arg = args[i];
92 if( arg.equals(
"-epk") ) {
93 enc_pub_keys.add( args[++i] );
94 }
else if( arg.equals(
"-ssk") ) {
95 sign_sec_key_fname = args[++i];
96 }
else if( arg.equals(
"-sskp") ) {
99 }
else if( arg.equals(
"-in") ) {
100 source_name = args[++i];
101 }
else if( arg.equals(
"-target_path") ) {
102 target_path = args[++i];
103 }
else if( arg.equals(
"-intention") ) {
104 intention = args[++i];
105 }
else if( arg.equals(
"-version") ) {
106 payload_version = args[++i];
107 }
else if( arg.equals(
"-version_parent") ) {
108 payload_version_parent = args[++i];
109 }
else if( arg.equals(
"-phash") ) {
110 payload_hash_algo = args[++i];
111 }
else if( arg.equals(
"-out") ) {
112 fname_output = args[++i];
115 if( 0 == enc_pub_keys.size() ||
116 sign_sec_key_fname.isEmpty() ||
117 source_name.isEmpty() ||
118 target_path.isEmpty() ||
119 fname_output.isEmpty() )
121 PrintUtil.fprintf_td(System.err,
"Pack: Error: Arguments incomplete\n");
126 final ByteInStream source = ByteInStreamUtil.to_ByteInStream(source_name);
127 final PackHeader ph = org.cipherpack.Cipherpack.encryptThenSign(
129 enc_pub_keys, sign_sec_key_fname, sign_sec_key_passphrase,
131 target_path, intention,
132 payload_version, payload_version_parent,
135 PrintUtil.fprintf_td(System.err,
"Pack: Encrypted %s to %s\n", source_name, fname_output);
136 PrintUtil.fprintf_td(System.err,
"Pack: %s\n", ph.
toString(
true,
true));
139 if( command ==
"unpack") {
140 final List<String> sign_pub_keys =
new ArrayList<String>();
141 String dec_sec_key_fname =
new String();
142 final ByteBuffer dec_sec_key_passphrase =
null;
143 String source_name =
new String();
144 String payload_hash_algo = org.cipherpack.Cipherpack.default_hash_algo();
145 String fname_output =
new String();
146 for(
int i=argi; i + 1 < argc; ++i) {
147 final String arg = args[i];
149 if( arg.equals(
"-spk") ) {
150 sign_pub_keys.add( args[++i] );
151 }
else if( arg.equals(
"-dsk") ) {
152 dec_sec_key_fname = args[++i];
153 }
else if( arg.equals(
"-dskp") ) {
156 }
else if( arg.equals(
"-in") ) {
157 source_name = args[++i];
158 }
else if( arg.equals(
"-phash") ) {
159 payload_hash_algo = args[++i];
160 }
else if( arg.equals(
"-out") ) {
161 fname_output = args[++i];
164 if( 0 == sign_pub_keys.size() ||
165 dec_sec_key_fname.isEmpty() ||
166 source_name.isEmpty() ||
167 fname_output.isEmpty() )
169 PrintUtil.fprintf_td(System.err,
"Unpack: Error: Arguments incomplete\n");
174 final ByteInStream source = ByteInStreamUtil.to_ByteInStream(source_name);
175 final PackHeader ph = org.cipherpack.Cipherpack.checkSignThenDecrypt(
176 sign_pub_keys, dec_sec_key_fname, dec_sec_key_passphrase,
181 PrintUtil.fprintf_td(System.err,
"Unpack: Decypted %s to %s\n", source_name, fname_output);
182 PrintUtil.fprintf_td(System.err,
"Unpack: %s\n", ph.
toString(
true,
true));
185 PrintUtil.fprintf_td(System.err,
"Pack: Error: Unknown command\n");
static void main(final String[] args)
Cipherpack Factory, called by automatically to load the native library.
static native String getNativeVersion()
static native String getNativeAPIVersion()
static void checkInitialized()
static final String getImplVersion()
Manifest's Attributes.Name#IMPLEMENTATION_VERSION or null if not available.
static final String getAPIVersion()
Manifest's Attributes.Name#SPECIFICATION_VERSION or null if not available.
Listener for events occurring while processing a cipherpack message via encryptThenSign() and checkSi...
CryptoConfig, contains crypto algorithms settings given at encryption wired via the Cipherpack Data S...
static CryptoConfig getDefault()
Returns default CryptoConfig.