[OpenPGP:SDK svn] r572 - in openpgpsdk/trunk: src/app tests
Subversion
ben at links.org
Mon Aug 4 18:09:53 BST 2008
Author: rachel
Date: 2008-08-04 18:09:53 +0100 (Mon, 04 Aug 2008)
New Revision: 572
Modified:
openpgpsdk/trunk/src/app/openpgp.c
openpgpsdk/trunk/tests/test_cmdline.c
openpgpsdk/trunk/tests/test_common.c
openpgpsdk/trunk/tests/test_packet_types.c
openpgpsdk/trunk/tests/test_rsa_decrypt.c
openpgpsdk/trunk/tests/test_rsa_encrypt.c
openpgpsdk/trunk/tests/test_rsa_keys.c
openpgpsdk/trunk/tests/test_rsa_signature.c
openpgpsdk/trunk/tests/test_rsa_verify.c
openpgpsdk/trunk/tests/tests.h
Log:
Added large file test.
Changed the way gpg is called to cut down on annoying
"standard input has been reopened" messages.
Modified: openpgpsdk/trunk/src/app/openpgp.c
===================================================================
--- openpgpsdk/trunk/src/app/openpgp.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/src/app/openpgp.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -41,6 +41,7 @@
static const char* usage="%s --list-keys | --encrypt | --decrypt | --sign | --clearsign | --verify [--keyring=<keyring>] [--userid=<userid>] [--filename=<filename>] [--armour] [--homedir=<homedir>]\n";
static const char* usage_list_keys="%s --list-keys [--keyring=<keyring>]\n";
+// \todo static const char* usage_list_packets="%s --list-packets \n";
static const char* usage_find_key="%s --find-key --userid=<userid> [--keyring=<keyring>] \n";
static const char* usage_export_key="%s --export-key --userid=<userid> [--keyring=<keyring>] \n";
static const char* usage_import_key="%s --import-key --filename=<filename> --keyring=<keyring> \n";
@@ -56,6 +57,7 @@
enum optdefs {
// commands
LIST_KEYS=1,
+// \todo LIST_PACKETS,
FIND_KEY,
EXPORT_KEY,
IMPORT_KEY,
@@ -79,6 +81,7 @@
{
// commands
{ "list-keys", no_argument, NULL, LIST_KEYS },
+ //\todo { "list-packets", no_argument, NULL, LIST_PACKETS },
{ "find-key", no_argument, NULL, FIND_KEY },
{ "export-key", no_argument, NULL, EXPORT_KEY },
{ "import-key", no_argument, NULL, IMPORT_KEY },
@@ -181,6 +184,12 @@
cmd=LIST_KEYS;
break;
+ /* \todo
+ case LIST_PACKETS:
+ cmd=LIST_PACKETS;
+ break;
+ */
+
case FIND_KEY:
cmd=FIND_KEY;
break;
@@ -326,6 +335,8 @@
// ops_keyring_free(&kering);
break;
+ //case LIST_PACKETS:
+
case FIND_KEY:
if (!got_userid)
{
Modified: openpgpsdk/trunk/tests/test_cmdline.c
===================================================================
--- openpgpsdk/trunk/tests/test_cmdline.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_cmdline.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -36,9 +36,9 @@
{
snprintf(openpgp,MAXBUF,"%s/../../src/app/openpgp", dir);
- create_testfile(testfile_encrypt);
- create_testfile(testfile_sign);
- create_testfile(testfile_clearsign);
+ create_small_testfile(testfile_encrypt);
+ create_small_testfile(testfile_sign);
+ create_small_testfile(testfile_clearsign);
// Return success
return 0;
Modified: openpgpsdk/trunk/tests/test_common.c
===================================================================
--- openpgpsdk/trunk/tests/test_common.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_common.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -214,9 +214,9 @@
exit(1);
}
-char* create_testtext(const char *text)
+char* create_testtext(const char *text, const unsigned int repeats)
{
- const unsigned int repeats=10;
+ //const unsigned int repeats=10;
unsigned int i=0;
const unsigned int maxbuf=1024;
@@ -258,8 +258,20 @@
}
}
-void create_testfile(const char *name)
+void create_small_testfile(const char* name)
{
+ const unsigned int repeats=10;
+ create_testfile(name, repeats);
+ }
+
+void create_large_testfile(const char* name)
+ {
+ const unsigned int repeats=10^6;
+ create_testfile(name, repeats);
+ }
+
+void create_testfile(const char *name, const unsigned int repeats)
+ {
char filename[MAXBUF+1];
char* testtext=NULL;
@@ -272,7 +284,7 @@
#endif
return;
- testtext=create_testtext(name);
+ testtext=create_testtext(name, repeats);
write(fd,testtext,strlen(testtext));
close(fd);
free(testtext);
Modified: openpgpsdk/trunk/tests/test_packet_types.c
===================================================================
--- openpgpsdk/trunk/tests/test_packet_types.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_packet_types.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -162,7 +162,8 @@
int rtn=0;
// create test string
- testtext=create_testtext("literal data packet text");
+ int repeats=10;
+ testtext=create_testtext("literal data packet text",repeats);
// initialise needed structures for writing into memory
ops_setup_memory_write(&cinfo,&mem,strlen(testtext));
@@ -268,7 +269,8 @@
unsigned int len;
// create test string
- testtext=create_testtext("compressed literal data packet text - ");
+ int repeats=10;
+ testtext=create_testtext("compressed literal data packet text - ",repeats);
// initialise
ops_setup_memory_write(&cinfo_uncompress,&mem_uncompress,strlen(testtext));
Modified: openpgpsdk/trunk/tests/test_rsa_decrypt.c
===================================================================
--- openpgpsdk/trunk/tests/test_rsa_decrypt.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_rsa_decrypt.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -134,7 +134,8 @@
ops_parse_info_t *pinfo=NULL;
ops_memory_t* mem_out=NULL;
int rtn=0;
-
+ int repeats=10;
+
// open encrypted file
snprintf(encfile,sizeof encfile,"%s/%s.%s",dir,
filename,suffix);
@@ -170,7 +171,7 @@
close(fd);
// File contents should match
- testtext=create_testtext(filename);
+ testtext=create_testtext(filename,repeats);
CU_ASSERT(strlen(testtext)==ops_memory_get_length(mem_out));
CU_ASSERT(memcmp(ops_memory_get_data(mem_out),
testtext,
@@ -215,7 +216,7 @@
compress_algos[compress_alg], compress_lvl);
// Create file with unique text matching this test
- create_testfile(filename);
+ create_small_testfile(filename);
// Encrypt file using GPG
snprintf(cmd,sizeof cmd,"gpg --quiet --no-tty --homedir=%s --cipher-algo \"%s\" --compress-algo \"%s\" --compress-level %d --output=%s/%s.%s --force-mdc --encrypt --recipient %s %s %s/%s",
Modified: openpgpsdk/trunk/tests/test_rsa_encrypt.c
===================================================================
--- openpgpsdk/trunk/tests/test_rsa_encrypt.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_rsa_encrypt.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -37,6 +37,8 @@
static char *filename_rsa_noarmour_passphrase_singlekey="enc_rsa_noarmour_pp_singlekey.txt";
static char *filename_rsa_armour_nopassphrase_singlekey="enc_rsa_armour_np_singlekey.txt";
static char *filename_rsa_armour_passphrase_singlekey="enc_rsa_armour_pp_singlekey.txt";
+static char *filename_rsa_large_noarmour_nopassphrase="enc_rsa_large_noarmour_np.txt";
+static char *filename_rsa_large_armour_nopassphrase="enc_rsa_large_armour_np.txt";
static ops_parse_cb_return_t
callback_ops_decrypt(const ops_parser_content_t *content_,ops_parse_cb_info_t *cbinfo)
@@ -108,10 +110,12 @@
{
// Create RSA test files
- create_testfile(filename_rsa_noarmour_nopassphrase_singlekey);
- create_testfile(filename_rsa_noarmour_passphrase_singlekey);
- create_testfile(filename_rsa_armour_nopassphrase_singlekey);
- create_testfile(filename_rsa_armour_passphrase_singlekey);
+ create_small_testfile(filename_rsa_noarmour_nopassphrase_singlekey);
+ create_small_testfile(filename_rsa_noarmour_passphrase_singlekey);
+ create_small_testfile(filename_rsa_armour_nopassphrase_singlekey);
+ create_small_testfile(filename_rsa_armour_passphrase_singlekey);
+ create_large_testfile(filename_rsa_large_noarmour_nopassphrase);
+ create_large_testfile(filename_rsa_large_armour_nopassphrase);
// Return success
return 0;
@@ -173,6 +177,7 @@
int rtn=0;
char pp[MAXBUF];
ops_boolean_t allow_overwrite=ops_true;
+ int repeats=10;
// filenames
snprintf(myfile,sizeof myfile,"%s/%s",dir,filename);
@@ -191,7 +196,7 @@
else if (pub_key==bravo_pub_keydata)
snprintf(pp,sizeof pp," --passphrase %s ", bravo_passphrase);
snprintf(decrypted_file,sizeof decrypted_file,"%s/decrypted_%s",dir,filename);
- snprintf(cmd,sizeof cmd,"%s --decrypt --output=%s %s %s",gpgcmd, decrypted_file, pp, encrypted_file);
+ snprintf(cmd,sizeof cmd,"cat %s | %s --decrypt --output=%s %s",encrypted_file, gpgcmd, decrypted_file, pp);
//printf("cmd: %s\n", cmd);
rtn=system(cmd);
CU_ASSERT(rtn==0);
@@ -199,7 +204,7 @@
// File contents should match - checking with OPS
- testtext=create_testtext(filename);
+ testtext=create_testtext(filename,repeats);
test_rsa_decrypt(encrypted_file,testtext, use_armour);
// tidy up
@@ -230,6 +235,18 @@
test_rsa_encrypt(armour,filename_rsa_armour_passphrase_singlekey,bravo_pub_keydata);
}
+static void test_rsa_encrypt_large_noarmour_nopassphrase(void)
+ {
+ int armour=0;
+ test_rsa_encrypt(armour,filename_rsa_large_noarmour_nopassphrase, alpha_pub_keydata);
+ }
+
+static void test_rsa_encrypt_large_armour_nopassphrase(void)
+ {
+ int armour=1;
+ test_rsa_encrypt(armour,filename_rsa_large_armour_nopassphrase, alpha_pub_keydata);
+ }
+
static void test_todo(void)
{
/*
@@ -239,8 +256,8 @@
CU_FAIL("Test TODO: Encrypt to multiple keys in same keyring");
CU_FAIL("Test TODO: Encrypt to multiple keys where my keys is (a) first key in list; (b) last key in list; (c) in the middle of the list");
CU_FAIL("Test TODO: Encrypt to users with different preferences");
+ CU_FAIL("Test TODO: Test large files");
*/
- CU_FAIL("Test TODO: Test large files");
}
static int add_tests(CU_pSuite suite)
@@ -259,6 +276,12 @@
if (NULL == CU_add_test(suite, "Armoured, single key, passphrase", test_rsa_encrypt_armour_passphrase_singlekey))
return 0;
+ if (NULL == CU_add_test(suite, "Large, no armour, no passphrase", test_rsa_encrypt_large_noarmour_nopassphrase))
+ return 0;
+
+ if (NULL == CU_add_test(suite, "Large, armour, no passphrase", test_rsa_encrypt_large_armour_nopassphrase))
+ return 0;
+
if (NULL == CU_add_test(suite, "Tests to be implemented", test_todo))
return 0;
Modified: openpgpsdk/trunk/tests/test_rsa_keys.c
===================================================================
--- openpgpsdk/trunk/tests/test_rsa_keys.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_rsa_keys.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -147,7 +147,7 @@
// Validate public key with GPG
- snprintf(cmd, sizeof cmd, "%s --import --no-allow-non-selfsigned-uid %s", gpgcmd, filename);
+ snprintf(cmd, sizeof cmd, "cat %s | %s --import --no-allow-non-selfsigned-uid", filename, gpgcmd);
rtn=system(cmd);
CU_ASSERT(rtn==0);
@@ -177,7 +177,7 @@
ops_validate_result_free(result);
// validate with GPG
- snprintf(cmd, sizeof cmd, "%s --import --no-allow-non-selfsigned-uid %s", gpgcmd, filename);
+ snprintf(cmd, sizeof cmd, "cat %s | %s --import --no-allow-non-selfsigned-uid", filename, gpgcmd);
rtn=system(cmd);
CU_ASSERT(rtn==0);
@@ -313,7 +313,7 @@
ops_validate_result_free(result);
// validate with GPG - should fail
- snprintf(cmd, sizeof cmd, "%s --import --no-allow-non-selfsigned-uid %s", gpgcmd, filename);
+ snprintf(cmd, sizeof cmd, "cat %s | %s --import --no-allow-non-selfsigned-uid", filename, gpgcmd);
rtn=system(cmd);
CU_ASSERT(rtn!=0);
Modified: openpgpsdk/trunk/tests/test_rsa_signature.c
===================================================================
--- openpgpsdk/trunk/tests/test_rsa_signature.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_rsa_signature.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -57,14 +57,14 @@
{
// Create test files
- create_testfile(filename_rsa_noarmour_nopassphrase);
- create_testfile(filename_rsa_noarmour_passphrase);
- create_testfile(filename_rsa_armour_nopassphrase);
- create_testfile(filename_rsa_armour_passphrase);
- create_testfile(filename_rsa_clearsign_file_nopassphrase);
- create_testfile(filename_rsa_clearsign_file_passphrase);
- create_testfile(filename_rsa_clearsign_buf_nopassphrase);
- create_testfile(filename_rsa_clearsign_buf_passphrase);
+ create_small_testfile(filename_rsa_noarmour_nopassphrase);
+ create_small_testfile(filename_rsa_noarmour_passphrase);
+ create_small_testfile(filename_rsa_armour_nopassphrase);
+ create_small_testfile(filename_rsa_armour_passphrase);
+ create_small_testfile(filename_rsa_clearsign_file_nopassphrase);
+ create_small_testfile(filename_rsa_clearsign_file_passphrase);
+ create_small_testfile(filename_rsa_clearsign_buf_nopassphrase);
+ create_small_testfile(filename_rsa_clearsign_buf_passphrase);
// Return success
return 0;
@@ -162,7 +162,8 @@
// Check signature with GPG
{
- snprintf(cmd,sizeof cmd,"%s --verify %s", gpgcmd, signed_file);
+ //snprintf(cmd,sizeof cmd,"%s --verify %s", gpgcmd, signed_file);
+ snprintf(cmd,sizeof cmd,"cat %s | %s --verify", signed_file, gpgcmd);
rtn=system(cmd);
CU_ASSERT(rtn==0);
}
Modified: openpgpsdk/trunk/tests/test_rsa_verify.c
===================================================================
--- openpgpsdk/trunk/tests/test_rsa_verify.c 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/test_rsa_verify.c 2008-08-04 17:09:53 UTC (rev 572)
@@ -67,51 +67,58 @@
// Create SIGNED test files
- create_testfile(filename_rsa_armour_nopassphrase);
- create_testfile(filename_rsa_armour_passphrase);
+ create_small_testfile(filename_rsa_armour_nopassphrase);
+ create_small_testfile(filename_rsa_armour_passphrase);
- create_testfile(filename_rsa_v3sig);
- create_testfile(filename_rsa_hash_md5);
+ create_small_testfile(filename_rsa_v3sig);
+ create_small_testfile(filename_rsa_hash_md5);
- create_testfile(filename_rsa_noarmour_nopassphrase);
- create_testfile(filename_rsa_noarmour_passphrase);
- create_testfile(filename_rsa_noarmour_fail_bad_sig);
+ create_small_testfile(filename_rsa_noarmour_nopassphrase);
+ create_small_testfile(filename_rsa_noarmour_passphrase);
+ create_small_testfile(filename_rsa_noarmour_fail_bad_sig);
// Now sign the test files with GPG
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --sign --local-user %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --sign --local-user %s > %s/%s.gpg",
+ dir, filename_rsa_noarmour_nopassphrase,
gpgcmd, alpha_name, dir, filename_rsa_noarmour_nopassphrase);
if (system(cmd))
{ return 1; }
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --sign --local-user %s --armor %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --sign --local-user %s --armor > %s/%s.asc",
+ dir, filename_rsa_armour_nopassphrase,
gpgcmd, alpha_name, dir, filename_rsa_armour_nopassphrase);
if (system(cmd))
{ return 1; }
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --sign --local-user %s --passphrase %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --sign --local-user %s --passphrase %s > %s/%s.gpg",
+ dir, filename_rsa_noarmour_passphrase,
gpgcmd, bravo_name, bravo_passphrase, dir, filename_rsa_noarmour_passphrase);
if (system(cmd))
{ return 1; }
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --sign --local-user %s --passphrase %s --armor %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --sign --local-user %s --passphrase %s --armor > %s/%s.asc",
+ dir, filename_rsa_armour_passphrase,
gpgcmd, bravo_name, bravo_passphrase, dir, filename_rsa_armour_passphrase);
if (system(cmd))
{ return 1; }
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --sign --local-user %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --sign --local-user %s > %s/%s.gpg",
+ dir, filename_rsa_noarmour_fail_bad_sig,
gpgcmd, alpha_name, dir, filename_rsa_noarmour_fail_bad_sig);
if (system(cmd))
{ return 1; }
// V3 signature
- snprintf(cmd,sizeof cmd,"%s --compress-level 0 --sign --force-v3-sigs --local-user %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --compress-level 0 --sign --force-v3-sigs --local-user %s > %s/%s.gpg",
+ dir, filename_rsa_v3sig,
gpgcmd, alpha_name, dir, filename_rsa_v3sig);
if (system(cmd))
{ return 1; }
// MD5 hash
- snprintf(cmd,sizeof cmd,"%s --compress-level 0 --sign --digest-algo \"MD5\" --local-user %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --compress-level 0 --sign --digest-algo \"MD5\" --local-user %s > %s/%s.gpg",
+ dir, filename_rsa_hash_md5,
gpgcmd, alpha_name, dir, filename_rsa_hash_md5);
if (system(cmd))
{ return 1; }
@@ -120,23 +127,26 @@
* Create CLEARSIGNED test files
*/
- create_testfile(filename_rsa_clearsign_nopassphrase);
- create_testfile(filename_rsa_clearsign_passphrase);
- create_testfile(filename_rsa_clearsign_fail_bad_sig);
+ create_small_testfile(filename_rsa_clearsign_nopassphrase);
+ create_small_testfile(filename_rsa_clearsign_passphrase);
+ create_small_testfile(filename_rsa_clearsign_fail_bad_sig);
// and sign them
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --clearsign --textmode --local-user %s --armor %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --clearsign --textmode --local-user %s --armor > %s/%s.asc",
+ dir, filename_rsa_clearsign_nopassphrase,
gpgcmd, alpha_name, dir, filename_rsa_clearsign_nopassphrase);
if (system(cmd))
{ return 1; }
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --clearsign --textmode --local-user %s --passphrase %s --armor %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --clearsign --textmode --local-user %s --passphrase %s --armor > %s/%s.asc",
+ dir, filename_rsa_clearsign_passphrase,
gpgcmd, bravo_name, bravo_passphrase, dir, filename_rsa_clearsign_passphrase);
if (system(cmd))
{ return 1; }
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-level 0 --clearsign --textmode --local-user %s --armor %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-level 0 --clearsign --textmode --local-user %s --armor > %s/%s.asc",
+ dir, filename_rsa_clearsign_fail_bad_sig,
gpgcmd, alpha_name, dir, filename_rsa_clearsign_fail_bad_sig);
if (system(cmd))
{ return 1; }
@@ -153,10 +163,11 @@
// unarmoured
snprintf(filename, sizeof filename, "%s_%d.txt",
filename_rsa_noarmour_compress_base, level);
- create_testfile(filename);
+ create_small_testfile(filename);
// just ZIP for now
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-algo \"ZIP\" --compress-level %d --sign --local-user %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-algo \"ZIP\" --compress-level %d --sign --local-user %s > %s/%s.gpg",
+ dir, filename,
gpgcmd, level, alpha_name, dir, filename);
if (system(cmd))
{
@@ -166,9 +177,10 @@
// armoured
snprintf(filename, sizeof filename, "%s_%d.txt",
filename_rsa_armour_compress_base, level);
- create_testfile(filename);
+ create_small_testfile(filename);
- snprintf(cmd,sizeof cmd,"%s --openpgp --compress-algo \"ZIP\" --compress-level %d --sign --armour --local-user %s %s/%s",
+ snprintf(cmd,sizeof cmd,"cat %s/%s | %s --openpgp --compress-algo \"ZIP\" --compress-level %d --sign --armour --local-user %s > %s/%s.asc",
+ dir, filename,
gpgcmd, level, alpha_name, dir, filename);
if (system(cmd))
{
Modified: openpgpsdk/trunk/tests/tests.h
===================================================================
--- openpgpsdk/trunk/tests/tests.h 2008-07-29 15:03:40 UTC (rev 571)
+++ openpgpsdk/trunk/tests/tests.h 2008-08-04 17:09:53 UTC (rev 572)
@@ -66,9 +66,11 @@
int mktmpdir();
extern char dir[];
-char* create_testtext(const char *text);
+char* create_testtext(const char *text, const unsigned int repeats);
void create_testdata(const char *text, unsigned char *buf, const int maxlen);
-void create_testfile(const char *name);
+void create_small_testfile(const char *name);
+void create_large_testfile(const char *name);
+void create_testfile(const char *name, const unsigned int repeats);
#define MAXBUF 1024
ops_parse_cb_return_t
More information about the OpenPGPsdk-svn
mailing list