Changeset 558

Show
Ignore:
Timestamp:
05/02/08 11:25:27
Author:
rachel
Message:

Implemented basic transferable public & secret keys (binary format).
Implemented key signing.
Renamed key_data struct to keydata.
Added tests for key generation and signing.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openpgpsdk/trunk/examples/build-keyring.c

    r436 r558  
    422422    ops_text_t *text; 
    423423    const char *str; 
    424     const ops_key_data_t *decrypter; 
     424    const ops_keydata_t *decrypter; 
    425425    const ops_secret_key_t *secret; 
    426426    static ops_boolean_t unarmoured; 
  • openpgpsdk/trunk/examples/decrypt.c

    r451 r558  
    2121    ops_parser_content_union_t* content=(ops_parser_content_union_t *)&content_->content; 
    2222    static ops_boolean_t skipping; 
    23     static const ops_key_data_t *decrypter; 
     23    static const ops_keydata_t *decrypter; 
    2424 
    2525    OPS_USED(cbinfo); 
     
    7878    case OPS_PARSER_CMD_GET_SECRET_KEY: 
    7979        printf("TBD: OPS_PARSER_CMD_GET_SECRET_KEY\n"); 
    80         const ops_key_data_t* key=ops_keyring_find_key_by_id(&keyring,content->get_secret_key.pk_session_key->key_id); 
     80        const ops_keydata_t* key=ops_keyring_find_key_by_id(&keyring,content->get_secret_key.pk_session_key->key_id); 
    8181        if (!key || !ops_key_is_secret(key)) 
    8282            return 0; 
  • openpgpsdk/trunk/examples/encrypt.c

    r444 r558  
    1111    const char *user_id; 
    1212    ops_keyring_t keyring; 
    13     const ops_key_data_t *key; 
     13    const ops_keydata_t *key; 
    1414    ops_create_info_t *info; 
    1515 
     
    3535    info = ops_create_info_new(); 
    3636    ops_writer_set_fd(info, 1);  // stdout for now 
    37     ops_writer_push_encrypt(info, key); 
     37    ops_writer_push_encrypt_keydata(info, key); 
    3838 
    3939    for( ; ; ) 
  • openpgpsdk/trunk/examples/packet-dump.c

    r548 r558  
    424424    ops_text_t *text; 
    425425    const char *str; 
    426     const ops_key_data_t *decrypter; 
     426    const ops_keydata_t *decrypter; 
    427427    const ops_secret_key_t *secret; 
    428428    static ops_boolean_t unarmoured; 
  • openpgpsdk/trunk/examples/sign-detached.c

    r371 r558  
    5151 
    5252    sig=ops_create_signature_new(); 
    53     ops_signature_start_plaintext_signature(sig,skey,alg,OPS_SIG_BINARY); 
     53    ops_signature_start_cleartext_signature(sig,skey,alg,OPS_SIG_BINARY); 
    5454 
    5555    fd=open(plainfile,O_RDONLY); 
  • openpgpsdk/trunk/examples/sign-inline.c

    r371 r558  
    5353 
    5454    sig=ops_create_signature_new(); 
    55     ops_signature_start_plaintext_signature(sig,skey,alg,OPS_SIG_BINARY); 
     55    ops_signature_start_cleartext_signature(sig,skey,alg,OPS_SIG_BINARY); 
    5656 
    5757    fd=open(sigfile,O_CREAT|O_TRUNC|O_WRONLY,0666); 
     
    6464    info=ops_create_info_new(); 
    6565    ops_writer_set_fd(info,fd); 
    66     ops_writer_push_dash_escaped(info,sig); 
     66    ops_writer_push_clearsigned(info,sig); 
    6767 
    6868    fd=open(plainfile,O_RDONLY); 
     
    9191    close(fd); 
    9292 
    93     ops_writer_switch_to_signature(info); 
     93    ops_writer_switch_to_armoured_signature(info); 
    9494 
    9595    ops_signature_add_creation_time(sig,time(NULL)); 
  • openpgpsdk/trunk/examples/verify2.c

    r397 r558  
    3232    { 
    3333    const ops_parser_content_union_t *content=&content_->content; 
    34     const ops_key_data_t *signer; 
     34    const ops_keydata_t *signer; 
    3535 
    3636    OPS_USED(cbinfo); 
  • openpgpsdk/trunk/include/openpgpsdk/create.h

    r557 r558  
    5959                               ops_create_info_t *opt); 
    6060ops_boolean_t ops_write_mpi(const BIGNUM *bn,ops_create_info_t *opt); 
     61ops_boolean_t ops_write_encrypted_mpi(const BIGNUM *bn, ops_crypt_t* crypt, ops_create_info_t *info); 
    6162ops_boolean_t ops_write_ss_header(unsigned length,ops_content_tag_t type, 
    6263                                  ops_create_info_t *opt); 
     
    8788                                    BIGNUM *n,BIGNUM *e); 
    8889ops_boolean_t ops_write_struct_secret_key(const ops_secret_key_t *key, 
     90                                          const unsigned char* passphrase, 
     91                                          const size_t pplen, 
    8992                                          ops_create_info_t *info); 
    9093 
     
    120123ops_boolean_t ops_write_one_pass_sig(const ops_secret_key_t* skey, const ops_hash_algorithm_t hash_alg, const ops_sig_type_t sig_type, ops_create_info_t* info); 
    121124 
     125ops_boolean_t ops_write_transferable_public_key(const ops_keydata_t *key, ops_create_info_t *info); 
     126ops_boolean_t ops_write_transferable_secret_key(const ops_keydata_t *key, const unsigned char* passphrase, size_t pplen, ops_create_info_t *info); 
     127 
    122128#endif 
  • openpgpsdk/trunk/include/openpgpsdk/crypto.h

    r557 r558  
    129129int ops_decrypt_and_unencode_mpi(unsigned char *buf,unsigned buflen,const BIGNUM *encmpi, 
    130130                    const ops_secret_key_t *skey); 
    131 ops_boolean_t ops_encrypt_mpi(const unsigned char *buf, const size_t buflen, 
     131ops_boolean_t ops_rsa_encrypt_mpi(const unsigned char *buf, const size_t buflen, 
    132132                              const ops_public_key_t *pkey, 
    133133                              ops_pk_session_key_parameters_t *spk); 
     
    142142 
    143143// Keys 
    144 ops_boolean_t ops_generate_rsa_keypair(const int numbits, const unsigned long e, ops_secret_key_t* skey); 
     144ops_boolean_t ops_rsa_generate_keypair(const int numbits, const unsigned long e, ops_keydata_t* keydata); 
     145ops_keydata_t* ops_rsa_create_selfsigned_keypair(const int numbits, const unsigned long e, ops_user_id_t * userid); 
    145146 
    146147#endif 
  • openpgpsdk/trunk/include/openpgpsdk/keyring.h

    r557 r558  
    66 
    77#include "packet.h" 
     8#include "memory.h" 
    89 
    910typedef struct ops_keydata ops_keydata_t; 
     
    3435const ops_secret_key_t * 
    3536ops_get_secret_key_from_data(const ops_keydata_t *data); 
     37ops_secret_key_t * 
     38ops_get_writable_secret_key_from_data(ops_keydata_t *data); 
    3639ops_secret_key_t *ops_decrypt_secret_key_from_data(const ops_keydata_t *key, 
    3740                                                   const char *pphrase); 
     
    5255const ops_keydata_t* ops_keyring_get_key(const ops_keyring_t *keyring, int index); 
    5356 
     57ops_user_id_t* ops_add_userid_to_keydata(ops_keydata_t* keydata, const ops_user_id_t* userid); 
     58ops_packet_t* ops_add_packet_to_keydata(ops_keydata_t* keydata, const ops_packet_t* packet); 
     59void ops_add_signed_userid_to_keydata(ops_keydata_t* keydata, const ops_user_id_t* userid, const ops_packet_t* packet); 
     60 
     61ops_boolean_t ops_add_selfsigned_userid_to_keydata(ops_keydata_t* keydata, ops_user_id_t* userid); 
     62 
     63ops_keydata_t *ops_keydata_new(void); 
     64void ops_keydata_init(ops_keydata_t* keydata, const ops_content_tag_t type); 
     65 
    5466#endif 
  • openpgpsdk/trunk/include/openpgpsdk/readerwriter.h

    r557 r558  
    3939void ops_writer_push_encrypt_se_ip(ops_create_info_t *cinfo, 
    4040                                   const ops_keydata_t *pub_key); 
     41// Secret Key checksum 
     42 
     43void ops_push_skey_checksum_writer(ops_create_info_t *cinfo, ops_secret_key_t *skey); 
     44ops_boolean_t ops_pop_skey_checksum_writer(ops_create_info_t *cinfo); 
    4145 
    4246 
    43 // 
     47// memory writing 
    4448void ops_setup_memory_write(ops_create_info_t **cinfo, ops_memory_t **mem, size_t bufsz); 
    4549void ops_teardown_memory_write(ops_create_info_t *cinfo, ops_memory_t *mem); 
    4650 
     51// memory reading 
    4752void ops_setup_memory_read(ops_parse_info_t **pinfo, ops_memory_t *mem, 
    4853                              ops_parse_cb_return_t callback(const ops_parser_content_t *, ops_parse_cb_info_t *)); 
    4954void ops_teardown_memory_read(ops_parse_info_t *pinfo, ops_memory_t *mem); 
    5055 
     56// file writing 
     57int ops_setup_file_write(ops_create_info_t **cinfo, char* filename); 
     58void ops_teardown_file_write(ops_create_info_t *cinfo, int fd); 
     59 
     60// file reading 
     61int ops_setup_file_read(ops_parse_info_t **pinfo, char *filename, void* arg, 
     62                        ops_parse_cb_return_t callback(const ops_parser_content_t *, ops_parse_cb_info_t *), ops_boolean_t accumulate); 
     63void ops_teardown_file_read(ops_parse_info_t *pinfo, int fd); 
     64 
    5165#endif /*OPS_READERWRITER_H__*/ 
  • openpgpsdk/trunk/include/openpgpsdk/std_print.h

    r557 r558  
    1313void ops_print_pk_session_key(ops_content_tag_t tag, 
    1414                          const ops_pk_session_key_t *key); 
    15 void ops_print_public_key(const ops_keydata_t *key); 
     15void ops_print_public_keydata(const ops_keydata_t *key); 
    1616 
    17 void ops_print_public_key_verbose(const ops_keydata_t *key); 
     17void ops_print_public_keydata_verbose(const ops_keydata_t *key); 
     18void ops_print_public_key_t(const ops_public_key_t *pkey); 
    1819 
    19 void ops_print_secret_key(const ops_keydata_t *key); 
    20 void ops_print_secret_key_verbose(const ops_keydata_t *key); 
    21  
     20void ops_print_secret_keydata(const ops_keydata_t *key); 
     21void ops_print_secret_keydata_verbose(const ops_keydata_t *key); 
     22void ops_print_secret_key(const ops_content_tag_t type, const ops_secret_key_t* skey); 
    2223int ops_print_packet(const ops_parser_content_t *content_); 
    2324#endif 
  • openpgpsdk/trunk/include/openpgpsdk/validate.h

    r557 r558  
    1111void ops_validate_result_free(ops_validate_result_t *result); 
    1212 
     13void ops_validate_key_signatures(ops_validate_result_t *result, 
     14                                 const ops_keydata_t* keydata, 
     15                                 const ops_keyring_t *ring, 
     16                                 ops_parse_cb_return_t cb (const ops_parser_content_t *, ops_parse_cb_info_t *)); 
    1317void ops_validate_all_signatures(ops_validate_result_t *result, 
    14                                  const ops_keyring_t *ring); 
     18                                 const ops_keyring_t *ring, 
     19                                 ops_parse_cb_return_t (const ops_parser_content_t *, ops_parse_cb_info_t *)); 
     20 
    1521void ops_keydata_reader_set(ops_parse_info_t *pinfo, 
    1622                             const ops_keydata_t *key); 
     
    2733    ops_public_key_t pkey; 
    2834    ops_public_key_t subkey; 
     35    ops_secret_key_t skey; 
    2936    enum 
    3037        { 
    31         ATTRIBUTE
     38        ATTRIBUTE=1
    3239        ID, 
    3340        } last_seen; 
     
    3845    validate_reader_arg_t *rarg; 
    3946    ops_validate_result_t *result; 
     47    ops_parse_cb_return_t (*cb_get_passphrase) (const ops_parser_content_t *, ops_parse_cb_info_t *); 
    4048    } validate_key_cb_arg_t; 
    4149 
     
    6270                                  const ops_signature_t *sig, 
    6371                                  const ops_public_key_t *signer); 
     72ops_parse_cb_return_t 
     73ops_validate_key_cb(const ops_parser_content_t *content_,ops_parse_cb_info_t *cbinfo); 
     74 
    6475// EOF 
  • openpgpsdk/trunk/plan/OpenPGP.omniplan/contents.xml

    r551 r558  
    3131                        <false/> 
    3232                        <key>GanttVisibleRect</key> 
    33                         <string>{{762, 0}, {614, 740}}</string> 
     33                        <string>{{-35, 1318}, {614, 740}}</string> 
    3434                        <key>OutlineVisibleRect</key> 
    35                         <string>{{0, 0}, {802, 740}}</string> 
     35                        <string>{{0, 1318}, {802, 740}}</string> 
    3636                        <key>ScaleWidths</key> 
    3737                        <dict> 
     
    8989                        <dict> 
    9090                                <key>OutlineVisibleRect</key> 
    91                                 <string>{{0, 0}, {323, 453}}</string> 
     91                                <string>{{0, 0}, {440, 553}}</string> 
    9292                                <key>activeColumnIdentifiers</key> 
    9393                                <array> 
     
    104104                                        <real>20</real> 
    105105                                        <key>Resource</key> 
    106                                         <real>297</real> 
     106                                        <real>347</real> 
    107107                                        <key>Type</key> 
    108108                                        <real>48</real> 
     
    110110                        </dict> 
    111111                        <key>calendarSplit</key> 
    112                         <real>0.68203198909759521</real> 
     112                        <real>0.6820405125617981</real> 
    113113                        <key>columnWidths</key> 
    114114                        <dict> 
     
    169169                                <string>Automatic</string> 
    170170                                <key>TimelineVisibleRect</key> 
    171                                 <string>{{-227, 330}, {959, 740}}</string> 
     171                                <string>{{1003, 670}, {959, 740}}</string> 
    172172                                <key>activeColumnIdentifiers</key> 
    173173                                <array> 
     
    253253                <key>NSScalingFactor</key> 
    254254                <real>1</real> 
     255                <key>OPPrintSettingPrintDisplayOption</key> 
     256                <integer>0</integer> 
     257                <key>OPPrintSettingPrintOption</key> 
     258                <integer>2</integer> 
    255259        </dict> 
    256260        <key>projectUserKeys</key> 
     
    594598        <dict> 
    595599                <key>nextId</key> 
    596                 <integer>215</integer> 
     600                <integer>239</integer> 
    597601        </dict> 
    598602        <key>taskUserKeys</key> 
     
    730734                                <integer>184</integer> 
    731735                                <integer>201</integer> 
     736                                <integer>231</integer> 
     737                                <integer>232</integer> 
     738                                <integer>233</integer> 
    732739                        </array> 
    733740                        <key>objectId</key> 
     
    963970                                <integer>166</integer> 
    964971                        </array> 
    965                         <key>isExpanded</key> 
    966                         <false/> 
    967972                        <key>objectId</key> 
    968973                        <integer>12</integer> 
     
    10971102                        </array> 
    10981103                        <key>desiredStart</key> 
    1099                         <string>20080521090000</string> 
    1100                         <key>effort</key> 
     1104                        <string>20080516160000</string> 
     1105                        <key>doneSeconds</key> 
     1106                        <real>57600</real> 
     1107                        <key>effort</key> 
     1108                        <real>28800</real> 
     1109                        <key>effortDone</key> 
    11011110                        <real>28800</real> 
    11021111                        <key>objectId</key> 
    11031112                        <integer>19</integer> 
    1104                         <key>prerequisites</key> 
    1105                         <array> 
    1106                                 <dict> 
    1107                                         <key>id</key> 
    1108                                         <integer>191</integer> 
    1109                                         <key>isResource</key> 
    1110                                         <string>YES</string> 
    1111                                         <key>kind</key> 
    1112                                         <integer>2</integer> 
    1113                                 </dict> 
    1114                         </array> 
    11151113                        <key>task</key> 
    11161114                        <string>Create Key Pair</string> 
     1115                        <key>workDone</key> 
     1116                        <real>16</real> 
    11171117                        <key>workSeconds</key> 
    11181118                        <real>57600</real> 
     
    11271127                                <integer>122</integer> 
    11281128                                <integer>123</integer> 
    1129                         </array> 
    1130                         <key>isExpanded</key> 
    1131                         <false/> 
     1129                                <integer>236</integer> 
     1130                        </array> 
    11321131                        <key>objectId</key> 
    11331132                        <integer>20</integer> 
     
    11601159                                </dict> 
    11611160                        </array> 
     1161                        <key>completionPercentage</key> 
     1162                        <real>1</real> 
    11621163                        <key>effort</key> 
    11631164                        <real>0.0</real> 
     
    11771178                                </dict> 
    11781179                        </array> 
     1180                        <key>completionPercentage</key> 
     1181                        <real>1</real> 
    11791182                        <key>effort</key> 
    11801183                        <real>0.0</real> 
     
    11901193                                <integer>57</integer> 
    11911194                                <integer>28</integer> 
     1195                                <integer>223</integer> 
    11921196                                <integer>203</integer> 
    11931197                        </array> 
     
    13031307                                </dict> 
    13041308                        </array> 
     1309                        <key>completionPercentage</key> 
     1310                        <real>1</real> 
    13051311                        <key>effort</key> 
    13061312                        <real>0.0</real> 
     
    14511457                                </dict> 
    14521458                        </array> 
     1459                        <key>completionPercentage</key> 
     1460                        <real>1</real> 
    14531461                        <key>effort</key> 
    14541462                        <real>0.0</real> 
     
    14781486                        </array> 
    14791487                        <key>desiredStart</key> 
    1480                         <string>20080408160000</string> 
    1481                         <key>effort</key> 
     1488                        <string>20080402160000</string> 
     1489                        <key>doneSeconds</key> 
     1490                        <real>7200</real> 
     1491                        <key>effort</key> 
     1492                        <real>3600</real> 
     1493                        <key>effortDone</key> 
    14821494                        <real>3600</real> 
    14831495                        <key>objectId</key> 
     
    14911503                                        <integer>2</integer> 
    14921504                                </dict> 
    1493                                 <dict> 
    1494                                         <key>id</key> 
    1495                                         <integer>166</integer> 
    1496                                         <key>isResource</key> 
    1497                                         <string>YES</string> 
    1498                                         <key>kind</key> 
    1499                                         <integer>2</integer> 
    1500                                 </dict> 
    15011505                        </array> 
    15021506                        <key>task</key> 
    15031507                        <string>Armoured/No Passphrase</string> 
    1504                         <key>workSeconds</key> 
    1505                         <real>7200</real> 
    1506                         <key>workTime</key> 
    1507                         <real>2</real> 
    1508                 </dict> 
    1509                 <dict> 
    1510                         <key>assignments</key> 
    1511                         <array> 
    1512                                 <dict> 
    1513                                         <key>id</key> 
    1514                                         <integer>1</integer> 
    1515                                         <key>units</key> 
    1516                                         <real>0.5</real> 
    1517                                 </dict> 
    1518                         </array> 
    1519                         <key>desiredStart</key> 
    1520                         <string>20080501110000</string> 
    1521                         <key>effort</key> 
     1508                        <key>workDone</key> 
     1509                        <real>2</real> 
     1510                        <key>workSeconds</key> 
     1511                        <real>7200</real> 
     1512                        <key>workTime</key> 
     1513                        <real>2</real> 
     1514                </dict> 
     1515                <dict> 
     1516                        <key>assignments</key> 
     1517                        <array> 
     1518                                <dict> 
     1519                                        <key>id</key> 
     1520                                        <integer>1</integer> 
     1521                                        <key>units</key> 
     1522                                        <real>0.5</real> 
     1523                                </dict> 
     1524                        </array> 
     1525                        <key>desiredStart</key> 
     1526                        <string>20080403090000</string> 
     1527                        <key>doneSeconds</key> 
     1528                        <real>7200</real> 
     1529                        <key>effort</key> 
     1530                        <real>3600</real> 
     1531                        <key>effortDone</key> 
    15221532                        <real>3600</real> 
    15231533                        <key>objectId</key> 
     
    15271537                                <dict> 
    15281538                                        <key>id</key> 
    1529                                         <integer>91</integer> 
    1530                                         <key>isResource</key> 
    1531                                         <string>YES</string> 
    1532                                         <key>kind</key> 
    1533                                         <integer>2</integer> 
    1534                                 </dict> 
    1535                                 <dict> 
    1536                                         <key>id</key> 
    15371539                                        <integer>104</integer> 
    15381540                                        <key>kind</key> 
     
    15421544                        <key>task</key> 
    15431545                        <string>Unarmoured/Passphrase</string> 
    1544                         <key>workSeconds</key> 
    1545                         <real>7200</real> 
    1546                         <key>workTime</key> 
    1547                         <real>2</real> 
    1548                 </dict> 
    1549                 <dict> 
    1550                         <key>assignments</key> 
    1551                         <array> 
    1552                                 <dict> 
    1553                                         <key>id</key> 
    1554                                         <integer>1</integer> 
    1555                                         <key>units</key> 
    1556                                         <real>0.5</real> 
    1557                                 </dict> 
    1558                         </array> 
    1559                         <key>desiredStart</key> 
    1560                         <string>20080501140000</string> 
    1561                         <key>effort</key> 
     1546                        <key>workDone</key> 
     1547                        <real>2</real> 
     1548                        <key>workSeconds</key> 
     1549                        <real>7200</real> 
     1550                        <key>workTime</key> 
     1551                        <real>2</real> 
     1552                </dict> 
     1553                <dict> 
     1554                        <key>assignments</key> 
     1555                        <array> 
     1556                                <dict> 
     1557                                        <key>id</key> 
     1558                                        <integer>1</integer> 
     1559                                        <key>units</key> 
     1560                                        <real>0.5</real> 
     1561                                </dict> 
     1562                        </array> 
     1563                        <key>desiredStart</key> 
     1564                        <string>20080403110000</string> 
     1565                        <key>doneSeconds</key> 
     1566                        <real>7200</real> 
     1567                        <key>effort</key> 
     1568                        <real>3600</real> 
     1569                        <key>effortDone</key> 
    15621570                        <real>3600</real> 
    15631571                        <key>objectId</key> 
     
    15671575                                <dict> 
    15681576                                        <key>id</key> 
    1569                                         <integer>49</integer> 
    1570                                         <key>isResource</key> 
    1571                                         <string>YES</string> 
    1572                                         <key>kind</key> 
    1573                                         <integer>2</integer> 
    1574                                 </dict> 
    1575                                 <dict> 
    1576                                         <key>id</key> 
    15771577                                        <integer>101</integer> 
    15781578                                        <key>kind</key> 
     
    15821582                        <key>task</key> 
    15831583                        <string>Armoured/Passphrase</string> 
     1584                        <key>workDone</key> 
     1585                        <real>2</real> 
    15841586                        <key>workSeconds</key> 
    15851587                        <real>7200</real> 
     
    16211623                                </dict> 
    16221624                        </array> 
     1625                        <key>completionPercentage</key> 
     1626                        <real>1</real> 
    16231627                        <key>effort</key> 
    16241628                        <real>0.0</real> 
     
    16481652                        </array> 
    16491653                        <key>desiredStart</key> 
    1650                         <string>20080501160000</string> 
    1651                         <key>effort</key> 
     1654                        <string>20080425160000</string> 
     1655                        <key>doneSeconds</key> 
     1656                        <real>7200</real> 
     1657                        <key>effort</key> 
     1658                        <real>3600</real> 
     1659                        <key>effortDone</key> 
    16521660                        <real>3600</real> 
    16531661                        <key>objectId</key> 
     
    16571665                                <dict> 
    16581666                                        <key>id</key> 
    1659                                         <integer>50</integer> 
    1660                                         <key>isResource</key> 
    1661                                         <string>YES</string> 
    1662                                         <key>kind</key> 
    1663                                         <integer>2</integer> 
    1664                                 </dict> 
    1665                                 <dict> 
    1666                                         <key>id</key> 
    16671667                                        <integer>101</integer> 
    16681668                                        <key>kind</key> 
     
    16721672                        <key>task</key> 
    16731673                        <string>Armoured/No Passphrase</string> 
    1674                         <key>workSeconds</key> 
    1675                         <real>7200</real> 
    1676                         <key>workTime</key> 
    1677                         <real>2</real> 
    1678                 </dict> 
    1679                 <dict> 
    1680                         <key>assignments</key> 
    1681                         <array> 
    1682                                 <dict> 
    1683                                         <key>id</key> 
    1684                                         <integer>1</integer> 
    1685                                         <key>units</key> 
    1686                                         <real>0.5</real> 
    1687                                 </dict> 
    1688                         </array> 
    1689                         <key>desiredStart</key> 
    1690                         <string>20080502090000</string> 
    1691                         <key>effort</key> 
     1674                        <key>workDone</key> 
     1675                        <real>2</real> 
     1676                        <key>workSeconds</key> 
     1677                        <real>7200</real> 
     1678                        <key>workTime</key> 
     1679                        <real>2</real> 
     1680                </dict> 
     1681                <dict> 
     1682                        <key>assignments</key> 
     1683                        <array> 
     1684                                <dict> 
     1685                                        <key>id</key> 
     1686                                        <integer>1</integer> 
     1687                                        <key>units</key> 
     1688                                        <real>0.5</real> 
     1689                                </dict> 
     1690                        </array> 
     1691                        <key>desiredStart</key> 
     1692                        <string>20080428090000</string> 
     1693                        <key>doneSeconds</key> 
     1694                        <real>7200</real> 
     1695                        <key>effort</key> 
     1696                        <real>3600</real> 
     1697                        <key>effortDone</key> 
    16921698                        <real>3600</real> 
    16931699                        <key>objectId</key> 
     
    16971703                                <dict> 
    16981704                                        <key>id</key> 
    1699                                         <integer>53</integer> 
    1700                                         <key>isResource</key> 
    1701                                         <string>YES</string> 
    1702                                         <key>kind</key> 
    1703                                         <integer>2</integer> 
    1704                                 </dict> 
    1705                                 <dict> 
    1706                                         <key>id</key> 
    17071705                                        <integer>104</integer> 
    17081706                                        <key>kind</key> 
     
    17121710                        <key>task</key> 
    17131711                        <string>Unarmoured/Passphrase</string> 
    1714                         <key>workSeconds</key> 
    1715                         <real>7200</real> 
    1716                         <key>workTime</key> 
    1717                         <real>2</real> 
    1718                 </dict> 
    1719                 <dict> 
    1720                         <key>assignments</key> 
    1721                         <array> 
    1722                                 <dict> 
    1723                                         <key>id</key> 
    1724                                         <integer>1</integer> 
    1725                                         <key>units</key> 
    1726                                         <real>0.5</real> 
    1727                                 </dict> 
    1728                         </array> 
    1729                         <key>desiredStart</key> 
    1730                         <string>20080502110000</string> 
    1731                         <key>effort</key> 
     1712                        <key>workDone</key> 
     1713                        <real>2</real> 
     1714                        <key>workSeconds</key> 
     1715                        <real>7200</real> 
     1716                        <key>workTime</key> 
     1717                        <real>2</real> 
     1718                </dict> 
     1719                <dict> 
     1720                        <key>assignments</key> 
     1721                        <array> 
     1722                                <dict> 
     1723                                        <key>id</key> 
     1724                                        <integer>1</integer> 
     1725                                        <key>units</key> 
     1726                                        <real>0.5</real> 
     1727                                </dict> 
     1728                        </array> 
     1729                        <key>desiredStart</key> 
     1730                        <string>20080428110000</string> 
     1731                        <key>doneSeconds</key> 
     1732                        <real>7200</real> 
     1733                        <key>effort</key> 
     1734                        <real>3600</real> 
     1735                        <key>effortDone</key> 
    17321736                        <real>3600</real> 
    17331737                        <key>objectId</key> 
     
    17371741                                <dict> 
    17381742                                        <key>id</key> 
    1739                                         <integer>54</integer> 
    1740                                         <key>isResource</key> 
    1741                                         <string>YES</string> 
    1742                                         <key>kind</key> 
    1743                                         <integer>2</integer> 
    1744                                 </dict> 
    1745                                 <dict> 
    1746                                         <key>id</key> 
    17471743                                        <integer>101</integer> 
    17481744                                        <key>kind</key> 
     
    17521748                        <key>task</key> 
    17531749                        <string>Armoured/Passphrase</string> 
     1750                        <key>workDone</key> 
     1751                        <real>2</real> 
    17541752                        <key>workSeconds</key> 
    17551753                        <real>7200</real> 
     
    18061804                                </dict> 
    18071805                        </array> 
     1806                        <key>completionPercentage</key> 
     1807                        <real>1</real> 
    18081808                        <key>effort</key> 
    18091809                        <real>0.0</real> 
     
    18261826                        </array> 
    18271827                        <key>desiredStart</key> 
    1828                         <string>20080618110000</string> 
    1829                         <key>effort</key> 
     1828                        <string>20080611110000</string> 
     1829                        <key>doneSeconds</key> 
     1830                        <real>7200</real> 
     1831                        <key>effort</key> 
     1832                        <real>3600</real> 
     1833                        <key>effortDone</key> 
    18301834                        <real>3600</real> 
    18311835                        <key>objectId</key> 
    18321836                        <integer>59</integer> 
    1833                         <key>prerequisites</key> 
    1834                         <array> 
    1835                                 <dict> 
    1836                                         <key>id</key> 
    1837                                         <integer>60</integer> 
    1838                                         <key>isResource</key> 
    1839                                         <string>YES</string> 
    1840                                         <key>kind</key> 
    1841                                         <integer>2</integer> 
    1842                                 </dict> 
    1843                         </array> 
    18441837                        <key>task</key> 
    18451838                        <string>Armoured/No Passphrase</string> 
    1846                         <key>workSeconds</key> 
    1847                         <real>7200</real> 
    1848                         <key>workTime</key> 
    1849                         <real>2</real> 
    1850                 </dict> 
    1851                 <dict> 
    1852                         <key>assignments</key> 
    1853                         <array> 
    1854                                 <dict> 
    1855                                         <key>id</key> 
    1856                                         <integer>1</integer> 
    1857                                         <key>units</key> 
    1858                                         <real>0.5</real> 
    1859                                 </dict> 
    1860                         </array> 
    1861                         <key>desiredStart</key> 
    1862                         <string>20080618090000</string> 
    1863                         <key>effort</key> 
     1839                        <key>workDone</key> 
     1840                        <real>2</real> 
     1841                        <key>workSeconds</key> 
     1842                        <real>7200</real> 
     1843                        <key>workTime</key> 
     1844                        <real>2</real> 
     1845                </dict> 
     1846                <dict> 
     1847                        <key>assignments</key> 
     1848                        <array> 
     1849                                <dict> 
     1850                                        <key>id</key> 
     1851                                        <integer>1</integer> 
     1852                                        <key>units</key> 
     1853                                        <real>0.5</real> 
     1854                                </dict> 
     1855                        </array> 
     1856                        <key>desiredStart</key> 
     1857                        <string>20080611090000</string> 
     1858                        <key>doneSeconds</key> 
     1859                        <real>7200</real> 
     1860                        <key>effort</key> 
     1861                        <real>3600</real> 
     1862                        <key>effortDone</key> 
    18641863                        <real>3600</real> 
    18651864                        <key>objectId</key> 
    18661865                        <integer>60</integer> 
    1867                         <key>prerequisites</key> 
    1868                         <array> 
    1869                                 <dict> 
    1870                                         <key>id</key> 
    1871                                         <integer>200</integer> 
    1872                                         <key>isResource</key> 
    1873                                         <string>YES</string> 
    1874                                         <key>kind</key> 
    1875                                         <integer>2</integer> 
    1876                                 </dict> 
    1877                         </array> 
    18781866                        <key>task</key> 
    18791867                        <string>Unarmoured/Passphrase</string> 
    1880                         <key>workSeconds</key> 
    1881                         <real>7200</real> 
    1882                         <key>workTime</key> 
    1883                         <real>2</real> 
    1884                 </dict> 
    1885                 <dict> 
    1886                         <key>assignments</key> 
    1887                         <array> 
    1888                                 <dict> 
    1889                                         <key>id</key> 
    1890                                         <integer>1</integer> 
    1891                                         <key>units</key> 
    1892                                         <real>0.5</real> 
    1893                                 </dict> 
    1894                         </array> 
    1895                         <key>desiredStart</key> 
    1896                         <string>20080618140000</string> 
    1897                         <key>effort</key> 
     1868                        <key>workDone</key> 
     1869                        <real>2</real> 
     1870                        <key>workSeconds</key> 
     1871                        <real>7200</real> 
     1872                        <key>workTime</key> 
     1873                        <real>2</real> 
     1874                </dict> 
     1875                <dict> 
     1876                        <key>assignments</key> 
     1877                        <array> 
     1878                                <dict> 
     1879                                        <key>id</key> 
     1880                                        <integer>1</integer> 
     1881                                        <key>units</key> 
     1882                                        <real>0.5</real> 
     1883                                </dict> 
     1884                        </array> 
     1885                        <key>desiredStart</key> 
     1886                        <string>20080611140000</string> 
     1887                        <key>doneSeconds</key> 
     1888                        <real>7200</real> 
     1889                        <key>effort</key> 
     1890                        <real>3600</real> 
     1891                        <key>effortDone</key> 
    18981892                        <real>3600</real> 
    18991893                        <key>objectId</key> 
    19001894                        <integer>61</integer> 
    1901                         <key>prerequisites</key> 
    1902                         <array> 
    1903                                 <dict> 
    1904                                         <key>id</key> 
    1905                                         <integer>59</integer> 
    1906                                         <key>isResource</key> 
    1907                                         <string>YES</string> 
    1908                                         <key>kind</key> 
    1909                                         <integer>2</integer> 
    1910                                 </dict> 
    1911                         </array> 
    19121895                        <key>task</key> 
    19131896                        <string>Armoured/Passphrase</string> 
    1914                         <key>workSeconds</key> 
    1915                         <real>7200</real> 
    1916                         <key>workTime</key> 
    1917                         <real>2</real> 
    1918                 </dict> 
    1919                 <dict> 
    1920                         <key>assignments</key> 
    1921                         <array> 
    1922                                 <dict> 
    1923                                         <key>id</key> 
    1924                                         <integer>1</integer> 
    1925                                         <key>units</key> 
    1926                                         <real>0.5</real> 
    1927                                 </dict> 
    1928                         </array> 
     1897                        <key>workDone</key> 
     1898                        <real>2</real> 
     1899                        <key>workSeconds</key> 
     1900                        <real>7200</real> 
     1901                        <key>workTime</key> 
     1902                        <real>2</real> 
     1903                </dict> 
     1904                <dict> 
     1905                        <key>assignments</key> 
     1906                        <array> 
     1907                                <dict> 
     1908                                        <key>id</key> 
     1909                                        <integer>1</integer> 
     1910                                        <key>units</key> 
     1911                                        <real>0.5</real> 
     1912                                </dict> 
     1913                        </array> 
     1914                        <key>completionPercentage</key> 
     1915                        <real>1</real> 
    19291916                        <key>effort</key> 
    19301917                        <real>0.0</real> 
     
    20332020                                </dict> 
    20342021                        </array> 
     2022                        <key>completionPercentage</key> 
     2023                        <real>1</real> 
    20352024                        <key>effort</key> 
    20362025                        <real>0.0</real> 
     
    20532042                        </array> 
    20542043                        <key>desiredStart</key> 
    2055                         <string>20080619090000</string> 
    2056                         <key>effort</key> 
     2044                        <string>20080612090000</string> 
     2045                        <key>doneSeconds</key> 
     2046                        <real>7200</real> 
     2047                        <key>effort</key> 
     2048                        <real>3600</real> 
     2049                        <key>effortDone</key> 
    20572050                        <real>3600</real> 
    20582051                        <key>objectId</key> 
    20592052                        <integer>68</integer> 
    2060                         <key>prerequisites</key> 
    2061                         <array> 
    2062                                 <dict> 
    2063                                         <key>id</key> 
    2064                                         <integer>69</integer> 
    2065                                         <key>isResource</key> 
    2066                                         <string>YES</string> 
    2067                                         <key>kind</key> 
    2068                                         <integer>2</integer> 
    2069                                 </dict> 
    2070                         </array> 
    20712053                        <key>task</key> 
    20722054                        <string>Armoured/No Passphrase</string> 
    2073                         <key>workSeconds</key> 
    2074                         <real>7200</real> 
    2075                         <key>workTime</key> 
    2076                         <real>2</real> 
    2077                 </dict> 
    2078                 <dict> 
    2079                         <key>assignments</key> 
    2080                         <array> 
    2081                                 <dict> 
    2082                                         <key>id</key> 
    2083                                         <integer>1</integer> 
    2084                                         <key>units</key> 
    2085                                         <real>0.5</real> 
    2086                                 </dict> 
    2087                         </array> 
    2088                         <key>desiredStart</key> 
    2089                         <string>20080618160000</string> 
    2090                         <key>effort</key> 
     2055                        <key>workDone</key> 
     2056                        <real>2</real> 
     2057                        <key>workSeconds</key> 
     2058                        <real>7200</real> 
     2059                        <key>workTime</key> 
     2060                        <real>2</real> 
     2061                </dict> 
     2062                <dict> 
     2063                        <key>assignments</key> 
     2064                        <array> 
     2065                                <dict> 
     2066                                        <key>id</key> 
     2067                                        <integer>1</integer> 
     2068                                        <key>units</key> 
     2069                                        <real>0.5</real> 
     2070                                </dict> 
     2071                        </array> 
     2072                        <key>desiredStart</key> 
     2073                        <string>20080611160000</string> 
     2074                        <key>doneSeconds</key> 
     2075                        <real>7200</real> 
     2076                        <key>effort</key> 
     2077                        <real>3600</real> 
     2078                        <key>effortDone</key> 
    20912079                        <real>3600</real> 
    20922080                        <key>objectId</key> 
    20932081                        <integer>69</integer> 
    2094                         <key>prerequisites</key> 
    2095                         <array> 
    2096                                 <dict> 
    2097                                         <key>id</key> 
    2098                                         <integer>61</integer> 
    2099                                         <key>isResource</key> 
    2100                                         <string>YES</string> 
    2101                                         <key>kind</key> 
    2102                                         <integer>2</integer> 
    2103                                 </dict> 
    2104                         </array> 
    21052082                        <key>task</key> 
    21062083                        <string>Unarmoured/Passphrase</string> 
    2107                         <key>workSeconds</key> 
    2108                         <real>7200</real> 
    2109                         <key>workTime</key> 
    2110                         <real>2</real> 
    2111                 </dict> 
    2112                 <dict> 
    2113                         <key>assignments</key> 
    2114                         <array> 
    2115                                 <dict> 
    2116                                         <key>id</key> 
    2117                                         <integer>1</integer> 
    2118                                         <key>units</key> 
    2119                                         <real>0.5</real> 
    2120                                 </dict> 
    2121                         </array> 
    2122                         <key>desiredStart</key> 
    2123                         <string>20080619110000</string> 
    2124                         <key>effort</key> 
     2084                        <key>workDone</key> 
     2085                        <real>2</real> 
     2086                        <key>workSeconds</key> 
     2087                        <real>7200</real> 
     2088                        <key>workTime</key> 
     2089                        <real>2</real> 
     2090                </dict> 
     2091                <dict> 
     2092                        <key>assignments</key> 
     2093                        <array> 
     2094                                <dict> 
     2095                                        <key>id</key> 
     2096                                        <integer>1</integer> 
     2097                                        <key>units</key> 
     2098                                        <real>0.5</real> 
     2099                                </dict> 
     2100                        </array> 
     2101                        <key>desiredStart</key> 
     2102                        <string>20080612110000</string> 
     2103                        <key>doneSeconds</key> 
     2104                        <real>7200</real> 
     2105                        <key>effort</key> 
     2106                        <real>3600</real> 
     2107                        <key>effortDone</key> 
    21252108                        <real>3600</real> 
    21262109                        <key>objectId</key> 
    21272110                        <integer>70</integer> 
    2128                         <key>prerequisites</key> 
    2129                         <array> 
    2130                                 <dict> 
    2131                                         <key>id</key> 
    2132                                         <integer>68</integer> 
    2133                                         <key>isResource</key> 
    2134                                         <string>YES</string> 
    2135                                         <key>kind</key> 
    2136                                         <integer>2</integer> 
    2137                                 </dict> 
    2138                         </array> 
    21392111                        <key>task</key> 
    21402112                        <string>Armoured/Passphrase</string> 
    2141                         <key>workSeconds</key> 
    2142                         <real>7200</real> 
    2143                         <key>workTime</key> 
    2144                         <real>2</real> 
    2145                 </dict> 
    2146                 <dict> 
    2147                         <key>assignments</key> 
    2148                         <array> 
    2149                                 <dict> 
    2150                                         <key>id</key> 
    2151                                         <integer>1</integer> 
    2152                                         <key>units</key> 
    2153                                         <real>0.5</real> 
    2154                                 </dict> 
    2155                         </array> 
     2113                        <key>workDone</key> 
     2114                        <real>2</real> 
     2115                        <key>workSeconds</key> 
     2116                        <real>7200</real> 
     2117                        <key>workTime</key> 
     2118                        <real>2</real> 
     2119                </dict> 
     2120                <dict> 
     2121                        <key>assignments</key> 
     2122                        <array> 
     2123                                <dict> 
     2124                                        <key>id</key> 
     2125                                        <integer>1</integer> 
     2126                                        <key>units</key> 
     2127                                        <real>0.5</real> 
     2128                                </dict> 
     2129                        </array> 
     2130                        <key>completionPercentage</key> 
     2131                        <real>1</real> 
    21562132                        <key>effort</key> 
    21572133                        <real>0.0</real> 
     
    22772253                        </array> 
    22782254                        <key>desiredStart</key> 
     2255                        <string>20080620090000</string> 
     2256                        <key>doneSeconds</key> 
     2257                        <real>7200</real> 
     2258                        <key>effort</key> 
     2259                        <real>3600</real> 
     2260                        <key>effortDone</key> 
     2261                        <real>3600</real> 
     2262                        <key>objectId</key> 
     2263                        <integer>75</integer> 
     2264                        <key>prerequisites</key> 
     2265                        <array> 
     2266                                <dict> 
     2267                                        <key>id</key> 
     2268                                        <integer>104</integer> 
     2269                                        <key>kind</key> 
     2270                                        <integer>2</integer> 
     2271                                </dict> 
     2272                        </array> 
     2273                        <key>task</key> 
     2274                        <string>Unarmoured/No Passphrase</string> 
     2275                        <key>workDone</key> 
     2276                        <real>2</real> 
     2277                        <key>workSeconds</key> 
     2278                        <real>7200</real> 
     2279                        <key>workTime</key> 
     2280                        <real>2</real> 
     2281                </dict> 
     2282                <dict> 
     2283                        <key>assignments</key> 
     2284                        <array> 
     2285                                <dict> 
     2286                                        <key>id</key> 
     2287                                        <integer>1</integer> 
     2288                                        <key>units</key> 
     2289                                        <real>0.5</real> 
     2290                                </dict> 
     2291                        </array> 
     2292                        <key>desiredStart</key> 
     2293                        <string>20080620140000</string> 
     2294                        <key>doneSeconds</key> 
     2295                        <real>7200</real> 
     2296                        <key>effort</key> 
     2297                        <real>3600</real> 
     2298                        <key>effortDone</key> 
     2299                        <real>3600</real> 
     2300                        <key>objectId</key> 
     2301                        <integer>76</integer> 
     2302                        <key>prerequisites</key> 
     2303                        <array> 
     2304                                <dict> 
     2305                                        <key>id</key> 
     2306                                        <integer>101</integer> 
     2307                                        <key>kind</key> 
     2308                                        <integer>2</integer> 
     2309                                </dict> 
     2310                                <dict> 
     2311                                        <key>id</key> 
     2312                                        <integer>104</integer> 
     2313                                        <key>kind</key> 
     2314                                        <integer>2</integer> 
     2315                                </dict> 
     2316                        </array> 
     2317                        <key>task</key> 
     2318                        <string>Armoured/No Passphrase</string> 
     2319                        <key>workDone</key> 
     2320                        <real>2</real> 
     2321                        <key>workSeconds</key> 
     2322                        <real>7200</real> 
     2323                        <key>workTime</key> 
     2324                        <real>2</real> 
     2325                </dict> 
     2326                <dict> 
     2327                        <key>assignments</key> 
     2328                        <array> 
     2329                                <dict> 
     2330                                        <key>id</key> 
     2331                                        <integer>1</integer> 
     2332                                        <key>units</key> 
     2333                                        <real>0.5</real> 
     2334                                </dict> 
     2335                        </array> 
     2336                        <key>desiredStart</key> 
     2337                        <string>20080620110000</string> 
     2338                        <key>doneSeconds</key> 
     2339                        <real>7200</real> 
     2340                        <key>effort</key> 
     2341                        <real>3600</real> 
     2342                        <key>effortDone</key> 
     2343                        <real>3600</real> 
     2344                        <key>objectId</key> 
     2345                        <integer>77</integer> 
     2346                        <key>prerequisites</key> 
     2347                        <array> 
     2348                                <dict> 
     2349                                        <key>id</key> 
     2350                                        <integer>104</integer> 
     2351                                        <key>kind</key> 
     2352                                        <integer>2</integer> 
     2353                                </dict> 
     2354                        </array> 
     2355                        <key>task</key> 
     2356                        <string>Unarmoured/Passphrase</string> 
     2357                        <key>workDone</key> 
     2358                        <real>2</real> 
     2359                        <key>workSeconds</key> 
     2360                        <real>7200</real> 
     2361                        <key>workTime</key> 
     2362                        <real>2</real> 
     2363                </dict> 
     2364                <dict> 
     2365                        <key>assignments</key> 
     2366                        <array> 
     2367                                <dict> 
     2368                                        <key>id</key> 
     2369                                        <integer>1</integer> 
     2370                                        <key>units</key> 
     2371                                        <real>0.5</real> 
     2372                                </dict> 
     2373                        </array> 
     2374                        <key>desiredStart</key> 
     2375                        <string>20080620160000</string> 
     2376                        <key>doneSeconds</key> 
     2377                        <real>7200</real> 
     2378                        <key>effort</key> 
     2379                        <real>3600</real> 
     2380                        <key>effortDone</key> 
     2381                        <real>3600</real> 
     2382                        <key>objectId</key> 
     2383                        <integer>78</integer> 
     2384                        <key>prerequisites</key> 
     2385                        <array> 
     2386                                <dict> 
     2387                                        <key>id</key> 
     2388                                        <integer>101</integer> 
     2389                                        <key>kind</key> 
     2390                                        <integer>2</integer> 
     2391                                </dict> 
     2392                                <dict> 
     2393                                        <key>id</key> 
     2394                                        <integer>104</integer> 
     2395                                        <key>kind</key> 
     2396                                        <integer>2</integer> 
     2397                                </dict> 
     2398                        </array> 
     2399                        <key>task</key> 
     2400                        <string>Armoured/Passphrase</string> 
     2401                        <key>workDone</key> 
     2402                        <real>2</real> 
     2403                        <key>workSeconds</key> 
     2404                        <real>7200</real> 
     2405                        <key>workTime</key> 
     2406                        <real>2</real> 
     2407                </dict> 
     2408                <dict> 
     2409                        <key>assignments</key> 
     2410                        <array> 
     2411                                <dict> 
     2412                                        <key>id</key> 
     2413                                        <integer>1</integer> 
     2414                                        <key>units</key> 
     2415                                        <real>0.5</real> 
     2416                                </dict> 
     2417                        </array> 
     2418                        <key>desiredStart</key> 
     2419                        <string>20080623090000</string> 
     2420                        <key>doneSeconds</key> 
     2421                        <real>7200</real> 
     2422                        <key>effort</key> 
     2423                        <real>3600</real> 
     2424                        <key>effortDone</key> 
     2425                        <real>3600</real> 
     2426                        <key>objectId</key> 
     2427                        <integer>79</integer> 
     2428                        <key>prerequisites</key> 
     2429                        <array> 
     2430                                <dict> 
     2431                                        <key>id</key> 
     2432                                        <integer>104</integer> 
     2433                                        <key>kind</key> 
     2434                                        <integer>2</integer> 
     2435                                </dict> 
     2436                        </array> 
     2437                        <key>task</key> 
     2438                        <string>Unarmoured/No Passphrase</string> 
     2439                        <key>workDone</key> 
     2440                        <real>2</real> 
     2441                        <key>workSeconds</key> 
     2442                        <real>7200</real> 
     2443                        <key>workTime</key> 
     2444                        <real>2</real> 
     2445                </dict> 
     2446                <dict> 
     2447                        <key>assignments</key> 
     2448                        <array> 
     2449                                <dict> 
     2450                                        <key>id</key> 
     2451                                        <integer>1</integer> 
     2452                                        <key>units</key> 
     2453                                        <real>0.5</real> 
     2454                                </dict> 
     2455                        </array> 
     2456                        <key>desiredStart</key> 
    22792457                        <string>20080623140000</string> 
    2280                         <key>effort</key> 
    2281                         <real>3600</real> 
    2282                         <key>objectId</key> 
    2283                         <integer>75</integer> 
    2284                         <key>prerequisites</key> 
    2285                         <array> 
     2458                        <key>doneSeconds</key> 
     2459                        <real>7200</real> 
     2460                        <key>effort</key> 
     2461                        <real>3600</real> 
     2462                        <key>effortDone</key> 
     2463                        <real>3600</real> 
     2464                        <key>objectId</key> 
     2465                        <integer>80</integer> 
     2466                        <key>prerequisites</key> 
     2467                        <array> 
     2468                                <dict> 
     2469                                        <key>id</key> 
     2470                                        <integer>101</integer> 
     2471                                        <key>kind</key> 
     2472                                        <integer>2</integer> 
     2473                                </dict> 
    22862474                                <dict> 
    22872475                                        <key>id</key> 
     
    22902478                                        <integer>2</integer> 
    22912479                                </dict> 
    2292                                 <dict> 
    2293                                         <key>id</key> 
    2294                                         <integer>206</integer> 
    2295                                         <key>isResource</key> 
    2296                                         <string>YES</string> 
    2297                                         <key>kind</key> 
    2298                                         <integer>2</integer> 
    2299                                 </dict> 
    2300                         </array> 
    2301                         <key>task</key> 
    2302                         <string>Unarmoured/No Passphrase</string> 
    2303                         <key>workSeconds</key> 
    2304                         <real>7200</real> 
    2305                         <key>workTime</key> 
    2306                         <real>2</real> 
    2307                 </dict> 
    2308                 <dict> 
    2309                         <key>assignments</key> 
    2310                         <array> 
    2311                                 <dict> 
    2312                                         <key>id</key> 
    2313                                         <integer>1</integer> 
    2314                                         <key>units</key> 
    2315                                         <real>0.5</real> 
    2316                                 </dict> 
    2317                         </array> 
    2318                         <key>desiredStart</key> 
    2319                         <string>20080624090000</string> 
    2320                         <key>effort</key> 
    2321                         <real>3600</real> 
    2322                         <key>objectId</key> 
    2323                         <integer>76</integer> 
    2324                         <key>prerequisites</key> 
    2325                         <array> 
    2326                                 <dict> 
    2327                                         <key>id</key> 
    2328                                         <integer>77</integer> 
    2329                                         <key>isResource</key> 
    2330                                         <string>YES</string> 
    2331                                         <key>kind</key> 
    2332                                         <integer>2</integer> 
    2333                                 </dict> 
     2480                        </array> 
     2481                        <key>task</key> 
     2482                        <string>Armoured/No Passphrase</string> 
     2483                        <key>workDone</key> 
     2484                        <real>2</real> 
     2485                        <key>workSeconds</key> 
     2486                        <real>7200</real> 
     2487                        <key>workTime</key> 
     2488                        <real>2</real> 
     2489                </dict> 
     2490                <dict> 
     2491                        <key>assignments</key> 
     2492                        <array> 
     2493                                <dict> 
     2494                                        <key>id</key> 
     2495                                        <integer>1</integer> 
     2496                                        <key>units</key> 
     2497                                        <real>0.5</real> 
     2498                                </dict> 
     2499                        </array> 
     2500                        <key>desiredStart</key> 
     2501                        <string>20080623110000</string> 
     2502                        <key>doneSeconds</key> 
     2503                        <real>7200</real> 
     2504                        <key>effort</key> 
     2505                        <real>3600</real> 
     2506                        <key>effortDone</key> 
     2507                        <real>3600</real> 
     2508                        <key>objectId</key> 
     2509                        <integer>81</integer> 
     2510                        <key>prerequisites</key> 
     2511                        <array> 
     2512                                <dict> 
     2513                                        <key>id</key> 
     2514                                        <integer>104</integer> 
     2515                                        <key>kind</key> 
     2516                                        <integer>2</integer> 
     2517                                </dict> 
     2518                        </array> 
     2519                        <key>task</key> 
     2520                        <string>Unarmoured/Passphrase</string> 
     2521                        <key>workDone</key> 
     2522                        <real>2</real> 
     2523                        <key>workSeconds</key> 
     2524                        <real>7200</real> 
     2525                        <key>workTime</key> 
     2526                        <real>2</real> 
     2527                </dict> 
     2528                <dict> 
     2529                        <key>assignments</key> 
     2530                        <array> 
     2531                                <dict> 
     2532                                        <key>id</key> 
     2533                                        <integer>1</integer> 
     2534                                        <key>units</key> 
     2535                                        <real>0.5</real> 
     2536                                </dict> 
     2537                        </array> 
     2538                        <key>desiredStart</key> 
     2539                        <string>20080623160000</string> 
     2540                        <key>doneSeconds</key> 
     2541                        <real>7200</real> 
     2542                        <key>effort</key> 
     2543                        <real>3600</real> 
     2544                        <key>effortDone</key> 
     2545                        <real>3600</real> 
     2546                        <key>objectId</key> 
     2547                        <integer>82</integer> 
     2548                        <key>prerequisites</key> 
     2549                        <array> 
    23342550                                <dict> 
    23352551                                        <key>id</key> 
     
    23462562                        </array> 
    23472563                        <key>task</key> 
    2348                         <string>Armoured/No Passphrase</string> 
    2349                         <key>workSeconds</key> 
    2350                         <real>7200</real> 
    2351                         <key>workTime</key> 
    2352                         <real>2</real> 
    2353                 </dict> 
    2354                 <dict> 
    2355                         <key>assignments</key> 
    2356                         <array> 
    2357                                 <dict> 
    2358                                         <key>id</key> 
    2359                                         <integer>1</integer> 
    2360                                         <key>units</key> 
    2361                                         <real>0.5</real> 
    2362                                 </dict> 
    2363                         </array> 
    2364                         <key>desiredStart</key> 
    2365                         <string>20080623160000</string> 
    2366                         <key>effort</key> 
    2367                         <real>3600</real> 
    2368                         <key>objectId</key> 
    2369                         <integer>77</integer> 
    2370                         <key>prerequisites</key> 
    2371                         <array> 
    2372                                 <dict> 
    2373                                         <key>id</key> 
    2374                                         <integer>75</integer> 
    2375                                         <key>isResource</key> 
    2376                                         <string>YES</string> 
    2377                                         <key>kind</key> 
    2378                                         <integer>2</integer> 
    2379                                 </dict> 
    2380                                 <dict> 
    2381                                         <key>id</key> 
    2382                                         <integer>104</integer> 
    2383                                         <key>kind</key> 
    2384                                         <integer>2</integer> 
    2385                                 </dict> 
    2386                         </array> 
    2387                         <key>task</key> 
    2388                         <string>Unarmoured/Passphrase</string> 
    2389                         <key>workSeconds</key> 
    2390                         <real>7200</real> 
    2391                         <key>workTime</key> 
    2392                         <real>2</real> 
    2393                 </dict> 
    2394                 <dict> 
    2395                         <key>assignments</key> 
    2396                         <array> 
    2397                                 <dict> 
    2398                                         <key>id</key> 
    2399                                         <integer>1</integer> 
    2400                                         <key>units</key> 
    2401                                         <real>0.5</real> 
    2402                                 </dict> 
    2403                         </array> 
    2404                         <key>desiredStart</key> 
    2405                         <string>20080624110000</string> 
    2406                         <key>effort</key> 
    2407                         <real>3600</real> 
    2408                         <key>objectId</key> 
    2409                         <integer>78</integer> 
    2410                         <key>prerequisites</key> 
    2411                         <array> 
    2412                                 <dict> 
    2413                                         <key>id</key> 
    2414                                         <integer>76</integer> 
    2415                                         <key>isResource</key> 
    2416                                         <string>YES</string> 
    2417                                         <key>kind</key> 
    2418                                         <integer>2</integer> 
    2419                                 </dict> 
    2420                                 <dict> 
    2421                                         <key>id</key> 
    2422                                         <integer>101</integer> 
    2423                                         <key>kind</key> 
    2424                                         <integer>2</integer> 
    2425                                 </dict> 
    2426                                 <dict> 
    2427                                         <key>id</key> 
    2428                                         <integer>104</integer> 
    2429                                         <key>kind</key> 
    2430                                         <integer>2</integer> 
    2431                                 </dict> 
    2432                         </array> 
    2433                         <key>task</key> 
    24342564                        <string>Armoured/Passphrase</string> 
    2435                         <key>workSeconds</key> 
    2436                         <real>7200</real> 
    2437                         <key>workTime</key> 
    2438                         <real>2</real> 
    2439                 </dict> 
    2440                 <dict> 
    2441                         <key>assignments</key> 
    2442                         <array> 
    2443                                 <dict> 
    2444                                         <key>id</key> 
    2445                                         <integer>1</integer> 
    2446                                         <key>units</key> 
    2447                                         <real>0.5</real> 
    2448                                 </dict> 
    2449                         </array> 
    2450                         <key>desiredStart</key> 
    2451                         <string>20080624140000</string> 
    2452                         <key>effort</key> 
    2453                         <real>3600</real> 
    2454                         <key>objectId</key> 
    2455                         <integer>79</integer> 
    2456                         <key>prerequisites</key> 
    2457                         <array> 
    2458                                 <dict> 
    2459                                         <key>id</key> 
    2460                                         <integer>78</integer> 
    2461                                         <key>isResource</key> 
    2462                                         <string>YES</string> 
    2463                                         <key>kind</key> 
    2464                                         <integer>2</integer> 
    2465                                 </dict> 
    2466                                 <dict> 
    2467                                         <key>id</key> 
    2468                                         <integer>104</integer> 
    2469                                         <key>kind</key> 
    2470                                         <integer>2</integer> 
    2471                                 </dict> 
    2472                         </array> 
    2473                         <key>task</key> 
    2474                         <string>Unarmoured/No Passphrase</string> 
    2475                         <key>workSeconds</key> 
    2476                         <real>7200</real> 
    2477                         <key>workTime</key> 
    2478                         <real>2</real> 
    2479                 </dict> 
    2480                 <dict> 
    2481                         <key>assignments</key> 
    2482                         <array> 
    2483                                 <dict> 
    2484                                         <key>id</key> 
    2485                                         <integer>1</integer> 
    2486                                         <key>units</key> 
    2487                                         <real>0.5</real> 
    2488                                 </dict> 
    2489                         </array> 
    2490                         <key>desiredStart</key> 
    2491                         <string>20080625090000</string> 
    2492                         <key>effort</key> 
    2493                         <real>3600</real> 
    2494                         <key>objectId</key> 
    2495                         <integer>80</integer> 
    2496                         <key>prerequisites</key> 
    2497                         <array> 
    2498                                 <dict> 
    2499                                         <key>id</key> 
    2500                                         <integer>81</integer> 
    2501                                         <key>isResource</key> 
    2502                                         <string>YES</string> 
    2503                                         <key>kind</key> 
    2504                                         <integer>2</integer> 
    2505                                 </dict> 
    2506                                 <dict> 
    2507                                         <key>id</key> 
    2508                                         <integer>101</integer> 
    2509                                         <key>kind</key> 
    2510                                         <integer>2</integer> 
    2511                                 </dict> 
    2512                                 <dict> 
    2513                                         <key>id</key> 
    2514                                         <integer>104</integer> 
    2515                                         <key>kind</key> 
    2516                                         <integer>2</integer> 
    2517                                 </dict> 
    2518                         </array> 
    2519                         <key>task</key> 
    2520                         <string>Armoured/No Passphrase</string> 
    2521                         <key>workSeconds</key> 
    2522                         <real>7200</real> 
    2523                         <key>workTime</key> 
    2524                         <real>2</real> 
    2525                 </dict> 
    2526                 <dict> 
    2527                         <key>assignments</key> 
    2528                         <array> 
    2529                                 <dict> 
    2530                                         <key>id</key> 
    2531                                         <integer>1</integer> 
    2532                                         <key>units</key> 
    2533                                         <real>0.5</real> 
    2534                                 </dict> 
    2535                         </array> 
    2536                         <key>desiredStart</key> 
    2537                         <string>20080624160000</string> 
    2538                         <key>effort</key> 
    2539                         <real>3600</real> 
    2540                         <key>objectId</key> 
    2541                         <integer>81</integer> 
    2542                         <key>prerequisites</key> 
    2543                         <array> 
    2544                                 <dict> 
    2545                                         <key>id</key> 
    2546                                         <integer>79</integer> 
    2547                                         <key>isResource</key> 
    2548                                         <string>YES</string> 
    2549                                         <key>kind</key> 
    2550                                         <integer>2</integer> 
    2551                                 </dict> 
    2552                                 <dict> 
    2553                                         <key>id</key> 
    2554                                         <integer>104</integer> 
    2555                                         <key>kind</key> 
    2556                                         <integer>2</integer> 
    2557                                 </dict> 
    2558                         </array> 
    2559                         <key>task</key> 
    2560                         <string>Unarmoured/Passphrase</string> 
    2561                         <key>workSeconds</key> 
    2562                         <real>7200</real> 
    2563                         <key>workTime</key> 
    2564                         <real>2</real> 
    2565                 </dict> 
    2566                 <dict> 
    2567                         <key>assignments</key> 
    2568                         <array> 
    2569                                 <dict> 
    2570                                         <key>id</key> 
    2571                                         <integer>1</integer> 
    2572                                         <key>units</key> 
    2573                                         <real>0.5</real> 
    2574                                 </dict> 
    2575                         </array> 
    2576                         <key>desiredStart</key> 
    2577                         <string>20080625110000</string> 
    2578                         <key>effort</key> 
    2579                         <real>3600</real> 
    2580                         <key>objectId</key> 
    2581                         <integer>82</integer> 
    2582                         <key>prerequisites</key> 
    2583                         <array> 
    2584                                 <dict> 
    2585                                         <key>id</key> 
    2586                                         <integer>80</integer> 
    2587                                         <key>isResource</key> 
    2588                                         <string>YES</string> 
    2589                                         <key>kind</key> 
    2590                                         <integer>2</integer> 
    2591                                 </dict> 
    2592                                 <dict> 
    2593                                         <key>id</key> 
    2594                                         <integer>101</integer> 
    2595                                         <key>kind</key> 
    2596                                         <integer>2</integer> 
    2597                                 </dict> 
    2598                                 <dict> 
    2599                                         <key>id</key> 
    2600                                         <integer>104</integer> 
    2601                                         <key>kind</key> 
    2602                                         <integer>2</integer> 
    2603                                 </dict> 
    2604                         </array> 
    2605                         <key>task</key> 
    2606                         <string>Armoured/Passphrase</string> 
     2565                        <key>workDone</key> 
     2566                        <real>2</real> 
    26072567                        <key>workSeconds</key> 
    26082568                        <real>7200</real> 
     
    27252685                        </array> 
    27262686                        <key>desiredStart</key> 
    2727                         <string>20080423110000</string> 
     2687                        <string>20080509110000</string> 
    27282688                        <key>effort</key> 
    27292689                        <real>28800</real> 
     
    27342694                                <dict> 
    27352695                                        <key>id</key> 
    2736                                         <integer>201</integer> 
     2696                                        <integer>231</integer> 
    27372697                                        <key>isResource</key> 
    27382698                                        <string>YES</string> 
     
    27592719                        </array> 
    27602720                        <key>desiredStart</key> 
    2761                         <string>20080425110000</string> 
     2721                        <string>20080515110000</string> 
    27622722                        <key>effort</key> 
    27632723                        <real>28800</real> 
     
    27682728                                <dict> 
    27692729                                        <key>id</key> 
    2770                                         <integer>89</integer> 
     2730                                        <integer>233</integer> 
    27712731                                        <key>isResource</key> 
    27722732                                        <string>YES</string> 
     
    27932753                        </array> 
    27942754                        <key>desiredStart</key> 
    2795                         <string>20080429110000</string> 
     2755                        <string>20080519110000</string> 
    27962756                        <key>effort</key> 
    27972757                        <real>28800</real> 
     
    28262786                                </dict> 
    28272787                        </array> 
     2788                        <key>completionPercentage</key> 
     2789                        <real>1</real> 
    28282790                        <key>effort</key> 
    28292791                        <real>0.0</real> 
     
    28432805                                </dict> 
    28442806                        </array> 
     2807                        <key>completionPercentage</key> 
     2808                        <real>1</real> 
    28452809                        <key>effort</key> 
    28462810                        <real>0.0</real> 
     
    28602824                                </dict> 
    28612825                        </array> 
     2826                        <key>completionPercentage</key> 
     2827                        <real>1</real> 
    28622828                        <key>effort</key> 
    28632829                        <real>0.0</real> 
     
    28962862                        </array> 
    28972863                        <key>desiredStart</key> 
    2898                         <string>20080602090000</string> 
     2864                        <string>20080605110000</string> 
    28992865                        <key>effort</key> 
    29002866                        <real>14400</real> 
     
    29052871                                <dict> 
    29062872                                        <key>id</key> 
    2907                                         <integer>123</integer> 
     2873                                        <integer>170</integer> 
    29082874                                        <key>isResource</key> 
    29092875                                        <string>YES</string> 
     
    29302896                        </array> 
    29312897                        <key>desiredStart</key> 
    2932                         <string>20080603090000</string> 
     2898                        <string>20080606110000</string> 
    29332899                        <key>effort</key> 
    29342900                        <real>14400</real> 
     
    29642930                        </array> 
    29652931                        <key>desiredStart</key> 
    2966                         <string>20080604090000</string> 
     2932                        <string>20080609110000</string> 
    29672933                        <key>effort</key> 
    29682934                        <real>14400</real> 
     
    30393005                        </array> 
    30403006                        <key>desiredStart</key> 
    3041                         <string>20080311140000</string> 
    3042                         <key>effort</key> 
     3007                        <string>20080306090000</string> 
     3008                        <key>doneSeconds</key> 
     3009                        <real>57600</real> 
     3010                        <key>effort</key> 
     3011                        <real>28800</real> 
     3012                        <key>effortDone</key> 
    30433013                        <real>28800</real> 
    30443014                        <key>objectId</key> 
    30453015                        <integer>102</integer> 
    3046                         <key>prerequisites</key> 
    3047                         <array> 
    3048                                 <dict> 
    3049                                         <key>id</key> 
    3050                                         <integer>212</integer> 
    3051                                         <key>isResource</key> 
    3052                                         <string>YES</string> 
    3053                                         <key>kind</key> 
    3054                                         <integer>2</integer> 
    3055                                 </dict> 
    3056                         </array> 
    30573016                        <key>task</key> 
    30583017                        <string>Handling passphrase</string> 
     3018                        <key>workDone</key> 
     3019                        <real>16</real> 
    30593020                        <key>workSeconds</key> 
    30603021                        <real>57600</real> 
     
    30733034                        </array> 
    30743035                        <key>desiredStart</key> 
    3075                         <string>20080605090000</string> 
     3036                        <string>20080610110000</string> 
    30763037                        <key>effort</key> 
    30773038                        <real>14400</real> 
     
    31063067                                </dict> 
    31073068                        </array> 
    3108                         <key>desiredStart</key> 
    3109                         <string>20080304090000</string> 
    3110                         <key>effort</key> 
    3111                         <real>7200</real> 
     3069                        <key>completionPercentage</key> 
     3070                        <real>1</real> 
     3071                        <key>desiredStart</key> 
     3072                        <string>20080306090000</string> 
     3073                        <key>effort</key> 
     3074                        <real>0.0</real> 
    31123075                        <key>objectId</key> 
    31133076                        <integer>104</integer> 
    31143077                        <key>task</key> 
    3115                         <string>Write Use of Preferred Symmetric Algorithm</string> 
    3116                         <key>workSeconds</key> 
    3117                         <real>14400</real> 
    3118                         <key>workTime</key> 
    3119                         <real>4</real> 
    3120                 </dict> 
    3121                 <dict> 
    3122                         <key>assignments</key> 
    3123                         <array> 
    3124                                 <dict> 
    3125                                         <key>id</key> 
    3126                                         <integer>1</integer> 
    3127                                         <key>units</key> 
    3128                                         <real>0.5</real> 
    3129                                 </dict> 
    3130                         </array> 
    3131                         <key>desiredStart</key> 
    3132                         <string>20080304140000</string> 
    3133                         <key>effort</key> 
    3134                         <real>7200</real> 
     3078                        <string>Write Use of Preferred Symmetric Algorithm (FUTURE)</string> 
     3079                </dict> 
     3080                <dict> 
     3081                        <key>assignments</key> 
     3082                        <array> 
     3083                                <dict> 
     3084                                        <key>id</key> 
     3085                                        <integer>1</integer> 
     3086                                        <key>units</key> 
     3087                                        <real>0.5</real> 
     3088                                </dict> 
     3089                        </array> 
     3090                        <key>completionPercentage</key> 
     3091                        <real>1</real> 
     3092                        <key>desiredStart</key> 
     3093                        <string>20080306140000</string> 
     3094                        <key>effort</key> 
     3095                        <real>0.0</real> 
    31353096                        <key>objectId</key> 
    31363097                        <integer>105</integer> 
    3137                         <key>prerequisites</key> 
    3138                         <array> 
    3139                                 <dict> 
    3140                                         <key>id</key> 
    3141                                         <integer>104</integer> 
    3142                                         <key>isResource</key> 
    3143                                         <string>YES</string> 
    3144                                         <key>kind</key> 
    3145                                         <integer>2</integer> 
    3146                                 </dict> 
    3147                         </array> 
    3148                         <key>task</key> 
    3149                         <string>Write Use of Preferred Public Key Algorithm</string> 
    3150                         <key>workSeconds</key> 
    3151                         <real>14400</real> 
    3152                         <key>workTime</key> 
    3153                         <real>4</real> 
    3154                 </dict> 
    3155                 <dict> 
    3156                         <key>assignments</key> 
    3157                         <array> 
    3158                                 <dict> 
    3159                                         <key>id</key> 
    3160                                         <integer>1</integer> 
    3161                                         <key>units</key> 
    3162                                         <real>0.5</real> 
    3163                                 </dict> 
    3164                         </array> 
    3165                         <key>desiredStart</key> 
    3166                         <string>20080305090000</string> 
    3167                         <key>effort</key> 
    3168                         <real>7200</real> 
     3098                        <key>task</key> 
     3099                        <string>Write Use of Preferred Public Key Algorithm (FUTURE)</string> 
     3100                </dict> 
     3101                <dict> 
     3102                        <key>assignments</key> 
     3103                        <array> 
     3104                                <dict> 
     3105                                        <key>id</key> 
     3106                                        <integer>1</integer> 
     3107                                        <key>units</key> 
     3108                                        <real>0.5</real> 
     3109                                </dict> 
     3110                        </array> 
     3111                        <key>completionPercentage</key> 
     3112                        <real>1</real> 
     3113                        <key>desiredStart</key> 
     3114                        <string>20080307090000</string> 
     3115                        <key>effort</key> 
     3116                        <real>0.0</real> 
    31693117                        <key>objectId</key> 
    31703118                        <integer>106</integer> 
    3171                         <key>prerequisites</key> 
    3172                         <array> 
    3173                                 <dict> 
    3174                                         <key>id</key> 
    3175                                         <integer>105</integer> 
    3176                                         <key>isResource</key> 
    3177                                         <string>YES</string> 
    3178                                         <key>kind</key> 
    3179                                         <integer>2</integer> 
    3180                                 </dict> 
    3181                         </array> 
    3182                         <key>task</key> 
    3183                         <string>Write Use of Preferred Hash Algorithm</string> 
    3184                         <key>workSeconds</key> 
    3185                         <real>14400</real> 
    3186                         <key>workTime</key> 
    3187                         <real>4</real> 
     3119                        <key>task</key> 
     3120                        <string>Write Use of Preferred Hash Algorithm (FUTURE)</string> 
    31883121                </dict> 
    31893122                <dict> 
     
    31953128                                <integer>212</integer> 
    31963129                        </array> 
     3130                        <key>isExpanded</key> 
     3131                        <false/> 
    31973132                        <key>objectId</key> 
    31983133                        <integer>109</integer> 
     
    32113146                        </array> 
    32123147                        <key>desiredStart</key> 
    3213                         <string>20080407110000</string> 
    3214                         <key>effort</key> 
     3148                        <string>20080403151200</string> 
     3149                        <key>doneSeconds</key> 
     3150                        <real>14400</real> 
     3151                        <key>effort</key> 
     3152                        <real>7200</real> 
     3153                        <key>effortDone</key> 
    32153154                        <real>7200</real> 
    32163155                        <key>objectId</key> 
    32173156                        <integer>110</integer> 
    3218                         <key>prerequisites</key> 
    3219                         <array> 
    3220                                 <dict> 
    3221                                         <key>id</key> 
    3222                                         <integer>168</integer> 
     3157                        <key>task</key> 
     3158                        <string>Compressed Data</string> 
     3159                        <key>workDone</key> 
     3160                        <real>4</real> 
     3161                        <key>workSeconds</key> 
     3162                        <real>14400</real> 
     3163                        <key>workTime</key> 
     3164                        <real>4</real> 
     3165                </dict> 
     3166                <dict> 
     3167                        <key>children</key> 
     3168                        <array> 
     3169                                <integer>207</integer> 
     3170                                <integer>208</integer> 
     3171                        </array> 
     3172                        <key>objectId</key> 
     3173                        <integer>111</integer> 
     3174                        <key>task</key> 
     3175                        <string>Compression</string> 
     3176                </dict> 
     3177                <dict> 
     3178                        <key>assignments</key> 
     3179                        <array> 
     3180                                <dict> 
     3181                                        <key>id</key> 
     3182                                        <integer>1</integer> 
     3183                                        <key>units</key> 
     3184                                        <real>0.5</real> 
     3185                                </dict> 
     3186                        </array> 
     3187                        <key>desiredStart</key> 
     3188                        <string>20080125140000</string> 
     3189                        <key>doneSeconds</key> 
     3190                        <real>288000</real> 
     3191                        <key>effort</key> 
     3192                        <real>144000</real> 
     3193                        <key>effortDone</key> 
     3194                        <real>144000</real> 
     3195                        <key>objectId</key> 
     3196                        <integer>112</integer> 
     3197                        <key>task</key> 
     3198                        <string>Write Verification of document signatures</string> 
     3199                        <key>workDone</key> 
     3200                        <real>80</real> 
     3201                        <key>workSeconds</key> 
     3202                        <real>288000</real> 
     3203                        <key>workTime</key> 
     3204                        <real>80</real> 
     3205                </dict> 
     3206                <dict> 
     3207                        <key>assignments</key> 
     3208                        <array> 
     3209                                <dict> 
     3210                                        <key>id</key> 
     3211                                        <integer>1</integer> 
     3212                                        <key>units</key> 
     3213                                        <real>0.5</real> 
     3214                                </dict> 
     3215                        </array> 
     3216                        <key>desiredStart</key> 
     3217                        <string>20080326160000</string> 
     3218                        <key>doneSeconds</key> 
     3219                        <real>7200</real> 
     3220                        <key>effort</key> 
     3221                        <real>3600</real> 
     3222                        <key>effortDone</key> 
     3223                        <real>3600</real> 
     3224                        <key>objectId</key> 
     3225                        <integer>113</integer> 
     3226                        <key>task</key> 
     3227                        <string>Sign with V3 signature (FUTURE)</string> 
     3228                        <key>workDone</key> 
     3229                        <real>2</real> 
     3230                        <key>workSeconds</key> 
     3231                        <real>7200</real> 
     3232                        <key>workTime</key> 
     3233                        <real>2</real> 
     3234                </dict> 
     3235                <dict> 
     3236                        <key>assignments</key> 
     3237                        <array> 
     3238                                <dict> 
     3239                                        <key>id</key> 
     3240                                        <integer>1</integer> 
     3241                                        <key>units</key> 
     3242                                        <real>0.5</real> 
     3243                                </dict> 
     3244                        </array> 
     3245                        <key>doneSeconds</key> 
     3246                        <real>23040</real> 
     3247                        <key>effort</key> 
     3248                        <real>11520</real> 
     3249                        <key>effortDone</key> 
     3250                        <real>11520</real> 
     3251                        <key>forcedStart</key> 
     3252                        <string>20070917090000</string> 
     3253                        <key>objectId</key> 
     3254                        <integer>114</integer> 
     3255                        <key>task</key> 
     3256                        <string>Sign with V4 signature</string> 
     3257                        <key>workDone</key> 
     3258                        <real>6.4000000953674316</real> 
     3259                        <key>workSeconds</key> 
     3260                        <real>23040</real> 
     3261                        <key>workTime</key> 
     3262                        <real>6.4000000953674316</real> 
     3263                </dict> 
     3264                <dict> 
     3265                        <key>assignments</key> 
     3266                        <array> 
     3267                                <dict> 
     3268                                        <key>id</key> 
     3269                                        <integer>1</integer> 
     3270                                        <key>units</key> 
     3271                                        <real>0.5</real> 
     3272                                </dict> 
     3273                        </array> 
     3274                        <key>desiredStart</key> 
     3275                        <string>20080506160000</string> 
     3276                        <key>doneSeconds</key> 
     3277                        <real>28800</real> 
     3278                        <key>effort</key> 
     3279                        <real>14400</real> 
     3280                        <key>effortDone</key> 
     3281                        <real>14400</real> 
     3282                        <key>objectId</key> 
     3283                        <integer>115</integer> 
     3284                        <key>prerequisites</key> 
     3285                        <array> 
     3286                                <dict> 
     3287                                        <key>id</key> 
     3288                                        <integer>112</integer> 
     3289                                        <key>kind</key> 
     3290                                        <integer>2</integer> 
     3291                                </dict> 
     3292                        </array> 
     3293                        <key>task</key> 
     3294                        <string>Verify V3 signature</string> 
     3295                        <key>workDone</key> 
     3296                        <real>8</real> 
     3297                        <key>workSeconds</key> 
     3298                        <real>28800</real> 
     3299                        <key>workTime</key> 
     3300                        <real>8</real> 
     3301                </dict> 
     3302                <dict> 
     3303                        <key>assignments</key> 
     3304                        <array> 
     3305                                <dict> 
     3306                                        <key>id</key> 
     3307                                        <integer>1</integer> 
     3308                                        <key>units</key> 
     3309                                        <real>0.5</real> 
     3310                                </dict> 
     3311                        </array> 
     3312                        <key>desiredStart</key> 
     3313                        <string>20080421090000</string> 
     3314                        <key>doneSeconds</key> 
     3315                        <real>28800</real> 
     3316                        <key>effort</key> 
     3317                        <real>14400</real> 
     3318                        <key>effortDone</key> 
     3319                        <real>14400</real> 
     3320                        <key>objectId</key> 
     3321                        <integer>116</integer> 
     3322                        <key>prerequisites</key> 
     3323                        <array> 
     3324                                <dict> 
     3325                                        <key>id</key> 
     3326                                        <integer>112</integer> 
     3327                                        <key>kind</key> 
     3328                                        <integer>2</integer> 
     3329                                </dict> 
     3330                        </array> 
     3331                        <key>task</key> 
     3332                        <string>Verify V4 signature</string> 
     3333                        <key>workDone</key> 
     3334                        <real>8</real> 
     3335                        <key>workSeconds</key> 
     3336                        <real>28800</real> 
     3337                        <key>workTime</key> 
     3338                        <real>8</real> 
     3339                </dict> 
     3340                <dict> 
     3341                        <key>assignments</key> 
     3342                        <array> 
     3343                                <dict> 
     3344                                        <key>id</key> 
     3345                                        <integer>1</integer> 
     3346                                        <key>units</key> 
     3347                                        <real>0.5</real> 
     3348                                </dict> 
     3349                        </array> 
     3350                        <key>desiredStart</key> 
     3351                        <string>20080310090000</string> 
     3352                        <key>doneSeconds</key> 
     3353                        <real>57600</real> 
     3354                        <key>effort</key> 
     3355                        <real>28800</real> 
     3356                        <key>effortDone</key> 
     3357                        <real>28800</real> 
     3358                        <key>objectId</key> 
     3359                        <integer>117</integer> 
     3360                        <key>task</key> 
     3361                        <string>Write verification of V3 signatures</string> 
     3362                        <key>workDone</key> 
     3363                        <real>16</real> 
     3364                        <key>workSeconds</key> 
     3365                        <real>57600</real> 
     3366                        <key>workTime</key> 
     3367                        <real>16</real> 
     3368                </dict> 
     3369                <dict> 
     3370                        <key>assignments</key> 
     3371                        <array> 
     3372                                <dict> 
     3373                                        <key>id</key> 
     3374                                        <integer>1</integer> 
     3375                                        <key>units</key> 
     3376                                        <real>0.5</real> 
     3377                                </dict> 
     3378                        </array> 
     3379                        <key>desiredStart</key> 
     3380                        <string>20080611110000</string> 
     3381                        <key>effort</key> 
     3382                        <real>14400</real> 
     3383                        <key>objectId</key> 
     3384                        <integer>118</integer> 
     3385                        <key>prerequisites</key> 
     3386                        <array> 
     3387                                <dict> 
     3388                                        <key>id</key> 
     3389                                        <integer>103</integer> 
    32233390                                        <key>isResource</key> 
    32243391                                        <string>YES</string> 
     
    32283395                        </array> 
    32293396                        <key>task</key> 
    3230                         <string>Compressed Data</string> 
    3231                         <key>workSeconds</key> 
     3397                        <string>Encrypted and Signed</string> 
     3398                        <key>workSeconds</key> 
     3399                        <real>28800</real> 
     3400                        <key>workTime</key> 
     3401                        <real>8</real> 
     3402                </dict> 
     3403                <dict> 
     3404                        <key>assignments</key> 
     3405                        <array> 
     3406                                <dict> 
     3407                                        <key>id</key> 
     3408                                        <integer>1</integer> 
     3409                                        <key>units</key> 
     3410                                        <real>0.5</real> 
     3411                                </dict> 
     3412                        </array> 
     3413                        <key>completionPercentage</key> 
     3414                        <real>1</real> 
     3415                        <key>desiredStart</key> 
     3416                        <string>20080522160000</string> 
     3417                        <key>effort</key> 
     3418                        <real>0.0</real> 
     3419                        <key>objectId</key> 
     3420                        <integer>120</integer> 
     3421                        <key>task</key> 
     3422                        <string>Sign with V3 sig (FUTURE)</string> 
     3423                </dict> 
     3424                <dict> 
     3425                        <key>assignments</key> 
     3426                        <array> 
     3427                                <dict> 
     3428                                        <key>id</key> 
     3429                                        <integer>1</integer> 
     3430                                        <key>units</key> 
     3431                                        <real>0.5</real> 
     3432                                </dict> 
     3433                        </array> 
     3434                        <key>desiredStart</key> 
     3435                        <string>20080523160000</string> 
     3436                        <key>doneSeconds</key> 
     3437                        <real>28800</real> 
     3438                        <key>effort</key> 
    32323439                        <real>14400</real> 
    3233                         <key>workTime</key> 
    3234                         <real>4</real> 
    3235                 </dict> 
    3236                 <dict> 
    3237                         <key>children</key> 
    3238                         <array> 
    3239                                 <integer>207</integer> 
    3240                                 <integer>208</integer> 
    3241                         </array> 
    3242                         <key>objectId</key> 
    3243                         <integer>111</integer> 
    3244                         <key>task</key> 
    3245                         <string>Compression</string> 
    3246                 </dict> 
    3247                 <dict> 
    3248                         <key>assignments</key> 
    3249                         <array> 
    3250                                 <dict> 
    3251                                         <key>id</key> 
    3252                                         <integer>1</integer> 
    3253                                         <key>units</key> 
    3254                                         <real>0.5</real> 
    3255                                 </dict> 
    3256                         </array> 
    3257                         <key>desiredStart</key> 
    3258                         <string>20080125140000</string> 
    3259                         <key>doneSeconds</key> 
    3260                         <real>288000</real> 
    3261                         <key>effort</key> 
    3262                         <real>144000</real> 
    3263                         <key>effortDone</key> 
    3264                         <real>144000</real> 
    3265                         <key>objectId</key> 
    3266                         <integer>112</integer> 
    3267                         <key>task</key> 
    3268                         <string>Write Verification of document signatures</string> 
    3269                         <key>workDone</key> 
    3270                         <real>80</real> 
    3271                         <key>workSeconds</key> 
    3272                         <real>288000</real> 
    3273                         <key>workTime</key> 
    3274                         <real>80</real> 
    3275                 </dict> 
    3276                 <dict> 
    3277                         <key>assignments</key> 
    3278                         <array> 
    3279                                 <dict> 
    3280                                         <key>id</key> 
    3281                                         <integer>1</integer> 
    3282                                         <key>units</key> 
    3283                                         <real>0.5</real> 
    3284                                 </dict> 
    3285                         </array> 
    3286                         <key>desiredStart</key> 
    3287                         <string>20080508140000</string> 
    3288                         <key>effort</key> 
    3289                         <real>3600</real> 
    3290                         <key>objectId</key> 
    3291                         <integer>113</integer> 
    3292                         <key>prerequisites</key> 
    3293                         <array> 
     3440                        <key>effortDone</key> 
     3441                        <real>14400</real> 
     3442                        <key>objectId</key> 
     3443                        <integer>121</integer> 
     3444                        <key>task</key> 
     3445                        <string>Sign with V4 sig</string> 
     3446                        <key>workDone</key> 
     3447                        <real>8</real> 
     3448                        <key>workSeconds</key> 
     3449                        <real>28800</real> 
     3450                        <key>workTime</key> 
     3451                        <real>8</real> 
     3452                </dict> 
     3453                <dict> 
     3454                        <key>assignments</key> 
     3455                        <array> 
     3456                                <dict> 
     3457                                        <key>id</key> 
     3458                                        <integer>1</integer> 
     3459                                        <key>units</key> 
     3460                                        <real>0.5</real> 
     3461                                </dict> 
     3462                        </array> 
     3463                        <key>desiredStart</key> 
     3464                        <string>20080526160000</string> 
     3465                        <key>doneSeconds</key> 
     3466                        <real>28800</real> 
     3467                        <key>effort</key> 
     3468                        <real>14400</real> 
     3469                        <key>effortDone</key> 
     3470                        <real>14400</real> 
     3471                        <key>objectId</key> 
     3472                        <integer>122</integer> 
     3473                        <key>task</key> 
     3474                        <string>Verify V3 sig</string> 
     3475                        <key>workDone</key> 
     3476                        <real>8</real> 
     3477                        <key>workSeconds</key> 
     3478                        <real>28800</real> 
     3479                        <key>workTime</key> 
     3480                        <real>8</real> 
     3481                </dict> 
     3482                <dict> 
     3483                        <key>assignments</key> 
     3484                        <array> 
     3485                                <dict> 
     3486                                        <key>id</key> 
     3487                                        <integer>1</integer> 
     3488                                        <key>units</key> 
     3489                                        <real>0.5</real> 
     3490                                </dict> 
     3491                        </array> 
     3492                        <key>desiredStart</key> 
     3493                        <string>20080527160000</string> 
     3494                        <key>doneSeconds</key> 
     3495                        <real>28800</real> 
     3496                        <key>effort</key> 
     3497                        <real>14400</real> 
     3498                        <key>effortDone</key> 
     3499                        <real>14400</real> 
     3500                        <key>objectId</key> 
     3501                        <integer>123</integer> 
     3502                        <key>task</key> 
     3503                        <string>Verify V4 sig</string> 
     3504                        <key>workDone</key> 
     3505                        <real>8</real> 
     3506                        <key>workSeconds</key> 
     3507                        <real>28800</real> 
     3508                        <key>workTime</key> 
     3509                        <real>8</real> 
     3510                </dict> 
     3511                <dict> 
     3512                        <key>assignments</key> 
     3513                        <array> 
     3514                                <dict> 
     3515                                        <key>id</key> 
     3516                                        <integer>1</integer> 
     3517                                        <key>units</key> 
     3518                                        <real>0.5</real> 
     3519                                </dict> 
     3520                        </array> 
     3521                        <key>desiredStart</key> 
     3522                        <string>20080312090000</string> 
     3523                        <key>doneSeconds</key> 
     3524                        <real>57600</real> 
     3525                        <key>effort</key> 
     3526                        <real>28800</real> 
     3527                        <key>effortDone</key> 
     3528                        <real>28800</real> 
     3529                        <key>objectId</key> 
     3530                        <integer>124</integer> 
     3531                        <key>task</key> 
     3532                        <string>Hash algorithm != SHA1 in signatures</string> 
     3533                        <key>workDone</key> 
     3534                        <real>16</real> 
     3535                        <key>workSeconds</key> 
     3536                        <real>57600</real> 
     3537                        <key>workTime</key> 
     3538                        <real>16</real> 
     3539                </dict> 
     3540                <dict> 
     3541                        <key>assignments</key> 
     3542                        <array> 
     3543                                <dict> 
     3544                                        <key>id</key> 
     3545                                        <integer>1</integer> 
     3546                                        <key>units</key> 
     3547                                        <real>0.5</real> 
     3548                                </dict> 
     3549                        </array> 
     3550                        <key>desiredStart</key> 
     3551                        <string>20080527110000</string> 
     3552                        <key>effort</key> 
     3553                        <real>14400</real> 
     3554                        <key>objectId</key> 
     3555                        <integer>125</integer> 
     3556                        <key>prerequisites</key> 
     3557                        <array> 
     3558                                <dict> 
     3559                                        <key>id</key> 
     3560                                        <integer>106</integer> 
     3561                                        <key>kind</key> 
     3562                                        <integer>2</integer> 
     3563                                </dict> 
     3564                                <dict> 
     3565                                        <key>id</key> 
     3566                                        <integer>124</integer> 
     3567                                        <key>kind</key> 
     3568                                        <integer>2</integer> 
     3569                                </dict> 
    32943570                                <dict> 
    32953571                                        <key>id</key> 
     
    32973573                                        <key>isResource</key> 
    32983574                                        <string>YES</string> 
    3299                                         <key>kind</key> 
    3300                                         <integer>2</integer> 
    3301                                 </dict> 
    3302                         </array> 
    3303                         <key>task</key> 
    3304                         <string>Sign with V3 signature</string> 
    3305                         <key>workSeconds</key> 
    3306                         <real>7200</real> 
    3307                         <key>workTime</key> 
    3308                         <real>2</real> 
    3309                 </dict> 
    3310                 <dict> 
    3311                         <key>assignments</key> 
    3312                         <array> 
    3313                                 <dict> 
    3314                                         <key>id</key> 
    3315                                         <integer>1</integer> 
    3316                                         <key>units</key> 
    3317                                         <real>0.5</real> 
    3318                                 </dict> 
    3319                         </array> 
    3320                         <key>doneSeconds</key> 
    3321                         <real>23040</real> 
    3322                         <key>effort</key> 
    3323                         <real>11520</real> 
    3324                         <key>effortDone</key> 
    3325                         <real>11520</real> 
    3326                         <key>forcedStart</key> 
    3327                         <string>20070917090000</string> 
    3328                         <key>objectId</key> 
    3329                         <integer>114</integer> 
    3330                         <key>task</key> 
    3331                         <string>Sign with V4 signature</string> 
    3332                         <key>workDone</key> 
    3333                         <real>6.4000000953674316</real> 
    3334                         <key>workSeconds</key> 
    3335                         <real>23040</real> 
    3336                         <key>workTime</key> 
    3337                         <real>6.4000000953674316</real> 
    3338                 </dict> 
    3339                 <dict> 
    3340                         <key>assignments</key> 
    3341                         <array> 
    3342                                 <dict> 
    3343                                         <key>id</key> 
    3344                                         <integer>1</integer> 
    3345                                         <key>units</key> 
    3346                                         <real>0.5</real> 
    3347                                 </dict> 
    3348                         </array> 
    3349                         <key>desiredStart</key> 
    3350                         <string>20080508160000</string> 
    3351                         <key>effort</key> 
    3352                         <real>14400</real> 
    3353                         <key>objectId</key> 
    3354                         <integer>115</integer> 
    3355                         <key>prerequisites</key> 
    3356                         <array> 
    3357                                 <dict> 
    3358                                         <key>id</key> 
    3359                                         <integer>112</integer> 
    3360                                         <key>kind</key> 
    3361                                         <integer>2</integer> 
    3362                                 </dict> 
    3363                                 <dict> 
    3364                                         <key>id</key> 
    3365                                         <integer>113</integer> 
    3366                                         <key>isResource</key> 
    3367                                         <string>YES</string> 
    3368                                         <key>kind</key> 
    3369                                         <integer>2</integer> 
    3370                                 </dict> 
    3371                         </array> 
    3372                         <key>task</key> 
    3373                         <string>Verify V3 signature</string> 
    3374                         <key>workSeconds</key> 
    3375                         <real>28800</real> 
    3376                         <key>workTime</key> 
    3377                         <real>8</real> 
    3378                 </dict> 
    3379                 <dict> 
    3380                         <key>assignments</key> 
    3381                         <array> 
    3382                                 <dict> 
    3383                                         <key>id</key> 
    3384                                         <integer>1</integer> 
    3385                                         <key>units</key> 
    3386                                         <real>0.5</real> 
    3387                                 </dict> 
    3388                         </array> 
    3389                         <key>desiredStart</key> 
    3390                         <string>20080421090000</string> 
    3391                         <key>doneSeconds</key> 
    3392                         <real>28800</real> 
    3393                         <key>effort</key> 
    3394                         <real>14400</real> 
    3395                         <key>effortDone</key> 
    3396                         <real>14400</real> 
    3397                         <key>objectId</key> 
    3398                         <integer>116</integer> 
    3399                         <key>prerequisites</key> 
    3400                         <array> 
    3401                                 <dict> 
    3402                                         <key>id</key> 
    3403                                         <integer>112</integer> 
    3404                                         <key>kind</key> 
    3405                                         <integer>2</integer> 
    3406                                 </dict> 
    3407                         </array> 
    3408                         <key>task</key> 
    3409                         <string>Verify V4 signature</string> 
    3410                         <key>workDone</key> 
    3411                         <real>8</real> 
    3412                         <key>workSeconds</key> 
    3413                         <real>28800</real> 
    3414                         <key>workTime</key> 
    3415                         <real>8</real> 
    3416                 </dict> 
    3417                 <dict> 
    3418                         <key>assignments</key> 
    3419                         <array> 
    3420                                 <dict> 
    3421                                         <key>id</key> 
    3422                                         <integer>1</integer> 
    3423                                         <key>units</key> 
    3424                                         <real>0.5</real> 
    3425                                 </dict> 
    3426                         </array> 
    3427                         <key>desiredStart</key> 
    3428                         <string>20080313140000</string> 
    3429                         <key>effort</key> 
    3430                         <real>28800</real> 
    3431                         <key>objectId</key> 
    3432                         <integer>117</integer> 
    3433                         <key>prerequisites</key> 
    3434                         <array> 
    3435                                 <dict> 
    3436                                         <key>id</key> 
    3437                                         <integer>102</integer> 
    3438                                         <key>isResource</key> 
    3439                                         <string>YES</string> 
    3440                                         <key>kind</key> 
    3441                                         <integer>2</integer> 
    3442                                 </dict> 
    3443                         </array> 
    3444                         <key>task</key> 
    3445                         <string>Write verification of V3 signatures</string> 
    3446                         <key>workSeconds</key> 
    3447                         <real>57600</real> 
    3448                         <key>workTime</key> 
    3449                         <real>16</real> 
    3450                 </dict> 
    3451                 <dict> 
    3452                         <key>assignments</key> 
    3453                         <array> 
    3454                                 <dict> 
    3455                                         <key>id</key> 
    3456                                         <integer>1</integer> 
    3457                                         <key>units</key> 
    3458                                         <real>0.5</real> 
    3459                                 </dict> 
    3460                         </array> 
    3461                         <key>desiredStart</key> 
    3462                         <string>20080609090000</string> 
    3463                         <key>effort</key> 
    3464                         <real>14400</real> 
    3465                         <key>objectId</key> 
    3466                         <integer>118</integer> 
    3467                         <key>prerequisites</key> 
    3468                         <array> 
    3469                                 <dict> 
    3470                                         <key>id</key> 
    3471                                         <integer>207</integer> 
    3472                                         <key>isResource</key> 
    3473                                         <string>YES</string> 
    3474                                         <key>kind</key> 
    3475                                         <integer>2</integer> 
    3476                                 </dict> 
    3477                         </array> 
    3478                         <key>task</key> 
    3479                         <string>Encrypted and Signed</string> 
    3480                         <key>workSeconds</key> 
    3481                         <real>28800</real> 
    3482                         <key>workTime</key> 
    3483                         <real>8</real> 
    3484                 </dict> 
    3485                 <dict> 
    3486                         <key>assignments</key> 
    3487                         <array> 
    3488                                 <dict> 
    3489                                         <key>id</key> 
    3490                                         <integer>1</integer> 
    3491                                         <key>units</key> 
    3492                                         <real>0.5</real> 
    3493                                 </dict> 
    3494                         </array> 
    3495                         <key>desiredStart</key> 
    3496                         <string>20080527090000</string> 
    3497                         <key>effort</key> 
    3498                         <real>14400</real> 
    3499                         <key>objectId</key> 
    3500                         <integer>120</integer> 
    3501                         <key>prerequisites</key> 
    3502                         <array> 
    3503                                 <dict> 
    3504                                         <key>id</key> 
    3505                                         <integer>170</integer> 
    3506                                         <key>isResource</key> 
    3507                                         <string>YES</string> 
    3508                                         <key>kind</key> 
    3509                                         <integer>2</integer> 
    3510                                 </dict> 
    3511                         </array> 
    3512                         <key>task</key> 
    3513                         <string>Sign with V3 sig</string> 
    3514                         <key>workSeconds</key> 
    3515                         <real>28800</real> 
    3516                         <key>workTime</key> 
    3517                         <real>8</real> 
    3518                 </dict> 
    3519                 <dict> 
    3520                         <key>assignments</key> 
    3521                         <array> 
    3522                                 <dict> 
    3523                                         <key>id</key> 
    3524                                         <integer>1</integer> 
    3525                                         <key>units</key> 
    3526                                         <real>0.5</real> 
    3527                                 </dict> 
    3528                         </array> 
    3529                         <key>desiredStart</key> 
    3530                         <string>20080528090000</string> 
    3531                         <key>effort</key> 
    3532                         <real>14400</real> 
    3533                         <key>objectId</key> 
    3534                         <integer>121</integer> 
    3535                         <key>prerequisites</key> 
    3536                         <array> 
    3537                                 <dict> 
    3538                                         <key>id</key> 
    3539                                         <integer>120</integer> 
    3540                                         <key>isResource</key> 
    3541                                         <string>YES</string> 
    3542                                         <key>kind</key> 
    3543                                         <integer>2</integer> 
    3544                                 </dict> 
    3545                         </array> 
    3546                         <key>task</key> 
    3547                         <string>Sign with V4 sig</string> 
    3548                         <key>workSeconds</key> 
    3549                         <real>28800</real> 
    3550                         <key>workTime</key> 
    3551                         <real>8</real> 
    3552                 </dict> 
    3553                 <dict> 
    3554                         <key>assignments</key> 
    3555                         <array> 
    3556                                 <dict> 
    3557                                         <key>id</key> 
    3558                                         <integer>1</integer> 
    3559                                         <key>units</key> 
    3560                                         <real>0.5</real> 
    3561                                 </dict> 
    3562                         </array> 
    3563                         <key>desiredStart</key> 
    3564                         <string>20080529090000</string> 
    3565                         <key>effort</key> 
    3566                         <real>14400</real> 
    3567                         <key>objectId</key> 
    3568                         <integer>122</integer> 
    3569                         <key>prerequisites</key> 
    3570                         <array> 
    3571                                 <dict> 
    3572                                         <key>id</key> 
    3573                                         <integer>121</integer> 
    3574                                         <key>isResource</key> 
    3575                                         <string>YES</string> 
    3576                                         <key>kind</key> 
    3577                                         <integer>2</integer> 
    3578                                 </dict> 
    3579                         </array> 
    3580                         <key>task</key> 
    3581                         <string>Verify V3 sig</string> 
    3582                         <key>workSeconds</key> 
    3583                         <real>28800</real> 
    3584                         <key>workTime</key> 
    3585                         <real>8</real> 
    3586                 </dict> 
    3587                 <dict> 
    3588                         <key>assignments</key> 
    3589                         <array> 
    3590                                 <dict> 
    3591                                         <key>id</key> 
    3592                                         <integer>1</integer> 
    3593                                         <key>units</key> 
    3594                                         <real>0.5</real> 
    3595                                 </dict> 
    3596                         </array> 
    3597                         <key>desiredStart</key> 
    3598                         <string>20080530090000</string> 
    3599                         <key>effort</key> 
    3600                         <real>14400</real> 
    3601                         <key>objectId</key> 
    3602                         <integer>123</integer> 
    3603                         <key>prerequisites</key> 
    3604                         <array> 
    3605                                 <dict> 
    3606                                         <key>id</key> 
    3607                                         <integer>122</integer> 
    3608                                         <key>isResource</key> 
    3609                                         <string>YES</string> 
    3610                                         <key>kind</key> 
    3611                                         <integer>2</integer> 
    3612                                 </dict> 
    3613                         </array> 
    3614                         <key>task</key> 
    3615                         <string>Verify V4 sig</string> 
    3616                         <key>workSeconds</key> 
    3617                         <real>28800</real> 
    3618                         <key>workTime</key> 
    3619                         <real>8</real> 
    3620                 </dict> 
    3621                 <dict> 
    3622                         <key>assignments</key> 
    3623                         <array> 
    3624                                 <dict> 
    3625                                         <key>id</key> 
    3626                                         <integer>1</integer> 
    3627                                         <key>units</key> 
    3628                                         <real>0.5</real> 
    3629                                 </dict> 
    3630                         </array> 
    3631                         <key>desiredStart</key> 
    3632                         <string>20080317140000</string> 
    3633                         <key>effort</key> 
    3634                         <real>28800</real> 
    3635                         <key>objectId</key> 
    3636                         <integer>124</integer> 
    3637                         <key>prerequisites</key> 
    3638                         <array> 
    3639                                 <dict> 
    3640                                         <key>id</key> 
    3641                                         <integer>117</integer> 
    3642                                         <key>isResource</key> 
    3643                                         <string>YES</string> 
    3644                                         <key>kind</key> 
    3645                                         <integer>2</integer> 
    3646                                 </dict> 
    3647                         </array> 
    3648                         <key>task</key> 
    3649                         <string>Hash algorithm != SHA1 in signatures</string> 
    3650                         <key>workSeconds</key> 
    3651                         <real>57600</real> 
    3652                         <key>workTime</key> 
    3653                         <real>16</real> 
    3654                 </dict> 
    3655                 <dict> 
    3656                         <key>assignments</key> 
    3657                         <array> 
    3658                                 <dict> 
    3659                                         <key>id</key> 
    3660                                         <integer>1</integer> 
    3661                                         <key>units</key> 
    3662                                         <real>0.5</real> 
    3663                                 </dict> 
    3664                         </array> 
    3665                         <key>desiredStart</key> 
    3666                         <string>20080509160000</string> 
    3667                         <key>effort</key> 
    3668                         <real>14400</real> 
    3669                         <key>objectId</key> 
    3670                         <integer>125</integer> 
    3671                         <key>prerequisites</key> 
    3672                         <array> 
    3673                                 <dict> 
    3674                                         <key>id</key> 
    3675                                         <integer>106</integer> 
    3676                                         <key>kind</key> 
    3677                                         <integer>2</integer> 
    3678                                 </dict> 
    3679                                 <dict> 
    3680                                         <key>id</key> 
    3681                                         <integer>115</integer> 
    3682                                         <key>isResource</key> 
    3683                                         <string>YES</string> 
    3684                                         <key>kind</key> 
    3685                                         <integer>2</integer> 
    3686                                 </dict> 
    3687                                 <dict> 
    3688                                         <key>id</key> 
    3689                                         <integer>124</integer> 
    36903575                                        <key>kind</key> 
    36913576                                        <integer>2</integer> 
     
    41514036                        </array> 
    41524037                        <key>desiredStart</key> 
    4153                         <string>20080319140000</string> 
     4038                        <string>20080405000000</string> 
    41544039                        <key>effort</key> 
    41554040                        <real>28800</real> 
    41564041                        <key>objectId</key> 
    41574042                        <integer>145</integer> 
    4158                         <key>prerequisites</key> 
    4159                         <array> 
    4160                                 <dict> 
    4161                                         <key>id</key> 
    4162                                         <integer>124</integer> 
    4163                                         <key>isResource</key> 
    4164                                         <string>YES</string> 
    4165                                         <key>kind</key> 
    4166                                         <integer>2</integer> 
    4167                                 </dict> 
    4168                         </array> 
    41694043                        <key>task</key> 
    41704044                        <string>Integrate stream encryption</string> 
     
    41854059                        </array> 
    41864060                        <key>desiredStart</key> 
    4187                         <string>20080321140000</string> 
     4061                        <string>20080409090000</string> 
    41884062                        <key>effort</key> 
    41894063                        <real>28800</real> 
     
    42194093                        </array> 
    42204094                        <key>desiredStart</key> 
    4221                         <string>20080502140000</string> 
     4095                        <string>20080521110000</string> 
    42224096                        <key>effort</key> 
    42234097                        <real>28800</real> 
     
    42284102                                <dict> 
    42294103                                        <key>id</key> 
    4230                                         <integer>55</integer> 
     4104                                        <integer>91</integer> 
    42314105                                        <key>isResource</key> 
    42324106                                        <string>YES</string> 
     
    42534127                        </array> 
    42544128                        <key>desiredStart</key> 
    4255                         <string>20080506140000</string> 
     4129                        <string>20080523110000</string> 
    42564130                        <key>effort</key> 
    42574131                        <real>28800</real> 
     
    42874161                        </array> 
    42884162                        <key>desiredStart</key> 
    4289                         <string>20080512160000</string> 
     4163                        <string>20080528110000</string> 
    42904164                        <key>effort</key> 
    42914165                        <real>28800</real> 
     
    43214195                        </array> 
    43224196                        <key>desiredStart</key> 
    4323                         <string>20080625140000</string> 
     4197                        <string>20080620160000</string> 
    43244198                        <key>effort</key> 
    43254199                        <real>3600</real> 
     
    43304204                                <dict> 
    43314205                                        <key>id</key> 
    4332                                         <integer>82</integer> 
     4206                                        <integer>227</integer> 
    43334207                                        <key>isResource</key> 
    43344208                                        <string>YES</string> 
     
    43554229                        </array> 
    43564230                        <key>desiredStart</key> 
    4357                         <string>20080625160000</string> 
     4231                        <string>20080623090000</string> 
    43584232                        <key>effort</key> 
    43594233                        <real>3600</real> 
     
    43894263                        </array> 
    43904264                        <key>desiredStart</key> 
    4391                         <string>20080626090000</string> 
     4265                        <string>20080623110000</string> 
    43924266                        <key>effort</key> 
    43934267                        <real>3600</real> 
     
    44234297                        </array> 
    44244298                        <key>desiredStart</key> 
    4425                         <string>20080626110000</string> 
     4299                        <string>20080623140000</string> 
    44264300                        <key>effort</key> 
    44274301                        <real>3600</real> 
     
    44574331                        </array> 
    44584332                        <key>desiredStart</key> 
    4459                         <string>20080610090000</string> 
     4333                        <string>20080612110000</string> 
    44604334                        <key>effort</key> 
    44614335                        <real>28800</real> 
     
    44914365                        </array> 
    44924366                        <key>desiredStart</key> 
    4493                         <string>20080325140000</string> 
    4494                         <key>effort</key> 
     4367                        <string>20080313090000</string> 
     4368                        <key>doneSeconds</key> 
     4369                        <real>57600</real> 
     4370                        <key>effort</key> 
     4371                        <real>28800</real> 
     4372                        <key>effortDone</key> 
    44954373                        <real>28800</real> 
    44964374                        <key>objectId</key> 
    44974375                        <integer>162</integer> 
     4376                        <key>task</key> 
     4377                        <string>Write creation of key pair</string> 
     4378                        <key>workDone</key> 
     4379                        <real>16</real> 
     4380                        <key>workSeconds</key> 
     4381                        <real>57600</real> 
     4382                        <key>workTime</key> 
     4383                        <real>16</real> 
     4384                </dict> 
     4385                <dict> 
     4386                        <key>assignments</key> 
     4387                        <array> 
     4388                                <dict> 
     4389                                        <key>id</key> 
     4390                                        <integer>1</integer> 
     4391                                        <key>units</key> 
     4392                                        <real>0.5</real> 
     4393                                </dict> 
     4394                        </array> 
     4395                        <key>desiredStart</key> 
     4396                        <string>20080414090000</string> 
     4397                        <key>effort</key> 
     4398                        <real>3600</real> 
     4399                        <key>objectId</key> 
     4400                        <integer>163</integer> 
     4401                        <key>prerequisites</key> 
     4402                        <array> 
     4403                                <dict> 
     4404                                        <key>id</key> 
     4405                                        <integer>171</integer> 
     4406                                        <key>isResource</key> 
     4407                                        <string>YES</string> 
     4408                                        <key>kind</key> 
     4409                                        <integer>2</integer> 
     4410                                </dict> 
     4411                        </array> 
     4412                        <key>task</key> 
     4413                        <string>Write file writer append</string> 
     4414                        <key>workSeconds</key> 
     4415                        <real>7200</real> 
     4416                        <key>workTime</key> 
     4417                        <real>2</real> 
     4418                </dict> 
     4419                <dict> 
     4420                        <key>assignments</key> 
     4421                        <array> 
     4422                                <dict> 
     4423                                        <key>id</key> 
     4424                                        <integer>1</integer> 
     4425                                        <key>units</key> 
     4426                                        <real>0.5</real> 
     4427                                </dict> 
     4428                        </array> 
     4429                        <key>desiredStart</key> 
     4430                        <string>20080418151200</string> 
     4431                        <key>effort</key> 
     4432                        <real>7200</real> 
     4433                        <key>objectId</key> 
     4434                        <integer>165</integer> 
     4435                        <key>prerequisites</key> 
     4436                        <array> 
     4437                                <dict> 
     4438                                        <key>id</key> 
     4439                                        <integer>232</integer> 
     4440                                        <key>isResource</key> 
     4441                                        <string>YES</string> 
     4442                                        <key>kind</key> 
     4443                                        <integer>2</integer> 
     4444                                </dict> 
     4445                        </array> 
     4446                        <key>task</key> 
     4447                        <string>Public Key packet</string> 
     4448                        <key>workSeconds</key> 
     4449                        <real>14400</real> 
     4450                        <key>workTime</key> 
     4451                        <real>4</real> 
     4452                </dict> 
     4453                <dict> 
     4454                        <key>assignments</key> 
     4455                        <array> 
     4456                                <dict> 
     4457                                        <key>id</key> 
     4458                                        <integer>1</integer> 
     4459                                        <key>units</key> 
     4460                                        <real>0.5</real> 
     4461                                </dict> 
     4462                        </array> 
     4463                        <key>desiredStart</key> 
     4464                        <string>20080421101200</string> 
     4465                        <key>effort</key> 
     4466                        <real>7200</real> 
     4467                        <key>objectId</key> 
     4468                        <integer>166</integer> 
     4469                        <key>prerequisites</key> 
     4470                        <array> 
     4471                                <dict> 
     4472                                        <key>id</key> 
     4473                                        <integer>165</integer> 
     4474                                        <key>isResource</key> 
     4475                                        <string>YES</string> 
     4476                                        <key>kind</key> 
     4477                                        <integer>2</integer> 
     4478                                </dict> 
     4479                        </array> 
     4480                        <key>task</key> 
     4481                        <string>Secret Key Packet</string> 
     4482                        <key>workSeconds</key> 
     4483                        <real>14400</real> 
     4484                        <key>workTime</key> 
     4485                        <real>4</real> 
     4486                </dict> 
     4487                <dict> 
     4488                        <key>assignments</key> 
     4489                        <array> 
     4490                                <dict> 
     4491                                        <key>id</key> 
     4492                                        <integer>1</integer> 
     4493                                        <key>units</key> 
     4494                                        <real>0.5</real> 
     4495                                </dict> 
     4496                        </array> 
     4497                        <key>desiredStart</key> 
     4498                        <string>20080319110000</string> 
     4499                        <key>doneSeconds</key> 
     4500                        <real>14400</real> 
     4501                        <key>effort</key> 
     4502                        <real>7200</real> 
     4503                        <key>effortDone</key> 
     4504                        <real>7200</real> 
     4505                        <key>objectId</key> 
     4506                        <integer>167</integer> 
     4507                        <key>task</key> 
     4508                        <string>Signing Key pair</string> 
     4509                        <key>workDone</key> 
     4510                        <real>4</real> 
     4511                        <key>workSeconds</key> 
     4512                        <real>14400</real> 
     4513                        <key>workTime</key> 
     4514                        <real>4</real> 
     4515                </dict> 
     4516                <dict> 
     4517                        <key>assignments</key> 
     4518                        <array> 
     4519                                <dict> 
     4520                                        <key>id</key> 
     4521                                        <integer>1</integer> 
     4522                                        <key>units</key> 
     4523                                        <real>0.5</real> 
     4524                                </dict> 
     4525                        </array> 
     4526                        <key>desiredStart</key> 
     4527                        <string>20080414110000</string> 
     4528                        <key>effort</key> 
     4529                        <real>57600</real> 
     4530                        <key>objectId</key> 
     4531                        <integer>168</integer> 
     4532                        <key>prerequisites</key> 
     4533                        <array> 
     4534                                <dict> 
     4535                                        <key>id</key> 
     4536                                        <integer>163</integer> 
     4537                                        <key>isResource</key> 
     4538                                        <string>YES</string> 
     4539                                        <key>kind</key> 
     4540                                        <integer>2</integer> 
     4541                                </dict> 
     4542                        </array> 
     4543                        <key>task</key> 
     4544                        <string>Command line app</string> 
     4545                        <key>workSeconds</key> 
     4546                        <real>115200</real> 
     4547                        <key>workTime</key> 
     4548                        <real>32</real> 
     4549                </dict> 
     4550                <dict> 
     4551                        <key>children</key> 
     4552                        <array> 
     4553                                <integer>213</integer> 
     4554                                <integer>238</integer> 
     4555                                <integer>214</integer> 
     4556                        </array> 
     4557                        <key>objectId</key> 
     4558                        <integer>169</integer> 
     4559                        <key>task</key> 
     4560                        <string>Contingency</string> 
     4561                </dict> 
     4562                <dict> 
     4563                        <key>assignments</key> 
     4564                        <array> 
     4565                                <dict> 
     4566                                        <key>id</key> 
     4567                                        <integer>1</integer> 
     4568                                        <key>units</key> 
     4569                                        <real>0.5</real> 
     4570                                </dict> 
     4571                        </array> 
     4572                        <key>desiredStart</key> 
     4573                        <string>20080603110000</string> 
     4574                        <key>doneSeconds</key> 
     4575                        <real>28800</real> 
     4576                        <key>effort</key> 
     4577                        <real>28800</real> 
     4578                        <key>effortDone</key> 
     4579                        <real>14400</real> 
     4580                        <key>objectId</key> 
     4581                        <integer>170</integer> 
     4582                        <key>prerequisites</key> 
     4583                        <array> 
     4584                                <dict> 
     4585                                        <key>id</key> 
     4586                                        <integer>191</integer> 
     4587                                        <key>isResource</key> 
     4588                                        <string>YES</string> 
     4589                                        <key>kind</key> 
     4590                                        <integer>2</integer> 
     4591                                </dict> 
     4592                        </array> 
     4593                        <key>task</key> 
     4594                        <string>Create Key Pair with passphrase</string> 
     4595                        <key>workDone</key> 
     4596                        <real>8</real> 
     4597                        <key>workSeconds</key> 
     4598                        <real>57600</real> 
     4599                        <key>workTime</key> 
     4600                        <real>16</real> 
     4601                </dict> 
     4602                <dict> 
     4603                        <key>assignments</key> 
     4604                        <array> 
     4605                                <dict> 
     4606                                        <key>id</key> 
     4607                                        <integer>1</integer> 
     4608                                        <key>units</key> 
     4609                                        <real>0.5</real> 
     4610                                </dict> 
     4611                        </array> 
     4612                        <key>desiredStart</key> 
     4613                        <string>20080410090000</string> 
     4614                        <key>doneSeconds</key> 
     4615                        <real>28800</real> 
     4616                        <key>effort</key> 
     4617                        <real>28800</real> 
     4618                        <key>effortDone</key> 
     4619                        <real>14400</real> 
     4620                        <key>objectId</key> 
     4621                        <integer>171</integer> 
    44984622                        <key>prerequisites</key> 
    44994623                        <array> 
     
    45084632                        </array> 
    45094633                        <key>task</key> 
    4510                         <string>Write creation of key pair</string> 
     4634                        <string>Write secret key checksum writer</string> 
     4635                        <key>workDone</key> 
     4636                        <real>8</real> 
    45114637                        <key>workSeconds</key> 
    45124638                        <real>57600</real> 
     
    45254651                        </array> 
    45264652                        <key>desiredStart</key> 
    4527                         <string>20080331140000</string> 
    4528                         <key>effort</key> 
    4529                         <real>3600</real> 
    4530                         <key>objectId</key> 
    4531                         <integer>163</integer> 
    4532                         <key>prerequisites</key> 
    4533                         <array> 
    4534                                 <dict> 
    4535                                         <key>id</key> 
    4536                                         <integer>171</integer> 
    4537                                         <key>isResource</key> 
    4538                                         <string>YES</string> 
    4539                                         <key>kind</key> 
    4540                                         <integer>2</integer> 
    4541                                 </dict> 
    4542                         </array> 
    4543                         <key>task</key> 
    4544                         <string>Write file writer append</string> 
    4545                         <key>workSeconds</key> 
    4546                         <real>7200</real> 
    4547                         <key>workTime</key> 
    4548                         <real>2</real> 
    4549                 </dict> 
    4550                 <dict> 
    4551                         <key>assignments</key> 
    4552                         <array> 
    4553                                 <dict> 
    4554                                         <key>id</key> 
    4555                                         <integer>1</integer> 
    4556                                         <key>units</key> 
    4557                                         <real>0.5</real> 
    4558                                 </dict> 
    4559                         </array> 
    4560                         <key>desiredStart</key> 
    4561                         <string>20080407160000</string> 
    4562                         <key>effort</key> 
    4563                         <real>7200</real> 
    4564                         <key>objectId</key> 
    4565                         <integer>165</integer> 
    4566                         <key>prerequisites</key> 
    4567                         <array> 
    4568                                 <dict> 
    4569                                         <key>id</key> 
    4570                                         <integer>110</integer> 
    4571                                         <key>isResource</key> 
    4572                                         <string>YES</string> 
    4573                                         <key>kind</key> 
    4574                                         <integer>2</integer> 
    4575                                 </dict> 
    4576                         </array> 
    4577                         <key>task</key> 
    4578                         <string>Public Key packet</string> 
    4579                         <key>workSeconds</key> 
    4580                         <real>14400</real> 
    4581                         <key>workTime</key> 
    4582                         <real>4</real> 
    4583                 </dict> 
    4584                 <dict> 
    4585                         <key>assignments</key> 
    4586                         <array> 
    4587                                 <dict> 
    4588                                         <key>id</key> 
    4589                                         <integer>1</integer> 
    4590                                         <key>units</key> 
    4591                                         <real>0.5</real> 
    4592                                 </dict> 
    4593                         </array> 
    4594                         <key>desiredStart</key> 
    4595                         <string>20080408110000</string> 
    4596                         <key>effort</key> 
    4597                         <real>7200</real> 
    4598                         <key>objectId</key> 
    4599                         <integer>166</integer> 
    4600                         <key>prerequisites</key> 
    4601                         <array> 
    4602                                 <dict> 
    4603                                         <key>id</key> 
    4604                                         <integer>165</integer> 
    4605                                         <key>isResource</key> 
    4606                                         <string>YES</string> 
    4607                                         <key>kind</key> 
    4608                                         <integer>2</integer> 
    4609                                 </dict> 
    4610                         </array> 
    4611                         <key>task</key> 
    4612                         <string>Secret Key Packet</string> 
    4613                         <key>workSeconds</key> 
    4614                         <real>14400</real> 
    4615                         <key>workTime</key> 
    4616                         <real>4</real> 
    4617                 </dict> 
    4618                 <dict> 
    4619                         <key>assignments</key> 
    4620                         <array> 
    4621                                 <dict> 
    4622                                         <key>id</key> 
    4623                                         <integer>1</integer> 
    4624                                         <key>units</key> 
    4625                                         <real>0.5</real> 
    4626                                 </dict> 
    4627                         </array> 
    4628                         <key>desiredStart</key> 
    4629                         <string>20080331160000</string> 
    4630                         <key>effort</key> 
    4631                         <real>7200</real> 
    4632                         <key>objectId</key> 
    4633                         <integer>167</integer> 
    4634                         <key>prerequisites</key> 
    4635                         <array> 
    4636                                 <dict> 
    4637                                         <key>id</key> 
    4638                                         <integer>163</integer> 
    4639                                         <key>isResource</key> 
    4640                                         <string>YES</string> 
    4641                                         <key>kind</key> 
    4642                                         <integer>2</integer> 
    4643                                 </dict> 
    4644                         </array> 
    4645                         <key>task</key> 
    4646                         <string>Signing Key pair</string> 
    4647                         <key>workSeconds</key> 
    4648                         <real>14400</real> 
    4649                         <key>workTime</key> 
    4650                         <real>4</real> 
    4651                 </dict> 
    4652                 <dict> 
    4653                         <key>assignments</key> 
    4654                         <array> 
    4655                                 <dict> 
    4656                                         <key>id</key> 
    4657                                         <integer>1</integer> 
    4658                                         <key>units</key> 
    4659                                         <real>0.5</real> 
    4660                                 </dict> 
    4661                         </array> 
    4662                         <key>desiredStart</key> 
    4663                         <string>20080401110000</string> 
    4664                         <key>effort</key> 
    4665                         <real>57600</real> 
    4666                         <key>objectId</key> 
    4667                         <integer>168</integer> 
    4668                         <key>prerequisites</key> 
    4669                         <array> 
    4670                                 <dict> 
    4671                                         <key>id</key> 
    4672                                         <integer>167</integer> 
    4673                                         <key>isResource</key> 
    4674                                         <string>YES</string> 
    4675                                         <key>kind</key> 
    4676                                         <integer>2</integer> 
    4677                                 </dict> 
    4678                         </array> 
    4679                         <key>task</key> 
    4680                         <string>Command line app</string> 
    4681                         <key>workSeconds</key> 
    4682                         <real>115200</real> 
    4683                         <key>workTime</key> 
    4684                         <real>32</real> 
    4685                 </dict> 
    4686                 <dict> 
    4687                         <key>children</key> 
    4688                         <array> 
    4689                                 <integer>213</integer> 
    4690                                 <integer>214</integer> 
    4691                         </array> 
    4692                         <key>objectId</key> 
    4693                         <integer>169</integer> 
    4694                         <key>task</key> 
    4695                         <string>Contingency</string> 
    4696                 </dict> 
    4697                 <dict> 
    4698                         <key>assignments</key> 
    4699                         <array> 
    4700                                 <dict> 
    4701                                         <key>id</key> 
    4702                                         <integer>1</integer> 
    4703                                         <key>units</key> 
    4704                                         <real>0.5</real> 
    4705                                 </dict> 
    4706                         </array> 
    4707                         <key>desiredStart</key> 
    4708                         <string>20080523090000</string> 
    4709                         <key>effort</key> 
    4710                         <real>28800</real> 
    4711                         <key>objectId</key> 
    4712                         <integer>170</integer> 
    4713                         <key>prerequisites</key> 
    4714                         <array> 
    4715                                 <dict> 
    4716                                         <key>id</key> 
    4717                                         <integer>19</integer> 
    4718                                         <key>isResource</key> 
    4719                                         <string>YES</string> 
    4720                                         <key>kind</key> 
    4721                                         <integer>2</integer> 
    4722                                 </dict> 
    4723                         </array> 
    4724                         <key>task</key> 
    4725                         <string>Create Key Pair with passphrase</string> 
    4726                         <key>workSeconds</key> 
    4727                         <real>57600</real> 
    4728                         <key>workTime</key> 
    4729                         <real>16</real> 
    4730                 </dict> 
    4731                 <dict> 
    4732                         <key>assignments</key> 
    4733                         <array> 
    4734                                 <dict> 
    4735                                         <key>id</key> 
    4736                                         <integer>1</integer> 
    4737                                         <key>units</key> 
    4738                                         <real>0.5</real> 
    4739                                 </dict> 
    4740                         </array> 
    4741                         <key>desiredStart</key> 
    4742                         <string>20080327140000</string> 
    4743                         <key>effort</key> 
    4744                         <real>28800</real> 
    4745                         <key>objectId</key> 
    4746                         <integer>171</integer> 
    4747                         <key>prerequisites</key> 
    4748                         <array> 
    4749                                 <dict> 
    4750                                         <key>id</key> 
    4751                                         <integer>162</integer> 
    4752                                         <key>isResource</key> 
    4753                                         <string>YES</string> 
    4754                                         <key>kind</key> 
    4755                                         <integer>2</integer> 
    4756                                 </dict> 
    4757                         </array> 
    4758                         <key>task</key> 
    4759                         <string>Write secret key checksum writer</string> 
    4760                         <key>workSeconds</key> 
    4761                         <real>57600</real> 
    4762                         <key>workTime</key> 
    4763                         <real>16</real> 
    4764                 </dict> 
    4765                 <dict> 
    4766                         <key>assignments</key> 
    4767                         <array> 
    4768                                 <dict> 
    4769                                         <key>id</key> 
    4770                                         <integer>1</integer> 
    4771                                         <key>units</key> 
    4772                                         <real>0.5</real> 
    4773                                 </dict> 
    4774                         </array> 
    4775                         <key>desiredStart</key> 
    4776                         <string>20080407110000</string> 
     4653                        <string>20080418110000</string> 
    47774654                        <key>doneSeconds</key> 
    47784655                        <real>57599.99609375</real> 
     
    48204697                                <integer>178</integer> 
    48214698                                <integer>179</integer> 
     4699                                <integer>218</integer> 
     4700                                <integer>217</integer> 
     4701                                <integer>215</integer> 
     4702                                <integer>219</integer> 
     4703                                <integer>216</integer> 
     4704                                <integer>228</integer> 
     4705                                <integer>234</integer> 
     4706                                <integer>235</integer> 
    48224707                        </array> 
    48234708                        <key>objectId</key> 
     
    48894774                        </array> 
    48904775                        <key>desiredStart</key> 
    4891                         <string>20080626140000</string> 
     4776                        <string>20080729160000</string> 
    48924777                        <key>effort</key> 
    48934778                        <real>28800</real> 
     
    48984783                                <dict> 
    48994784                                        <key>id</key> 
    4900                                         <integer>159</integer> 
     4785                                        <integer>168</integer> 
     4786                                        <key>kind</key> 
     4787                                        <integer>2</integer> 
     4788                                </dict> 
     4789                                <dict> 
     4790                                        <key>id</key> 
     4791                                        <integer>214</integer> 
    49014792                                        <key>isResource</key> 
    49024793                                        <string>YES</string> 
     
    49044795                                        <integer>2</integer> 
    49054796                                </dict> 
    4906                                 <dict> 
    4907                                         <key>id</key> 
    4908                                         <integer>168</integer> 
    4909                                         <key>kind</key> 
    4910                                         <integer>2</integer> 
    4911                                 </dict> 
    49124797                        </array> 
    49134798                        <key>task</key> 
     
    49294814                        </array> 
    49304815                        <key>desiredStart</key> 
    4931                         <string>20080630140000</string> 
     4816                        <string>20080731160000</string> 
    49324817                        <key>effort</key> 
    49334818                        <real>115200</real> 
     
    50264911                        </array> 
    50274912                        <key>desiredStart</key> 
    5028                         <string>20080514160000</string> 
    5029                         <key>effort</key> 
     4913                        <string>20080327090000</string> 
     4914                        <key>doneSeconds</key> 
     4915                        <real>7200</real> 
     4916                        <key>effort</key> 
     4917                        <real>3600</real> 
     4918                        <key>effortDone</key> 
    50304919                        <real>3600</real> 
    50314920                        <key>objectId</key> 
    50324921                        <integer>186</integer> 
    5033                         <key>prerequisites</key> 
    5034                         <array> 
     4922                        <key>task</key> 
     4923                        <string>Sign with V3 signature (FUTURE)</string> 
     4924                        <key>workDone</key> 
     4925                        <real>2</real> 
     4926                        <key>workSeconds</key> 
     4927                        <real>7200</real> 
     4928                        <key>workTime</key> 
     4929                        <real>2</real> 
     4930                </dict> 
     4931                <dict> 
     4932                        <key>assignments</key> 
     4933                        <array> 
     4934                                <dict> 
     4935                                        <key>id</key> 
     4936                                        <integer>1</integer> 
     4937                                        <key>units</key> 
     4938                                        <real>0.5</real> 
     4939                                </dict> 
     4940                        </array> 
     4941                        <key>doneSeconds</key> 
     4942                        <real>23040</real> 
     4943                        <key>effort</key> 
     4944                        <real>11520</real> 
     4945                        <key>effortDone</key> 
     4946                        <real>11520</real> 
     4947                        <key>forcedStart</key> 
     4948                        <string>20070917090000</string> 
     4949                        <key>objectId</key> 
     4950                        <integer>187</integer> 
     4951                        <key>task</key> 
     4952                        <string>Sign with V4 signature</string> 
     4953                        <key>workDone</key> 
     4954                        <real>6.4000000953674316</real> 
     4955                        <key>workSeconds</key> 
     4956                        <real>23040</real> 
     4957                        <key>workTime</key> 
     4958                        <real>6.4000000953674316</real> 
     4959                </dict> 
     4960                <dict> 
     4961                        <key>assignments</key> 
     4962                        <array> 
     4963                                <dict> 
     4964                                        <key>id</key> 
     4965                                        <integer>1</integer> 
     4966                                        <key>units</key> 
     4967                                        <real>0.5</real> 
     4968                                </dict> 
     4969                        </array> 
     4970                        <key>desiredStart</key> 
     4971                        <string>20080512160000</string> 
     4972                        <key>doneSeconds</key> 
     4973                        <real>28800</real> 
     4974                        <key>effort</key> 
     4975                        <real>14400</real> 
     4976                        <key>effortDone</key> 
     4977                        <real>14400</real> 
     4978                        <key>objectId</key> 
     4979                        <integer>188</integer> 
     4980                        <key>prerequisites</key> 
     4981                        <array> 
     4982                                <dict> 
     4983                                        <key>id</key> 
     4984                                        <integer>112</integer> 
     4985                                        <key>kind</key> 
     4986                                        <integer>2</integer> 
     4987                                </dict> 
     4988                        </array> 
     4989                        <key>task</key> 
     4990                        <string>Verify V3 signature</string> 
     4991                        <key>workDone</key> 
     4992                        <real>8</real> 
     4993                        <key>workSeconds</key> 
     4994                        <real>28800</real> 
     4995                        <key>workTime</key> 
     4996                        <real>8</real> 
     4997                </dict> 
     4998                <dict> 
     4999                        <key>assignments</key> 
     5000                        <array> 
     5001                                <dict> 
     5002                                        <key>id</key> 
     5003                                        <integer>1</integer> 
     5004                                        <key>units</key> 
     5005                                        <real>0.5</real> 
     5006                                </dict> 
     5007                        </array> 
     5008                        <key>desiredStart</key> 
     5009                        <string>20080311090000</string> 
     5010                        <key>doneSeconds</key> 
     5011                        <real>28800</real> 
     5012                        <key>effort</key> 
     5013                        <real>14400</real> 
     5014                        <key>effortDone</key> 
     5015                        <real>14400</real> 
     5016                        <key>objectId</key> 
     5017                        <integer>189</integer> 
     5018                        <key>prerequisites</key> 
     5019                        <array> 
     5020                                <dict> 
     5021                                        <key>id</key> 
     5022                                        <integer>112</integer> 
     5023                                        <key>kind</key> 
     5024                                        <integer>2</integer> 
     5025                                </dict> 
     5026                        </array> 
     5027                        <key>task</key> 
     5028                        <string>Verify V4 signature</string> 
     5029                        <key>workDone</key> 
     5030                        <real>8</real> 
     5031                        <key>workSeconds</key> 
     5032                        <real>28800</real> 
     5033                        <key>workTime</key> 
     5034                        <real>8</real> 
     5035                </dict> 
     5036                <dict> 
     5037                        <key>assignments</key> 
     5038                        <array> 
     5039                                <dict> 
     5040                                        <key>id</key> 
     5041                                        <integer>1</integer> 
     5042                                        <key>units</key> 
     5043                                        <real>0.5</real> 
     5044                                </dict> 
     5045                        </array> 
     5046                        <key>desiredStart</key> 
     5047                        <string>20080530110000</string> 
     5048                        <key>effort</key> 
     5049                        <real>14400</real> 
     5050                        <key>objectId</key> 
     5051                        <integer>190</integer> 
     5052                        <key>prerequisites</key> 
     5053                        <array> 
     5054                                <dict> 
     5055                                        <key>id</key> 
     5056                                        <integer>106</integer> 
     5057                                        <key>kind</key> 
     5058                                        <integer>2</integer> 
     5059                                </dict> 
     5060                                <dict> 
     5061                                        <key>id</key> 
     5062                                        <integer>124</integer> 
     5063                                        <key>kind</key> 
     5064                                        <integer>2</integer> 
     5065                                </dict> 
    50355066                                <dict> 
    50365067                                        <key>id</key> 
     
    50435074                        </array> 
    50445075                        <key>task</key> 
    5045                         <string>Sign with V3 signature</string> 
    5046                         <key>workSeconds</key> 
    5047                         <real>7200</real> 
    5048                         <key>workTime</key> 
    5049                         <real>2</real> 
    5050                 </dict> 
    5051                 <dict> 
    5052                         <key>assignments</key> 
    5053                         <array> 
    5054                                 <dict> 
    5055                                         <key>id</key> 
    5056                                         <integer>1</integer> 
    5057                                         <key>units</key> 
    5058                                         <real>0.5</real> 
    5059                                 </dict> 
    5060                         </array> 
    5061                         <key>doneSeconds</key> 
    5062                         <real>23040</real> 
    5063                         <key>effort</key> 
    5064                         <real>11520</real> 
    5065                         <key>effortDone</key> 
    5066                         <real>11520</real> 
    5067                         <key>forcedStart</key> 
    5068                         <string>20070917090000</string> 
    5069                         <key>objectId</key> 
    5070                         <integer>187</integer> 
    5071                         <key>task</key> 
    5072                         <string>Sign with V4 signature</string> 
    5073                         <key>workDone</key> 
    5074                         <real>6.4000000953674316</real> 
    5075                         <key>workSeconds</key> 
    5076                         <real>23040</real> 
    5077                         <key>workTime</key> 
    5078                         <real>6.4000000953674316</real> 
    5079                 </dict> 
    5080                 <dict> 
    5081                         <key>assignments</key> 
    5082                         <array> 
    5083                                 <dict> 
    5084                                         <key>id</key> 
    5085                                         <integer>1</integer> 
    5086                                         <key>units</key> 
    5087                                         <real>0.5</real> 
    5088                                 </dict> 
    5089                         </array> 
    5090                         <key>desiredStart</key> 
    5091                         <string>20080515090000</string> 
    5092                         <key>effort</key> 
    5093                         <real>14400</real> 
    5094                         <key>objectId</key> 
    5095                         <integer>188</integer> 
    5096                         <key>prerequisites</key> 
    5097                         <array> 
    5098                                 <dict> 
    5099                                         <key>id</key> 
    5100                                         <integer>112</integer> 
    5101                                         <key>kind</key> 
    5102                                         <integer>2</integer> 
    5103                                 </dict> 
    5104                                 <dict> 
    5105                                         <key>id</key> 
    5106                                         <integer>186</integer> 
    5107                                         <key>isResource</key> 
    5108                                         <string>YES</string> 
    5109                                         <key>kind</key> 
    5110                                         <integer>2</integer> 
    5111                                 </dict> 
    5112                         </array> 
    5113                         <key>task</key> 
    5114                         <string>Verify V3 signature</string> 
     5076                        <string>Test all supported Hash Algorithms</string> 
    51155077                        <key>workSeconds</key> 
    51165078                        <real>28800</real> 
     
    51295091                        </array> 
    51305092                        <key>desiredStart</key> 
    5131                         <string>20080311090000</string> 
    5132                         <key>doneSeconds</key> 
    5133                         <real>28800</real> 
    5134                         <key>effort</key> 
    5135                         <real>14400</real> 
    5136                         <key>effortDone</key> 
    5137                         <real>14400</real> 
    5138                         <key>objectId</key> 
    5139                         <integer>189</integer> 
    5140                         <key>prerequisites</key> 
    5141                         <array> 
    5142                                 <dict> 
    5143                                         <key>id</key> 
    5144                                         <integer>112</integer> 
    5145                                         <key>kind</key> 
    5146                                         <integer>2</integer> 
    5147                                 </dict> 
    5148                         </array> 
    5149                         <key>task</key> 
    5150                         <string>Verify V4 signature</string> 
    5151                         <key>workDone</key> 
    5152                         <real>8</real> 
    5153                         <key>workSeconds</key> 
    5154                         <real>28800</real> 
    5155                         <key>workTime</key> 
    5156                         <real>8</real> 
    5157                 </dict> 
    5158                 <dict> 
    5159                         <key>assignments</key> 
    5160                         <array> 
    5161                                 <dict> 
    5162                                         <key>id</key> 
    5163                                         <integer>1</integer> 
    5164                                         <key>units</key> 
    5165                                         <real>0.5</real> 
    5166                                 </dict> 
    5167                         </array> 
    5168                         <key>desiredStart</key> 
    5169                         <string>20080516090000</string> 
    5170                         <key>effort</key> 
    5171                         <real>14400</real> 
    5172                         <key>objectId</key> 
    5173                         <integer>190</integer> 
    5174                         <key>prerequisites</key> 
    5175                         <array> 
    5176                                 <dict> 
    5177                                         <key>id</key> 
    5178                                         <integer>106</integer> 
    5179                                         <key>kind</key> 
    5180                                         <integer>2</integer> 
    5181                                 </dict> 
    5182                                 <dict> 
    5183                                         <key>id</key> 
    5184                                         <integer>124</integer> 
    5185                                         <key>kind</key> 
    5186                                         <integer>2</integer> 
    5187                                 </dict> 
    5188                                 <dict> 
    5189                                         <key>id</key> 
    5190                                         <integer>188</integer> 
    5191                                         <key>isResource</key> 
    5192                                         <string>YES</string> 
    5193                                         <key>kind</key> 
    5194                                         <integer>2</integer> 
    5195                                 </dict> 
    5196                         </array> 
    5197                         <key>task</key> 
    5198                         <string>Test all supported Hash Algorithms</string> 
    5199                         <key>workSeconds</key> 
    5200                         <real>28800</real> 
    5201                         <key>workTime</key> 
    5202                         <real>8</real> 
    5203                 </dict> 
    5204                 <dict> 
    5205                         <key>assignments</key> 
    5206                         <array> 
    5207                                 <dict> 
    5208                                         <key>id</key> 
    5209                                         <integer>1</integer> 
    5210                                         <key>units</key> 
    5211                                         <real>0.5</real> 
    5212                                 </dict> 
    5213                         </array> 
    5214                         <key>desiredStart</key> 
    5215                         <string>20080519090000</string> 
     5093                        <string>20080602110000</string> 
    52165094                        <key>effort</key> 
    52175095                        <real>28800</real> 
     
    53885266                        </array> 
    53895267                        <key>desiredStart</key> 
    5390                         <string>20080612090000</string> 
     5268                        <string>20080616110000</string> 
    53915269                        <key>effort</key> 
    53925270                        <real>28800</real> 
     
    54225300                        </array> 
    54235301                        <key>desiredStart</key> 
    5424                         <string>20080616090000</string> 
     5302                        <string>20080618110000</string> 
    54255303                        <key>effort</key> 
    54265304                        <real>28800</real> 
     
    54555333                                </dict> 
    54565334                        </array> 
    5457                         <key>desiredStart</key> 
    5458                         <string>20080421110000</string> 
    5459                         <key>effort</key> 
    5460                         <real>28800</real> 
     5335                        <key>completionPercentage</key> 
     5336                        <real>1</real> 
     5337                        <key>desiredStart</key> 
     5338                        <string>20080415160000</string> 
     5339                        <key>effort</key> 
     5340                        <real>0.0</real> 
    54615341                        <key>objectId</key> 
    54625342                        <integer>201</integer> 
     5343                        <key>task</key> 
     5344                        <string>(NEW) Write detached signature and verify (FUTURE)</string> 
     5345                </dict> 
     5346                <dict> 
     5347                        <key>children</key> 
     5348                        <array> 
     5349                                <integer>204</integer> 
     5350                                <integer>205</integer> 
     5351                                <integer>206</integer> 
     5352                        </array> 
     5353                        <key>isExpanded</key> 
     5354                        <false/> 
     5355                        <key>objectId</key> 
     5356                        <integer>203</integer> 
     5357                        <key>task</key> 
     5358                        <string>(NEW) Decrypt compressed packet</string> 
     5359                </dict> 
     5360                <dict> 
     5361                        <key>assignments</key> 
     5362                        <array> 
     5363                                <dict> 
     5364                                        <key>id</key> 
     5365                                        <integer>1</integer> 
     5366                                        <key>units</key> 
     5367                                        <real>0.5</real> 
     5368                                </dict> 
     5369                        </array> 
     5370                        <key>doneSeconds</key> 
     5371                        <real>57600</real> 
     5372                        <key>effort</key> 
     5373                        <real>28800</real> 
     5374                        <key>effortDone</key> 
     5375                        <real>28800</real> 
     5376                        <key>objectId</key> 
     5377                        <integer>204</integer> 
     5378                        <key>task</key> 
     5379                        <string>ZIP-compressed</string> 
     5380                        <key>workDone</key> 
     5381                        <real>16</real> 
     5382                        <key>workSeconds</key> 
     5383                        <real>57600</real> 
     5384                        <key>workTime</key> 
     5385                        <real>16</real> 
     5386                </dict> 
     5387                <dict> 
     5388                        <key>assignments</key> 
     5389                        <array> 
     5390                                <dict> 
     5391                                        <key>id</key> 
     5392                                        <integer>1</integer> 
     5393                                        <key>units</key> 
     5394                                        <real>0.5</real> 
     5395                                </dict> 
     5396                        </array> 
     5397                        <key>desiredStart</key> 
     5398                        <string>20080625140000</string> 
     5399                        <key>doneSeconds</key> 
     5400                        <real>57600</real> 
     5401                        <key>effort</key> 
     5402                        <real>28800</real> 
     5403                        <key>effortDone</key> 
     5404                        <real>28800</real> 
     5405                        <key>objectId</key> 
     5406                        <integer>205</integer> 
     5407                        <key>task</key> 
     5408                        <string>ZLIB-compressed</string> 
     5409                        <key>workDone</key> 
     5410                        <real>16</real> 
     5411                        <key>workSeconds</key> 
     5412                        <real>57600</real> 
     5413                        <key>workTime</key> 
     5414                        <real>16</real> 
     5415                </dict> 
     5416                <dict> 
     5417                        <key>assignments</key> 
     5418                        <array> 
     5419                                <dict> 
     5420                                        <key>id</key> 
     5421                                        <integer>1</integer> 
     5422                                        <key>units</key> 
     5423                                        <real>0.5</real> 
     5424                                </dict> 
     5425                        </array> 
     5426                        <key>desiredStart</key> 
     5427                        <string>20080612140000</string> 
     5428                        <key>doneSeconds</key> 
     5429                        <real>57600</real> 
     5430                        <key>effort</key> 
     5431                        <real>28800</real> 
     5432                        <key>effortDone</key> 
     5433                        <real>28800</real> 
     5434                        <key>filterSelection</key> 
     5435                        <true/> 
     5436                        <key>objectId</key> 
     5437                        <integer>206</integer> 
     5438                        <key>task</key> 
     5439                        <string>BZIP2-compressed</string> 
     5440                        <key>workDone</key> 
     5441                        <real>16</real> 
     5442                        <key>workSeconds</key> 
     5443                        <real>57600</real> 
     5444                        <key>workTime</key> 
     5445                        <real>16</real> 
     5446                </dict> 
     5447                <dict> 
     5448                        <key>assignments</key> 
     5449                        <array> 
     5450                                <dict> 
     5451                                        <key>id</key> 
     5452                                        <integer>1</integer> 
     5453                                        <key>units</key> 
     5454                                        <real>0.5</real> 
     5455                                </dict> 
     5456                        </array> 
     5457                        <key>desiredStart</key> 
     5458                        <string>20080417164800</string> 
     5459                        <key>doneSeconds</key> 
     5460                        <real>51840</real> 
     5461                        <key>effort</key> 
     5462                        <real>28800</real> 
     5463                        <key>effortDone</key> 
     5464                        <real>25920</real> 
     5465                        <key>objectId</key> 
     5466                        <integer>207</integer> 
     5467                        <key>prerequisites</key> 
     5468                        <array> 
     5469                                <dict> 
     5470                                        <key>id</key> 
     5471                                        <integer>166</integer> 
     5472                                        <key>isResource</key> 
     5473                                        <string>YES</string> 
     5474                                        <key>kind</key> 
     5475                                        <integer>2</integer> 
     5476                                </dict> 
     5477                        </array> 
     5478                        <key>task</key> 
     5479                        <string>ZIP-compress</string> 
     5480                        <key>workDone</key> 
     5481                        <real>14.399999618530273</real> 
     5482                        <key>workSeconds</key> 
     5483                        <real>57600</real> 
     5484                        <key>workTime</key> 
     5485                        <real>16</real> 
     5486                </dict> 
     5487                <dict> 
     5488                        <key>assignments</key> 
     5489                        <array> 
     5490                                <dict> 
     5491                                        <key>id</key> 
     5492                                        <integer>1</integer> 
     5493                                        <key>units</key> 
     5494                                        <real>0.5</real> 
     5495                                </dict> 
     5496                        </array> 
     5497                        <key>doneSeconds</key> 
     5498                        <real>57600</real> 
     5499                        <key>effort</key> 
     5500                        <real>28800</real> 
     5501                        <key>effortDone</key> 
     5502                        <real>28800</real> 
     5503                        <key>objectId</key> 
     5504                        <integer>208</integer> 
     5505                        <key>task</key> 
     5506                        <string>ZIP-decompress</string> 
     5507                        <key>workDone</key> 
     5508                        <real>16</real> 
     5509                        <key>workSeconds</key> 
     5510                        <real>57600</real> 
     5511                        <key>workTime</key> 
     5512                        <real>16</real> 
     5513                </dict> 
     5514                <dict> 
     5515                        <key>assignments</key> 
     5516                        <array> 
     5517                                <dict> 
     5518                                        <key>id</key> 
     5519                                        <integer>1</integer> 
     5520                                        <key>units</key> 
     5521                                        <real>0.5</real> 
     5522                                </dict> 
     5523                        </array> 
     5524                        <key>desiredStart</key> 
     5525                        <string>20080228171200</string> 
     5526                        <key>doneSeconds</key> 
     5527                        <real>115200</real> 
     5528                        <key>effort</key> 
     5529                        <real>57600</real> 
     5530                        <key>effortDone</key> 
     5531                        <real>57600</real> 
     5532                        <key>objectId</key> 
     5533                        <integer>209</integer> 
     5534                        <key>task</key> 
     5535                        <string>ZIP-compress</string> 
     5536                        <key>workDone</key> 
     5537                        <real>32</real> 
     5538                        <key>workSeconds</key> 
     5539                        <real>115200</real> 
     5540                        <key>workTime</key> 
     5541                        <real>32</real> 
     5542                </dict> 
     5543                <dict> 
     5544                        <key>assignments</key> 
     5545                        <array> 
     5546                                <dict> 
     5547                                        <key>id</key> 
     5548                                        <integer>1</integer> 
     5549                                        <key>units</key> 
     5550                                        <real>0.5</real> 
     5551                                </dict> 
     5552                        </array> 
     5553                        <key>doneSeconds</key> 
     5554                        <real>57600</real> 
     5555                        <key>effort</key> 
     5556                        <real>28800</real> 
     5557                        <key>effortDone</key> 
     5558                        <real>28800</real> 
     5559                        <key>objectId</key> 
     5560                        <integer>210</integer> 
     5561                        <key>task</key> 
     5562                        <string>ZIP-decompress</string> 
     5563                        <key>workDone</key> 
     5564                        <real>16</real> 
     5565                        <key>workSeconds</key> 
     5566                        <real>57600</real> 
     5567                        <key>workTime</key> 
     5568                        <real>16</real> 
     5569                </dict> 
     5570                <dict> 
     5571                        <key>assignments</key> 
     5572                        <array> 
     5573                                <dict> 
     5574                                        <key>id</key> 
     5575                                        <integer>1</integer> 
     5576                                        <key>units</key> 
     5577                                        <real>0.5</real> 
     5578                                </dict> 
     5579                        </array> 
     5580                        <key>desiredStart</key> 
     5581                        <string>20080310140000</string> 
     5582                        <key>doneSeconds</key> 
     5583                        <real>57600</real> 
     5584                        <key>effort</key> 
     5585                        <real>28800</real> 
     5586                        <key>effortDone</key> 
     5587                        <real>28800</real> 
     5588                        <key>objectId</key> 
     5589                        <integer>211</integer> 
     5590                        <key>task</key> 
     5591                        <string>ZLIB-decompress</string> 
     5592                        <key>workDone</key> 
     5593                        <real>16</real> 
     5594                        <key>workSeconds</key> 
     5595                        <real>57600</real> 
     5596                        <key>workTime</key> 
     5597                        <real>16</real> 
     5598                </dict> 
     5599                <dict> 
     5600                        <key>assignments</key> 
     5601                        <array> 
     5602                                <dict> 
     5603                                        <key>id</key> 
     5604                                        <integer>1</integer> 
     5605                                        <key>units</key> 
     5606                                        <real>0.5</real> 
     5607                                </dict> 
     5608                        </array> 
     5609                        <key>desiredStart</key> 
     5610                        <string>20080307140000</string> 
     5611                        <key>doneSeconds</key> 
     5612                        <real>57600</real> 
     5613                        <key>effort</key> 
     5614                        <real>28800</real> 
     5615                        <key>effortDone</key> 
     5616                        <real>28800</real> 
     5617                        <key>objectId</key> 
     5618                        <integer>212</integer> 
     5619                        <key>task</key> 
     5620                        <string>BZIP2-decompress</string> 
     5621                        <key>workDone</key> 
     5622                        <real>16</real> 
     5623                        <key>workSeconds</key> 
     5624                        <real>57600</real> 
     5625                        <key>workTime</key> 
     5626                        <real>16</real> 
     5627                </dict> 
     5628                <dict> 
     5629                        <key>assignments</key> 
     5630                        <array> 
     5631                                <dict> 
     5632                                        <key>id</key> 
     5633                                        <integer>1</integer> 
     5634                                        <key>units</key> 
     5635                                        <real>0.5</real> 
     5636                                </dict> 
     5637                        </array> 
     5638                        <key>doneSeconds</key> 
     5639                        <real>288000</real> 
     5640                        <key>effort</key> 
     5641                        <real>144000</real> 
     5642                        <key>effortDone</key> 
     5643                        <real>144000</real> 
     5644                        <key>forcedStart</key> 
     5645                        <string>20080128140000</string> 
     5646                        <key>objectId</key> 
     5647                        <integer>213</integer> 
     5648                        <key>task</key> 
     5649                        <string>Support for Ben Taylor</string> 
     5650                        <key>workDone</key> 
     5651                        <real>80</real> 
     5652                        <key>workSeconds</key> 
     5653                        <real>288000</real> 
     5654                        <key>workTime</key> 
     5655                        <real>80</real> 
     5656                </dict> 
     5657                <dict> 
     5658                        <key>assignments</key> 
     5659                        <array> 
     5660                                <dict> 
     5661                                        <key>id</key> 
     5662                                        <integer>1</integer> 
     5663                                        <key>units</key> 
     5664                                        <real>0.5</real> 
     5665                                </dict> 
     5666                        </array> 
     5667                        <key>desiredStart</key> 
     5668                        <string>20080623160000</string> 
     5669                        <key>effort</key> 
     5670                        <real>374400</real> 
     5671                        <key>objectId</key> 
     5672                        <integer>214</integer> 
     5673                        <key>prerequisites</key> 
     5674                        <array> 
     5675                                <dict> 
     5676                                        <key>id</key> 
     5677                                        <integer>159</integer> 
     5678                                        <key>isResource</key> 
     5679                                        <string>YES</string> 
     5680                                        <key>kind</key> 
     5681                                        <integer>2</integer> 
     5682                                </dict> 
     5683                        </array> 
     5684                        <key>task</key> 
     5685                        <string>Other</string> 
     5686                        <key>workSeconds</key> 
     5687                        <real>748800</real> 
     5688                        <key>workTime</key> 
     5689                        <real>208</real> 
     5690                </dict> 
     5691                <dict> 
     5692                        <key>effort</key> 
     5693                        <real>0.0</real> 
     5694                        <key>objectId</key> 
     5695                        <integer>215</integer> 
     5696                        <key>task</key> 
     5697                        <string>Implement Use of Preferred Public Key Algorithm</string> 
     5698                </dict> 
     5699                <dict> 
     5700                        <key>effort</key> 
     5701                        <real>0.0</real> 
     5702                        <key>objectId</key> 
     5703                        <integer>216</integer> 
     5704                        <key>task</key> 
     5705                        <string>Implement Use of Preferred Hash Algorithm</string> 
     5706                </dict> 
     5707                <dict> 
     5708                        <key>effort</key> 
     5709                        <real>0.0</real> 
     5710                        <key>objectId</key> 
     5711                        <integer>217</integer> 
     5712                        <key>task</key> 
     5713                        <string>Implement Use of Preferred Symmetric Algorithm</string> 
     5714                </dict> 
     5715                <dict> 
     5716                        <key>effort</key> 
     5717                        <real>0.0</real> 
     5718                        <key>objectId</key> 
     5719                        <integer>218</integer> 
     5720                        <key>task</key> 
     5721                        <string>Implement support for other Symmetric Algorithms</string> 
     5722                </dict> 
     5723                <dict> 
     5724                        <key>effort</key> 
     5725                        <real>0.0</real> 
     5726                        <key>objectId</key> 
     5727                        <integer>219</integer> 
     5728                        <key>task</key> 
     5729                        <string>Implement support for other Hash Algorithms</string> 
     5730                </dict> 
     5731                <dict> 
     5732                        <key>children</key> 
     5733                        <array> 
     5734                                <integer>224</integer> 
     5735                                <integer>226</integer> 
     5736                                <integer>225</integer> 
     5737                                <integer>227</integer> 
     5738                        </array> 
     5739                        <key>objectId</key> 
     5740                        <integer>223</integer> 
     5741                        <key>task</key> 
     5742                        <string>(NEW) 3DES</string> 
     5743                </dict> 
     5744                <dict> 
     5745                        <key>assignments</key> 
     5746                        <array> 
     5747                                <dict> 
     5748                                        <key>id</key> 
     5749                                        <integer>1</integer> 
     5750                                        <key>units</key> 
     5751                                        <real>0.5</real> 
     5752                                </dict> 
     5753                        </array> 
     5754                        <key>completionPercentage</key> 
     5755                        <real>1</real> 
     5756                        <key>effort</key> 
     5757                        <real>0.0</real> 
     5758                        <key>forcedStart</key> 
     5759                        <string>20070903180000</string> 
     5760                        <key>objectId</key> 
     5761                        <integer>224</integer> 
     5762                        <key>task</key> 
     5763                        <string>Unarmoured/No Passphrase</string> 
     5764                </dict> 
     5765                <dict> 
     5766                        <key>assignments</key> 
     5767                        <array> 
     5768                                <dict> 
     5769                                        <key>id</key> 
     5770                                        <integer>1</integer> 
     5771                                        <key>units</key> 
     5772                                        <real>0.5</real> 
     5773                                </dict> 
     5774                        </array> 
     5775                        <key>desiredStart</key> 
     5776                        <string>20080620110000</string> 
     5777                        <key>effort</key> 
     5778                        <real>3600</real> 
     5779                        <key>objectId</key> 
     5780                        <integer>225</integer> 
     5781                        <key>prerequisites</key> 
     5782                        <array> 
     5783                                <dict> 
     5784                                        <key>id</key> 
     5785                                        <integer>200</integer> 
     5786                                        <key>isResource</key> 
     5787                                        <string>YES</string> 
     5788                                        <key>kind</key> 
     5789                                        <integer>2</integer> 
     5790                                </dict> 
     5791                        </array> 
     5792                        <key>task</key> 
     5793                        <string>Armoured/No Passphrase</string> 
     5794                        <key>workSeconds</key> 
     5795                        <real>7200</real> 
     5796                        <key>workTime</key> 
     5797                        <real>2</real> 
     5798                </dict> 
     5799                <dict> 
     5800                        <key>assignments</key> 
     5801                        <array> 
     5802                                <dict> 
     5803                                        <key>id</key> 
     5804                                        <integer>1</integer> 
     5805                                        <key>units</key> 
     5806                                        <real>0.5</real> 
     5807                                </dict> 
     5808                        </array> 
     5809                        <key>desiredStart</key> 
     5810                        <string>20080421164800</string> 
     5811                        <key>effort</key> 
     5812                        <real>3600</real> 
     5813                        <key>objectId</key> 
     5814                        <integer>226</integer> 
     5815                        <key>prerequisites</key> 
     5816                        <array> 
     5817                                <dict> 
     5818                                        <key>id</key> 
     5819                                        <integer>207</integer> 
     5820                                        <key>isResource</key> 
     5821                                        <string>YES</string> 
     5822                                        <key>kind</key> 
     5823                                        <integer>2</integer> 
     5824                                </dict> 
     5825                        </array> 
     5826                        <key>task</key> 
     5827                        <string>Unarmoured/Passphrase</string> 
     5828                        <key>workSeconds</key> 
     5829                        <real>7200</real> 
     5830                        <key>workTime</key> 
     5831                        <real>2</real> 
     5832                </dict> 
     5833                <dict> 
     5834                        <key>assignments</key> 
     5835                        <array> 
     5836                                <dict> 
     5837                                        <key>id</key> 
     5838                                        <integer>1</integer> 
     5839                                        <key>units</key> 
     5840                                        <real>0.5</real> 
     5841                                </dict> 
     5842                        </array> 
     5843                        <key>desiredStart</key> 
     5844                        <string>20080620140000</string> 
     5845                        <key>effort</key> 
     5846                        <real>3600</real> 
     5847                        <key>objectId</key> 
     5848                        <integer>227</integer> 
     5849                        <key>prerequisites</key> 
     5850                        <array> 
     5851                                <dict> 
     5852                                        <key>id</key> 
     5853                                        <integer>225</integer> 
     5854                                        <key>isResource</key> 
     5855                                        <string>YES</string> 
     5856                                        <key>kind</key> 
     5857                                        <integer>2</integer> 
     5858                                </dict> 
     5859                        </array> 
     5860                        <key>task</key> 
     5861                        <string>Armoured/Passphrase</string> 
     5862                        <key>workSeconds</key> 
     5863                        <real>7200</real> 
     5864                        <key>workTime</key> 
     5865                        <real>2</real> 
     5866                </dict> 
     5867                <dict> 
     5868                        <key>effort</key> 
     5869                        <real>0.0</real> 
     5870                        <key>objectId</key> 
     5871                        <integer>228</integer> 
     5872                        <key>task</key> 
     5873                        <string>Implement detached signatures and verification</string> 
     5874                </dict> 
     5875                <dict> 
     5876                        <key>assignments</key> 
     5877                        <array> 
     5878                                <dict> 
     5879                                        <key>id</key> 
     5880                                        <integer>1</integer> 
     5881                                        <key>units</key> 
     5882                                        <real>0.5</real> 
     5883                                </dict> 
     5884                        </array> 
     5885                        <key>desiredStart</key> 
     5886                        <string>20080425110000</string> 
     5887                        <key>doneSeconds</key> 
     5888                        <real>144000</real> 
     5889                        <key>effort</key> 
     5890                        <real>144000</real> 
     5891                        <key>effortDone</key> 
     5892                        <real>72000</real> 
     5893                        <key>objectId</key> 
     5894                        <integer>231</integer> 
    54635895                        <key>prerequisites</key> 
    54645896                        <array> 
     
    54735905                        </array> 
    54745906                        <key>task</key> 
    5475                         <string>(NEW) Write detached signature and verify</string> 
    5476                         <key>workSeconds</key> 
     5907                        <string>(NEW) Implement S2K specifiers</string> 
     5908                        <key>workDone</key> 
     5909                        <real>40</real> 
     5910                        <key>workSeconds</key> 
     5911                        <real>288000</real> 
     5912                        <key>workTime</key> 
     5913                        <real>80</real> 
     5914                </dict> 
     5915                <dict> 
     5916                        <key>assignments</key> 
     5917                        <array> 
     5918                                <dict> 
     5919                                        <key>id</key> 
     5920                                        <integer>1</integer> 
     5921                                        <key>units</key> 
     5922                                        <real>0.5</real> 
     5923                                </dict> 
     5924                        </array> 
     5925                        <key>desiredStart</key> 
     5926                        <string>20080414151200</string> 
     5927                        <key>doneSeconds</key> 
     5928                        <real>103680</real> 
     5929                        <key>effort</key> 
    54775930                        <real>57600</real> 
    5478                         <key>workTime</key> 
    5479                         <real>16</real> 
    5480                 </dict> 
    5481                 <dict> 
    5482                         <key>children</key> 
    5483                         <array> 
    5484                                 <integer>204</integer> 
    5485                                 <integer>205</integer> 
    5486                                 <integer>206</integer> 
    5487                         </array> 
    5488                         <key>objectId</key> 
    5489                         <integer>203</integer> 
    5490                         <key>task</key> 
    5491                         <string>(NEW) Decrypt compressed packet</string> 
    5492                 </dict> 
    5493                 <dict> 
    5494                         <key>assignments</key> 
    5495                         <array> 
    5496                                 <dict> 
    5497                                         <key>id</key> 
    5498                                         <integer>1</integer> 
    5499                                         <key>units</key> 
    5500                                         <real>0.5</real> 
    5501                                 </dict> 
    5502                         </array> 
    5503                         <key>doneSeconds</key> 
    5504                         <real>57600</real> 
    5505                         <key>effort</key> 
    5506                         <real>28800</real> 
    5507                         <key>effortDone</key> 
    5508                         <real>28800</real> 
    5509                         <key>objectId</key> 
    5510                         <integer>204</integer> 
    5511                         <key>task</key> 
    5512                         <string>ZIP-compressed</string> 
    5513                         <key>workDone</key> 
    5514                         <real>16</real> 
    5515                         <key>workSeconds</key> 
    5516                         <real>57600</real> 
    5517                         <key>workTime</key> 
    5518                         <real>16</real> 
    5519                 </dict> 
    5520                 <dict> 
    5521                         <key>assignments</key> 
    5522                         <array> 
    5523                                 <dict> 
    5524                                         <key>id</key> 
    5525                                         <integer>1</integer> 
    5526                                         <key>units</key> 
    5527                                         <real>0.5</real> 
    5528                                 </dict> 
    5529                         </array> 
    5530                         <key>desiredStart</key> 
    5531                         <string>20080625140000</string> 
    5532                         <key>doneSeconds</key> 
    5533                         <real>57600</real> 
    5534                         <key>effort</key> 
    5535                         <real>28800</real> 
    5536                         <key>effortDone</key> 
    5537                         <real>28800</real> 
    5538                         <key>objectId</key> 
    5539                         <integer>205</integer> 
    5540                         <key>task</key> 
    5541                         <string>ZLIB-compressed</string> 
    5542                         <key>workDone</key> 
    5543                         <real>16</real> 
    5544                         <key>workSeconds</key> 
    5545                         <real>57600</real> 
    5546                         <key>workTime</key> 
    5547                         <real>16</real> 
    5548                 </dict> 
    5549                 <dict> 
    5550                         <key>assignments</key> 
    5551                         <array> 
    5552                                 <dict> 
    5553                                         <key>id</key> 
    5554                                         <integer>1</integer> 
    5555                                         <key>units</key> 
    5556                                         <real>0.5</real> 
    5557                                 </dict> 
    5558                         </array> 
    5559                         <key>desiredStart</key> 
    5560                         <string>20080619140000</string> 
    5561                         <key>effort</key> 
    5562                         <real>28800</real> 
    5563                         <key>filterSelection</key> 
    5564                         <true/> 
    5565                         <key>objectId</key> 
    5566                         <integer>206</integer> 
    5567                         <key>prerequisites</key> 
    5568                         <array> 
    5569                                 <dict> 
    5570                                         <key>id</key> 
    5571                                         <integer>70</integer> 
     5931                        <key>effortDone</key> 
     5932                        <real>51840</real> 
     5933                        <key>objectId</key> 
     5934                        <integer>232</integer> 
     5935                        <key>prerequisites</key> 
     5936                        <array> 
     5937                                <dict> 
     5938                                        <key>id</key> 
     5939                                        <integer>168</integer> 
    55725940                                        <key>isResource</key> 
    55735941                                        <string>YES</string> 
     
    55775945                        </array> 
    55785946                        <key>task</key> 
    5579                         <string>BZIP2-compressed</string> 
    5580                         <key>workSeconds</key> 
     5947                        <string>(NEW) Write out public key sequence</string> 
     5948                        <key>workDone</key> 
     5949                        <real>28.799999237060547</real> 
     5950                        <key>workSeconds</key> 
     5951                        <real>115200</real> 
     5952                        <key>workTime</key> 
     5953                        <real>32</real> 
     5954                </dict> 
     5955                <dict> 
     5956                        <key>assignments</key> 
     5957                        <array> 
     5958                                <dict> 
     5959                                        <key>id</key> 
     5960                                        <integer>1</integer> 
     5961                                        <key>units</key> 
     5962                                        <real>0.5</real> 
     5963                                </dict> 
     5964                        </array> 
     5965                        <key>doneSeconds</key> 
    55815966                        <real>57600</real> 
    5582                         <key>workTime</key> 
     5967                        <key>effort</key> 
     5968                        <real>57600</real> 
     5969                        <key>effortDone</key> 
     5970                        <real>28800</real> 
     5971                        <key>objectId</key> 
     5972                        <integer>233</integer> 
     5973                        <key>prerequisites</key> 
     5974                        <array> 
     5975                                <dict> 
     5976                                        <key>id</key> 
     5977                                        <integer>231</integer> 
     5978                                        <key>kind</key> 
     5979                                        <integer>2</integer> 
     5980                                </dict> 
     5981                        </array> 
     5982                        <key>task</key> 
     5983                        <string>(NEW) Write out secret key sequence</string> 
     5984                        <key>workDone</key> 
    55835985                        <real>16</real> 
    5584                 </dict> 
    5585                 <dict> 
    5586                         <key>assignments</key> 
    5587                         <array> 
    5588                                 <dict> 
    5589                                         <key>id</key> 
    5590                                         <integer>1</integer> 
    5591                                         <key>units</key> 
    5592                                         <real>0.5</real> 
    5593                                 </dict> 
    5594                         </array> 
    5595                         <key>desiredStart</key> 
    5596                         <string>20080605090000</string> 
    5597                         <key>doneSeconds</key> 
     5986                        <key>workSeconds</key> 
     5987                        <real>115200</real> 
     5988                        <key>workTime</key> 
     5989                        <real>32</real> 
     5990                </dict> 
     5991                <dict> 
     5992                        <key>effort</key> 
     5993                        <real>0.0</real> 
     5994                        <key>objectId</key> 
     5995                        <integer>234</integer> 
     5996                        <key>task</key> 
     5997                        <string>Sign with V3 signature</string> 
     5998                </dict> 
     5999                <dict> 
     6000                        <key>effort</key> 
     6001                        <real>0.0</real> 
     6002                        <key>objectId</key> 
     6003                        <integer>235</integer> 
     6004                        <key>task</key> 
     6005                        <string>Clearsign with V3 signature</string> 
     6006                </dict> 
     6007                <dict> 
     6008                        <key>assignments</key> 
     6009                        <array> 
     6010                                <dict> 
     6011                                        <key>id</key> 
     6012                                        <integer>1</integer> 
     6013                                        <key>units</key> 
     6014                                        <real>0.5</real> 
     6015                                </dict> 
     6016                        </array> 
     6017                        <key>doneSeconds</key> 
     6018                        <real>28800</real> 
     6019                        <key>effort</key> 
     6020                        <real>14400</real> 
     6021                        <key>effortDone</key> 
     6022                        <real>14400</real> 
     6023                        <key>objectId</key> 
     6024                        <integer>236</integer> 
     6025                        <key>task</key> 
     6026                        <string>(NEW) Verify correct behaviour on failed verification</string> 
     6027                        <key>workDone</key> 
     6028                        <real>8</real> 
     6029                        <key>workSeconds</key> 
     6030                        <real>28800</real> 
     6031                        <key>workTime</key> 
     6032                        <real>8</real> 
     6033                </dict> 
     6034                <dict> 
     6035                        <key>assignments</key> 
     6036                        <array> 
     6037                                <dict> 
     6038                                        <key>id</key> 
     6039                                        <integer>1</integer> 
     6040                                        <key>units</key> 
     6041                                        <real>0.5</real> 
     6042                                </dict> 
     6043                        </array> 
     6044                        <key>doneSeconds</key> 
     6045                        <real>115200</real> 
     6046                        <key>effort</key> 
    55986047                        <real>57600</real> 
    5599                         <key>effort</key> 
    5600                         <real>28800</real> 
    5601                         <key>effortDone</key> 
    5602                         <real>28800</real> 
    5603                         <key>objectId</key> 
    5604                         <integer>207</integer> 
    5605                         <key>prerequisites</key> 
    5606                         <array> 
    5607                                 <dict> 
    5608                                         <key>id</key> 
    5609                                         <integer>103</integer> 
    5610                                         <key>isResource</key> 
    5611                                         <string>YES</string> 
    5612                                         <key>kind</key> 
    5613                                         <integer>2</integer> 
    5614                                 </dict> 
    5615                         </array> 
    5616                         <key>task</key> 
    5617                         <string>ZIP-compress</string> 
    5618                         <key>workDone</key> 
    5619                         <real>16</real> 
    5620                         <key>workSeconds</key> 
     6048                        <key>effortDone</key> 
    56216049                        <real>57600</real> 
    5622                         <key>workTime</key> 
    5623                         <real>16</real> 
    5624                 </dict> 
    5625                 <dict> 
    5626                         <key>assignments</key> 
    5627                         <array> 
    5628                                 <dict> 
    5629                                         <key>id</key> 
    5630                                         <integer>1</integer> 
    5631                                         <key>units</key> 
    5632                                         <real>0.5</real> 
    5633                                 </dict> 
    5634                         </array> 
    5635                         <key>doneSeconds</key> 
    5636                         <real>57600</real> 
    5637                         <key>effort</key> 
    5638                         <real>28800</real> 
    5639                         <key>effortDone</key> 
    5640                         <real>28800</real> 
    5641                         <key>objectId</key> 
    5642                         <integer>208</integer> 
    5643                         <key>task</key> 
    5644                         <string>ZIP-decompress</string> 
    5645                         <key>workDone</key> 
    5646                         <real>16</real> 
    5647                         <key>workSeconds</key> 
    5648                         <real>57600</real> 
    5649                         <key>workTime</key> 
    5650                         <real>16</real> 
    5651                 </dict> 
    5652                 <dict> 
    5653                         <key>assignments</key> 
    5654                         <array> 
    5655                                 <dict> 
    5656                                         <key>id</key> 
    5657                                         <integer>1</integer> 
    5658                                         <key>units</key> 
    5659                                         <real>0.5</real> 
    5660                                 </dict> 
    5661                         </array> 
    5662                         <key>desiredStart</key> 
    5663                         <string>20080303140000</string> 
    5664                         <key>doneSeconds</key> 
    5665                         <real>57600</real> 
    5666                         <key>effort</key> 
    5667                         <real>57600</real> 
    5668                         <key>effortDone</key> 
    5669                         <real>28800</real> 
    5670                         <key>objectId</key> 
    5671                         <integer>209</integer> 
    5672                         <key>prerequisites</key> 
    5673                         <array> 
    5674                                 <dict> 
    5675                                         <key>id</key> 
    5676                                         <integer>106</integer> 
    5677                                         <key>isResource</key> 
    5678                                         <string>YES</string> 
    5679                                         <key>kind</key> 
    5680                                         <integer>2</integer> 
    5681                                 </dict> 
    5682                         </array> 
    5683                         <key>task</key> 
    5684                         <string>ZIP-compress</string> 
    5685                         <key>workDone</key> 
    5686                         <real>16</real> 
     6050                        <key>forcedStart</key> 
     6051                        <string>20080324090000</string> 
     6052                        <key>objectId</key> 
     6053                        <integer>238</integer> 
     6054                        <key>task</key> 
     6055                        <string>Extra complexity in writing transferable secret key </string> 
     6056                        <key>workDone</key> 
     6057                        <real>32</real> 
    56876058                        <key>workSeconds</key> 
    56886059                        <real>115200</real> 
    56896060                        <key>workTime</key> 
    56906061                        <real>32</real> 
    5691                 </dict> 
    5692                 <dict> 
    5693                         <key>assignments</key> 
    5694                         <array> 
    5695                                 <dict> 
    5696                                         <key>id</key> 
    5697                                         <integer>1</integer> 
    5698                                         <key>units</key> 
    5699                                         <real>0.5</real> 
    5700                                 </dict> 
    5701                         </array> 
    5702                         <key>doneSeconds</key> 
    5703                         <real>57600</real> 
    5704                         <key>effort</key> 
    5705                         <real>28800</real> 
    5706                         <key>effortDone</key> 
    5707                         <real>28800</real> 
    5708                         <key>objectId</key> 
    5709                         <integer>210</integer> 
    5710                         <key>task</key> 
    5711                         <string>ZIP-decompress</string> 
    5712                         <key>workDone</key> 
    5713                         <real>16</real> 
    5714                         <key>workSeconds</key> 
    5715                         <real>57600</real> 
    5716                         <key>workTime</key> 
    5717                         <real>16</real> 
    5718                 </dict> 
    5719                 <dict> 
    5720                         <key>assignments</key> 
    5721                         <array> 
    5722                                 <dict> 
    5723                                         <key>id</key> 
    5724                                         <integer>1</integer> 
    5725                                         <key>units</key> 
    5726                                         <real>0.5</real> 
    5727                                 </dict> 
    5728                         </array> 
    5729                         <key>desiredStart</key> 
    5730                         <string>20080310140000</string> 
    5731                         <key>doneSeconds</key> 
    5732                         <real>57600</real> 
    5733                         <key>effort</key> 
    5734                         <real>28800</real> 
    5735                         <key>effortDone</key> 
    5736                         <real>28800</real> 
    5737                         <key>objectId</key> 
    5738                         <integer>211</integer> 
    5739                         <key>task</key> 
    5740                         <string>ZLIB-decompress</string> 
    5741                         <key>workDone</key> 
    5742                         <real>16</real> 
    5743                         <key>workSeconds</key> 
    5744                         <real>57600</real> 
    5745                         <key>workTime</key> 
    5746                         <real>16</real> 
    5747                 </dict> 
    5748                 <dict> 
    5749                         <key>assignments</key> 
    5750                         <array> 
    5751                                 <dict> 
    5752                                         <key>id</key> 
    5753                                         <integer>1</integer> 
    5754                                         <key>units</key> 
    5755                                         <real>0.5</real> 
    5756                                 </dict> 
    5757                         </array> 
    5758                         <key>desiredStart</key> 
    5759                         <string>20080307140000</string> 
    5760                         <key>effort</key> 
    5761                         <real>28800</real> 
    5762                         <key>objectId</key> 
    5763                         <integer>212</integer> 
    5764                         <key>prerequisites</key> 
    5765                         <array> 
    5766                                 <dict> 
    5767                                         <key>id</key> 
    5768                                         <integer>209</integer> 
    5769                                         <key>isResource</key> 
    5770                                         <string>YES</string> 
    5771                                         <key>kind</key> 
    5772                                         <integer>2</integer> 
    5773                                 </dict> 
    5774                         </array> 
    5775                         <key>task</key> 
    5776                         <string>BZIP2-decompress</string> 
    5777                         <key>workSeconds</key> 
    5778                         <real>57600</real> 
    5779                         <key>workTime</key> 
    5780                         <real>16</real> 
    5781                 </dict> 
    5782                 <dict> 
    5783                         <key>assignments</key> 
    5784                         <array> 
    5785                                 <dict> 
    5786                                         <key>id</key> 
    5787                                         <integer>1</integer> 
    5788                                         <key>units</key> 
    5789                                         <real>0.5</real> 
    5790                                 </dict> 
    5791                         </array> 
    5792                         <key>doneSeconds</key> 
    5793                         <real>288000</real> 
    5794                         <key>effort</key> 
    5795                         <real>144000</real> 
    5796                         <key>effortDone</key> 
    5797                         <real>144000</real> 
    5798                         <key>forcedStart</key> 
    5799                         <string>20080128140000</string> 
    5800                         <key>objectId</key> 
    5801                         <integer>213</integer> 
    5802                         <key>task</key> 
    5803                         <string>Support for Ben Taylor</string> 
    5804                         <key>workDone</key> 
    5805                         <real>80</real> 
    5806                         <key>workSeconds</key> 
    5807                         <real>288000</real> 
    5808                         <key>workTime</key> 
    5809                         <real>80</real> 
    5810                 </dict> 
    5811                 <dict> 
    5812                         <key>effort</key> 
    5813                         <real>432000</real> 
    5814                         <key>objectId</key> 
    5815                         <integer>214</integer> 
    5816                         <key>task</key> 
    5817                         <string>Other</string> 
    5818                         <key>workSeconds</key> 
    5819                         <real>432000</real> 
    5820                         <key>workTime</key> 
    5821                         <real>120</real> 
    58226062                </dict> 
    58236063        </array> 
     
    58316071        </array> 
    58326072        <key>uuid</key> 
    5833         <string>1B1A7F48-F31B-4C3F-9A92-A39ABCE1C8BA</string> 
     6073        <string>9A2554F9-9F07-4301-8A1B-1D5C0C671C35</string> 
    58346074        <key>version</key> 
    58356075        <integer>2</integer> 
  • openpgpsdk/trunk/src/lib/adv_accumulate.c

    r557 r558  
    6666        //      printf("User ID: %s\n",content->user_id.user_id); 
    6767        assert(cur); 
    68         EXPAND_ARRAY(cur,uids); 
    69         cur->uids[cur->nuids++]=content->user_id; 
     68    ops_add_userid_to_keydata(cur, &content->user_id); 
    7069        return OPS_KEEP_MEMORY; 
    7170 
     
    7372        if(!cur) 
    7473            return OPS_RELEASE_MEMORY; 
    75  
    76         EXPAND_ARRAY(cur,packets); 
    77         cur->packets[cur->npackets++]=content->packet; 
     74    ops_add_packet_to_keydata(cur, &content->packet); 
    7875        return OPS_KEEP_MEMORY; 
    7976 
  • openpgpsdk/trunk/src/lib/adv_create.c

    r557 r558  
    1212#include <openpgpsdk/packet.h> 
    1313#include <openpgpsdk/util.h> 
     14#include <openpgpsdk/std_print.h> 
    1415#include <string.h> 
    1516#include <assert.h> 
     
    298299    } 
    299300 
    300 static void push_secret_key_checksum_writer(ops_create_info_t *info) 
    301     { 
    302     OPS_USED(info); 
     301typedef struct 
     302    { 
     303    ops_hash_algorithm_t hash_algorithm; 
     304    ops_hash_t hash; 
     305    unsigned char *hashed; 
     306    } skey_checksum_arg_t; 
     307 
     308static ops_boolean_t skey_checksum_writer(const unsigned char *src, const unsigned length, ops_error_t **errors, ops_writer_info_t *winfo) 
     309    { 
     310    skey_checksum_arg_t *arg=ops_writer_get_arg(winfo); 
     311    ops_boolean_t rtn=ops_true; 
     312 
     313    // add contents to hash 
     314    arg->hash.add(&arg->hash, src, length); 
     315 
     316    // write to next stacked writer 
     317    rtn=ops_stacked_write(src,length,errors,winfo); 
     318 
     319    // tidy up and return 
     320    return rtn; 
     321    } 
     322 
     323static ops_boolean_t skey_checksum_finaliser(ops_error_t **errors __attribute__((unused)), ops_writer_info_t *winfo) 
     324    { 
     325    skey_checksum_arg_t *arg=ops_writer_get_arg(winfo); 
     326    arg->hash.finish(&arg->hash, arg->hashed); 
     327    return ops_true; 
     328    } 
     329 
     330static void skey_checksum_destroyer(ops_writer_info_t* winfo) 
     331    { 
     332    skey_checksum_arg_t *arg=ops_writer_get_arg(winfo); 
     333    free(arg); 
     334    } 
     335 
     336void ops_push_skey_checksum_writer(ops_create_info_t *cinfo, ops_secret_key_t *skey) 
     337    { 
     338    //    OPS_USED(info); 
    303339    // XXX: push a SHA-1 checksum writer (and change s2k to 254). 
    304     } 
    305  
    306 static ops_boolean_t pop_secret_key_checksum_writer(ops_create_info_t *info) 
    307     { 
    308     // XXX: actually write a SHA-1 checksum, but for now, dummy... 
    309     return ops_write_scalar(0,2,info); 
    310     } 
    311  
    312  
     340    skey_checksum_arg_t *arg=ops_mallocz(sizeof *arg); 
     341 
     342    // configure the arg 
     343    arg->hash_algorithm=skey->hash_algorithm; 
     344    arg->hashed=&skey->checkhash[0]; 
     345 
     346    // init the hash 
     347    ops_hash_any(&arg->hash, arg->hash_algorithm); 
     348    arg->hash.init(&arg->hash); 
     349 
     350    ops_writer_push(cinfo, skey_checksum_writer, skey_checksum_finaliser, skey_checksum_destroyer, arg); 
     351    } 
     352  
    313353/* Note that we support v3 keys here because they're needed for 
    314354 * for verification - the writer doesn't allow them, though */ 
    315355static ops_boolean_t write_secret_key_body(const ops_secret_key_t *key, 
     356                                           const unsigned char* passphrase, 
     357                                           const size_t pplen, 
    316358                                           ops_create_info_t *info) 
    317359    { 
     360    /* RFC4880 Section 5.5.3 Secret-Key Packet Formats */ 
     361 
     362    ops_crypt_t crypt; 
     363    ops_hash_t hash; 
     364    unsigned char hashed[OPS_SHA1_HASH_SIZE]; 
     365    unsigned char session_key[CAST_KEY_LENGTH]; 
     366    unsigned int done=0; 
     367    unsigned int i=0; 
     368 
    318369    if(!write_public_key_body(&key->public_key,info)) 
    319370        return ops_false; 
    320371 
     372    assert(key->s2k_usage==OPS_S2KU_ENCRYPTED_AND_HASHED); /* = 254 */ 
    321373    if(!ops_write_scalar(key->s2k_usage,1,info)) 
    322374        return ops_false; 
    323375     
    324     // XXX: for now, no secret key encryption, so s2k == 0 
    325     assert(key->s2k_usage == OPS_S2KU_NONE); 
    326  
    327     push_secret_key_checksum_writer(info); 
     376    assert(key->algorithm==OPS_SA_CAST5); 
     377    if (!ops_write_scalar(key->algorithm,1,info)) 
     378        return ops_false; 
     379 
     380    assert(key->s2k_specifier==OPS_S2KS_SIMPLE); // = 1 \todo should be salted or iterated-and-salted 
     381    if (!ops_write_scalar(key->s2k_specifier,1,info)) 
     382        return ops_false; 
     383     
     384    assert(key->hash_algorithm==OPS_HASH_SHA1); 
     385    if (!ops_write_scalar(key->hash_algorithm,1,info)) 
     386        return ops_false; 
     387     
     388    switch(key->s2k_specifier) 
     389        { 
     390    case OPS_S2KS_SIMPLE: 
     391        // nothing more to do 
     392        break; 
     393 
     394        /* \todo 
     395    case OPS_S2KS_SALTED: 
     396    // 8-octet salt value 
     397        break; 
     398 
     399    case OPS_S2KS_ITERATED_AND_SALTED: 
     400    // 8-octet salt value 
     401    // 1-octet count 
     402        break; 
     403        */ 
     404 
     405    default: 
     406        fprintf(stderr,"invalid/unsupported s2k specifier %d\n", key->s2k_specifier); 
     407        assert(0); 
     408        } 
     409 
     410    if (!ops_write(&key->iv[0],ops_block_size(key->algorithm),info)) 
     411        return ops_false; 
     412     
     413    /* create the session key for encrypting the algorithm-specific fields */ 
     414 
     415    switch(key->s2k_specifier) 
     416        { 
     417    case OPS_S2KS_SIMPLE: 
     418        // RFC4880: section 3.7.1.1 
     419 
     420        done=0; 
     421        for (i=0; done<CAST_KEY_LENGTH; i++ ) 
     422            { 
     423            unsigned int j=0; 
     424            unsigned char zero=0; 
     425            int needed=CAST_KEY_LENGTH-done; 
     426            int use= needed < SHA_DIGEST_LENGTH ? needed : SHA_DIGEST_LENGTH; 
     427 
     428            ops_hash_any(&hash, key->hash_algorithm); 
     429            hash.init(&hash); 
     430             
     431            // preload if iterating  
     432            for (j=0; j<i; j++) 
     433                { 
     434                hash.add(&hash, &zero, 1); 
     435                } 
     436 
     437            hash.add(&hash, passphrase, pplen); 
     438            hash.finish(&hash, hashed); 
     439 
     440            // if more in hash than is needed by session key, use the leftmost octets 
     441            memcpy(session_key+(i*SHA_DIGEST_LENGTH), hashed, use); 
     442            done += use; 
     443            assert(done<=CAST_KEY_LENGTH); 
     444            } 
     445 
     446        break; 
     447 
     448        /* \todo 
     449    case OPS_S2KS_SALTED: 
     450    // 8-octet salt value 
     451        break; 
     452 
     453    case OPS_S2KS_ITERATED_AND_SALTED: 
     454    // 8-octet salt value 
     455    // 1-octet count 
     456        break; 
     457        */ 
     458 
     459    default: 
     460        fprintf(stderr,"invalid/unsupported s2k specifier %d\n", key->s2k_specifier); 
     461        assert(0); 
     462        } 
     463 
     464    /* use this session key to encrypt */ 
     465 
     466    ops_crypt_any(&crypt,key->algorithm); 
     467    crypt.set_iv(&crypt, key->iv); 
     468    crypt.set_key(&crypt, session_key); 
     469    ops_encrypt_init(&crypt); 
     470 
     471    if (debug) 
     472        { 
     473        unsigned int i=0; 
     474        fprintf(stderr,"\nWRITING:\niv="); 
     475        for (i=0; i<ops_block_size(key->algorithm); i++) 
     476            { 
     477            fprintf(stderr, "%02x ", key->iv[i]); 
     478            } 
     479        fprintf(stderr,"\n"); 
     480 
     481        fprintf(stderr,"key="); 
     482        for (i=0; i<CAST_KEY_LENGTH; i++) 
     483            { 
     484            fprintf(stderr, "%02x ", session_key[i]); 
     485            } 
     486        fprintf(stderr,"\n"); 
     487 
     488        ops_print_secret_key(OPS_PTAG_CT_SECRET_KEY,key); 
     489 
     490        fprintf(stderr,"turning encryption on...\n"); 
     491        } 
     492 
     493    ops_writer_push_encrypt_crypt(info, &crypt); 
    328494 
    329495    switch(key->public_key.algorithm) 
     
    335501    case OPS_PKA_RSA_ENCRYPT_ONLY: 
    336502    case OPS_PKA_RSA_SIGN_ONLY: 
     503 
    337504        if(!ops_write_mpi(key->key.rsa.d,info) 
    338505           || !ops_write_mpi(key->key.rsa.p,info) 
    339506           || !ops_write_mpi(key->key.rsa.q,info) 
    340507           || !ops_write_mpi(key->key.rsa.u,info)) 
     508        { 
     509        if (debug) 
     510            { fprintf(stderr,"4 x mpi not written - problem\n"); } 
    341511            return ops_false; 
     512        } 
     513 
    342514        break; 
    343515 
     
    350522        } 
    351523 
    352     return pop_secret_key_checksum_writer(info); 
    353     } 
    354  
     524    if(!ops_write(key->checkhash, OPS_CHECKHASH_SIZE, info)) 
     525        return ops_false; 
     526 
     527    ops_writer_pop(info); 
     528     
     529    return ops_true; 
     530 } 
     531 
     532 
     533ops_boolean_t ops_write_transferable_public_key(const ops_keydata_t *key, ops_create_info_t *info) 
     534    { 
     535    ops_boolean_t rtn; 
     536    unsigned int i=0,j=0; 
     537 
     538    // public key 
     539    rtn=ops_write_struct_public_key(&key->key.skey.public_key,info); 
     540    if (rtn!=ops_true) 
     541        return rtn; 
     542 
     543    // TODO: revocation signatures go here 
     544 
     545    // user ids and corresponding signatures 
     546    for (i=0; i<key->nuids; i++) 
     547        { 
     548        ops_user_id_t* uid=&key->uids[i]; 
     549 
     550        rtn=ops_write_struct_user_id(uid, info); 
     551 
     552        if (!rtn) 
     553            return rtn; 
     554 
     555        // find signature for this packet if it exists 
     556        for (j=0; j<key->nsigs; j++) 
     557            { 
     558            sigpacket_t* sig=&key->sigs[i]; 
     559            if (!strcmp((char *)sig->userid->user_id, (char *)uid->user_id)) 
     560                { 
     561                rtn=ops_write(sig->packet->raw, sig->packet->length, info); 
     562                if (!rtn) 
     563                    return !rtn; 
     564                } 
     565            } 
     566        } 
     567 
     568        // TODO: user attributes and corresponding signatures 
     569 
     570        // subkey packets and corresponding signatures and optional revocation 
     571 
     572    return rtn; 
     573    } 
     574 
     575ops_boolean_t ops_write_transferable_secret_key(const ops_keydata_t *key, const unsigned char* passphrase, const size_t pplen, ops_create_info_t *info) 
     576    { 
     577    ops_boolean_t rtn; 
     578    unsigned int i=0,j=0; 
     579 
     580    // public key 
     581    rtn=ops_write_struct_secret_key(&key->key.skey,passphrase,pplen,info); 
     582    if (rtn!=ops_true) 
     583        return rtn; 
     584 
     585    // TODO: revocation signatures go here 
     586 
     587    // user ids and corresponding signatures 
     588    for (i=0; i<key->nuids; i++) 
     589        { 
     590        ops_user_id_t* uid=&key->uids[i]; 
     591 
     592        rtn=ops_write_struct_user_id(uid, info); 
     593 
     594        if (!rtn) 
     595            return rtn; 
     596 
     597        // find signature for this packet if it exists 
     598        for (j=0; j<key->nsigs; j++) 
     599            { 
     600            sigpacket_t* sig=&key->sigs[i]; 
     601            if (!strcmp((char *)sig->userid->user_id, (char *)uid->user_id)) 
     602                { 
     603                rtn=ops_write(sig->packet->raw, sig->packet->length, info); 
     604                if (!rtn) 
     605                    return !rtn; 
     606                } 
     607            } 
     608        } 
     609 
     610        // TODO: user attributes and corresponding signatures 
     611 
     612        // subkey packets and corresponding signatures and optional revocation 
     613 
     614    return rtn; 
     615    } 
    355616 
    356617/** 
     
    477738 */ 
    478739ops_boolean_t ops_write_struct_secret_key(const ops_secret_key_t *key, 
     740                                          const unsigned char* passphrase, 
     741                                          const size_t pplen, 
    479742                                          ops_create_info_t *info) 
    480743    { 
     744    int length=0; 
     745 
    481746    assert(key->public_key.version == 4); 
    482747 
     748    // Ref: RFC4880 Section 5.5.3 
     749 
     750    // public_key, excluding MPIs 
     751    length += 1+4+1+1; 
     752 
     753    // s2k usage 
     754    length+=1; 
     755 
     756    switch (key->s2k_usage) 
     757        { 
     758    case OPS_S2KU_NONE: 
     759        // nothing to add 
     760        break; 
     761 
     762    case OPS_S2KU_ENCRYPTED_AND_HASHED: // 254 
     763    case OPS_S2KU_ENCRYPTED: // 255 
     764 
     765        // Ref: RFC4880 Section 3.7 
     766        length+=1; // s2k_specifier 
     767 
     768        switch(key->s2k_specifier) 
     769            { 
     770        case OPS_S2KS_SIMPLE: 
     771            length+=1; // hash algorithm 
     772            break; 
     773 
     774        case OPS_S2KS_SALTED: 
     775            length+=1+8; // hash algorithm + salt 
     776            break; 
     777 
     778        case OPS_S2KS_ITERATED_AND_SALTED: 
     779            length+=1+8+1; // hash algorithm, salt + count 
     780            break; 
     781 
     782        default: 
     783            assert(0); 
     784            } 
     785        break; 
     786 
     787    default: 
     788        assert(0); 
     789        } 
     790 
     791    // IV 
     792    if (key->s2k_usage != 0) 
     793        { 
     794        length += ops_block_size(key->algorithm); 
     795        } 
     796 
     797    // checksum or hash 
     798    switch (key->s2k_usage) 
     799        { 
     800    case 0: 
     801    case 255: 
     802        length += 2; 
     803        break; 
     804 
     805    case 254: 
     806        length += 20; 
     807        break; 
     808 
     809    default: 
     810        assert(0); 
     811        } 
     812 
     813    // secret key and public key MPIs 
     814    length += secret_key_length(key); 
     815 
    483816    return ops_write_ptag(OPS_PTAG_CT_SECRET_KEY,info) 
    484         && ops_write_length(1+4+1+1+secret_key_length(key)+2,info) 
    485         && write_secret_key_body(key,info); 
     817        //      && ops_write_length(1+4+1+1+secret_key_length(key)+2,info) 
     818        && ops_write_length(length,info) 
     819        && write_secret_key_body(key,passphrase,pplen,info); 
    486820    } 
    487821 
     
    7891123) 
    7901124    { 
    791     int debug=0; 
    792  
    793     //unsigned char encmpibuf[8192]; 
    794     //    unsigned char EM[8192]; 
    7951125    unsigned int k; 
    7961126    unsigned i; 
     
    8491179     */ 
    8501180 
    851     int debug=0; 
    852  
    8531181    const ops_public_key_t* pub_key=ops_get_public_key_from_data(key); 
    8541182#define SZ_UNENCODED_M_BUF CAST_KEY_LENGTH+1+2 
     
    9061234     
    9071235    // and encrypt it 
    908     if(!ops_encrypt_mpi(encoded_m_buf, sz_encoded_m_buf, pub_key, &session_key->parameters)) 
     1236    if(!ops_rsa_encrypt_mpi(encoded_m_buf, sz_encoded_m_buf, pub_key, &session_key->parameters)) 
    9091237        { 
    9101238        free (encoded_m_buf); 
  • openpgpsdk/trunk/src/lib/adv_crypto.c

    r516 r558  
    8181    } 
    8282 
    83 ops_boolean_t ops_encrypt_mpi(const unsigned char *encoded_m_buf, 
     83ops_boolean_t ops_rsa_encrypt_mpi(const unsigned char *encoded_m_buf, 
    8484                              const size_t sz_encoded_m_buf, 
    8585                              const ops_public_key_t *pkey, 
  • openpgpsdk/trunk/src/lib/adv_keyring.c

    r557 r558  
    77#include <openpgpsdk/accumulate.h> 
    88#include <openpgpsdk/validate.h> 
     9#include <openpgpsdk/signature.h> 
     10#include <openpgpsdk/readerwriter.h> 
    911#include "keyring_local.h" 
    1012#include "parse_local.h" 
     
    3941    else 
    4042        ops_secret_key_free(&key->key.skey); 
     43 
     44    free(key); 
    4145    } 
    4246 
     
    5761    if(data->type != OPS_PTAG_CT_SECRET_KEY) 
    5862        return NULL; 
     63 
     64    return &data->key.skey; 
     65    } 
     66 
     67ops_secret_key_t * 
     68ops_get_writable_secret_key_from_data(ops_keydata_t *data) 
     69    { 
     70    if (data->type != OPS_PTAG_CT_SECRET_KEY) 
     71        return NULL; 
     72 
    5973    return &data->key.skey; 
    6074    } 
     
    264278// \todo document OPS keyring format 
    265279 
     280// \todo check where userid pointers are copied 
     281void ops_copy_userid(ops_user_id_t* dst, const ops_user_id_t* src) 
     282    { 
     283    int len=strlen((char *)src->user_id); 
     284    if (dst->user_id) 
     285        free(dst->user_id); 
     286    dst->user_id=ops_mallocz(len+1); 
     287 
     288    memcpy(dst->user_id, src->user_id, len); 
     289    } 
     290 
     291// \todo check where pkt pointers are copied 
     292void ops_copy_packet(ops_packet_t* dst, const ops_packet_t* src) 
     293    { 
     294    if (dst->raw) 
     295        free(dst->raw); 
     296    dst->raw=ops_mallocz(src->length); 
     297 
     298    dst->length=src->length; 
     299    memcpy(dst->raw, src->raw, src->length); 
     300    } 
     301 
     302ops_user_id_t* ops_add_userid_to_keydata(ops_keydata_t* keydata, const ops_user_id_t* userid) 
     303    { 
     304    ops_user_id_t* new_uid=NULL; 
     305 
     306    EXPAND_ARRAY(keydata, uids); 
     307 
     308    // initialise new entry in array 
     309    new_uid=&keydata->uids[keydata->nuids]; 
     310 
     311    //    keydata->uids[keydata->nuids].user_id=NULL; 
     312    new_uid->user_id=NULL; 
     313 
     314    // now copy it 
     315    //    ops_copy_userid(&keydata->uids[keydata->nuids],userid); 
     316    ops_copy_userid(new_uid,userid); 
     317    keydata->nuids++; 
     318 
     319    return new_uid; 
     320    } 
     321 
     322ops_packet_t* ops_add_packet_to_keydata(ops_keydata_t* keydata, const ops_packet_t* packet) 
     323    { 
     324    ops_packet_t* new_pkt=NULL; 
     325 
     326    EXPAND_ARRAY(keydata, packets); 
     327 
     328    // initialise new entry in array 
     329    new_pkt=&keydata->packets[keydata->npackets]; 
     330    new_pkt->length=0; 
     331    new_pkt->raw=NULL; 
     332 
     333    // now copy it 
     334    ops_copy_packet(new_pkt, packet); 
     335    keydata->npackets++; 
     336 
     337    return new_pkt; 
     338    } 
     339 
     340void ops_add_signed_userid_to_keydata(ops_keydata_t* keydata, const ops_user_id_t* user_id, const ops_packet_t* sigpacket) 
     341    { 
     342    //int i=0; 
     343    ops_user_id_t * uid=NULL; 
     344    ops_packet_t * pkt=NULL; 
     345 
     346    uid=ops_add_userid_to_keydata(keydata, user_id); 
     347    pkt=ops_add_packet_to_keydata(keydata, sigpacket); 
     348 
     349    /* 
     350     * add entry in sigs array to link the userid and sigpacket 
     351     */ 
     352 
     353    // and add ptr to it from the sigs array 
     354    EXPAND_ARRAY(keydata, sigs); 
     355 
     356    // setup new entry in array 
     357 
     358    keydata->sigs[keydata->nsigs].userid=uid; 
     359    keydata->sigs[keydata->nsigs].packet=pkt; 
     360 
     361    keydata->nsigs++; 
     362    } 
     363 
     364ops_boolean_t ops_add_selfsigned_userid_to_keydata(ops_keydata_t* keydata, ops_user_id_t* userid) 
     365    { 
     366    ops_packet_t sigpacket; 
     367 
     368    ops_memory_t* mem_userid=NULL; 
     369    ops_create_info_t* cinfo_userid=NULL; 
     370 
     371    ops_memory_t* mem_sig=NULL; 
     372    ops_create_info_t* cinfo_sig=NULL; 
     373 
     374    ops_create_signature_t *sig=NULL; 
     375    //    unsigned char keyid[OPS_KEY_ID_SIZE]; 
     376 
     377    /* 
     378     * create signature packet for this userid 
     379     */ 
     380 
     381    // create userid pkt 
     382    ops_setup_memory_write(&cinfo_userid, &mem_userid, 128); 
     383    ops_write_struct_user_id(userid, cinfo_userid); 
     384 
     385    // create sig for this pkt 
     386 
     387    sig=ops_create_signature_new(); 
     388    ops_signature_start_key_signature(sig, &keydata->key.skey.public_key, userid, OPS_CERT_POSITIVE); 
     389    ops_signature_add_creation_time(sig,time(NULL)); 
     390    ops_signature_add_issuer_key_id(sig,keydata->key_id); 
     391    ops_signature_add_primary_user_id(sig, ops_true); 
     392    ops_signature_hashed_subpackets_end(sig); 
     393 
     394    ops_setup_memory_write(&cinfo_sig, &mem_sig, 128); 
     395    ops_write_signature(sig,&keydata->key.skey.public_key,&keydata->key.skey, cinfo_sig); 
     396 
     397    // add this packet to keydata 
     398 
     399    sigpacket.length=ops_memory_get_length(mem_sig); 
     400    sigpacket.raw=ops_memory_get_data(mem_sig); 
     401    //    pkt=ops_add_packet_to_keydata(keydata, &packet); 
     402    //    ops_add_signature_to_keydata(keydata, keydata->key_id, packet); 
     403 
     404    // add userid to keydata 
     405    ops_add_signed_userid_to_keydata(keydata, userid, &sigpacket); 
     406 
     407    // cleanup 
     408    ops_create_signature_delete(sig); 
     409    ops_create_info_delete(cinfo_userid); 
     410    ops_create_info_delete(cinfo_sig); 
     411    ops_memory_free(mem_userid); 
     412    ops_memory_free(mem_sig); 
     413 
     414    return ops_true; 
     415    } 
     416 
     417ops_keydata_t *ops_keydata_new(void) 
     418    { return ops_mallocz(sizeof(ops_keydata_t)); } 
     419 
     420void ops_keydata_init(ops_keydata_t* keydata, const ops_content_tag_t type) 
     421    { 
     422    assert(keydata->type==OPS_PTAG_CT_RESERVED); 
     423    assert(type==OPS_PTAG_CT_PUBLIC_KEY || type==OPS_PTAG_CT_SECRET_KEY); 
     424 
     425    keydata->type=type; 
     426    } 
     427 
    266428// eof 
  • openpgpsdk/trunk/src/lib/adv_openssl_crypto.c

    r557 r558  
    44#include <openpgpsdk/configure.h> 
    55#include <openpgpsdk/crypto.h> 
     6#include <openpgpsdk/keyring.h> 
     7#include <openpgpsdk/readerwriter.h> 
     8#include "keyring_local.h" 
    69#include <openpgpsdk/std_print.h> 
    710#include <openssl/md5.h> 
     
    1619 
    1720static int debug=0; 
     21 
     22void test_secret_key(const ops_secret_key_t *skey) 
     23    { 
     24    RSA* test=RSA_new(); 
     25 
     26    test->n=BN_dup(skey->public_key.key.rsa.n); 
     27    test->e=BN_dup(skey->public_key.key.rsa.e); 
     28 
     29    test->d=BN_dup(skey->key.rsa.d); 
     30    test->p=BN_dup(skey->key.rsa.p); 
     31    test->q=BN_dup(skey->key.rsa.q); 
     32 
     33    assert(RSA_check_key(test)==1); 
     34    RSA_free(test); 
     35    } 
    1836 
    1937static void md5_init(ops_hash_t *hash) 
     
    263281    { return hash->name; } 
    264282 
    265 ops_boolean_t ops_generate_rsa_keypair(const int numbits, const unsigned long e, ops_secret_key_t* skey) 
    266     { 
     283ops_boolean_t ops_rsa_generate_keypair(const int numbits, const unsigned long e, ops_keydata_t* keydata) 
     284    { 
     285    ops_secret_key_t *skey=NULL; 
    267286    RSA *rsa=NULL; 
     287    BN_CTX *ctx=BN_CTX_new(); 
     288 
     289    ops_keydata_init(keydata,OPS_PTAG_CT_SECRET_KEY); 
     290    skey=ops_get_writable_secret_key_from_data(keydata); 
    268291 
    269292    // generate the key pair 
     
    278301    skey->public_key.algorithm= OPS_PKA_RSA; 
    279302 
    280     skey->public_key.key.rsa.n=rsa->n
    281     skey->public_key.key.rsa.e=rsa->e
    282  
    283     skey->s2k_usage=OPS_S2KU_NONE
     303    skey->public_key.key.rsa.n=BN_dup(rsa->n)
     304    skey->public_key.key.rsa.e=BN_dup(rsa->e)
     305 
     306    skey->s2k_usage=OPS_S2KU_ENCRYPTED_AND_HASHED
    284307    // \todo     skey->s2k_specifier_t=OPS_S2KS_SALTED; 
    285     skey->algorithm=OPS_SA_AES_128; // \todo make param 
     308    skey->s2k_specifier=OPS_S2KS_SIMPLE; 
     309    skey->algorithm=OPS_SA_CAST5; // \todo make param 
    286310    skey->hash_algorithm=OPS_HASH_SHA1; // \todo make param 
    287311    skey->octet_count=0; 
    288312    skey->checksum=0; 
    289313 
    290     skey->key.rsa.d=rsa->d; 
    291     skey->key.rsa.p=rsa->p; 
    292     skey->key.rsa.q=rsa->q; 
    293     skey->key.rsa.u=NULL; 
    294  
    295     /* debug */ 
    296     RSA* test=RSA_new(); 
    297  
    298     test->n=skey->public_key.key.rsa.n; 
    299     test->e=skey->public_key.key.rsa.e; 
    300  
    301     test->d=skey->key.rsa.d; 
    302     test->p=skey->key.rsa.p; 
    303     test->q=skey->key.rsa.q; 
    304  
    305     assert(RSA_check_key(test)==1); 
    306     RSA_free(test); 
    307     /* end debug */ 
     314    skey->key.rsa.d=BN_dup(rsa->d); 
     315    skey->key.rsa.p=BN_dup(rsa->p); 
     316    skey->key.rsa.q=BN_dup(rsa->q); 
     317    skey->key.rsa.u=BN_mod_inverse(NULL,rsa->p, rsa->q, ctx); 
     318    assert(skey->key.rsa.u); 
     319    BN_CTX_free(ctx); 
     320 
     321    RSA_free(rsa); 
     322 
     323    ops_keyid(keydata->key_id, &keydata->key.skey.public_key); 
     324    ops_fingerprint(&keydata->fingerprint, &keydata->key.skey.public_key); 
     325 
     326    // Generate checksum 
     327 
     328    ops_create_info_t *cinfo=NULL; 
     329    ops_memory_t *mem=NULL; 
     330 
     331    ops_setup_memory_write(&cinfo, &mem, 128); 
     332 
     333    ops_push_skey_checksum_writer(cinfo, skey); 
     334 
     335    switch(skey->public_key.algorithm) 
     336        { 
     337        //    case OPS_PKA_DSA: 
     338        //      return ops_write_mpi(key->key.dsa.x,info); 
     339 
     340    case OPS_PKA_RSA: 
     341    case OPS_PKA_RSA_ENCRYPT_ONLY: 
     342    case OPS_PKA_RSA_SIGN_ONLY: 
     343        if(!ops_write_mpi(skey->key.rsa.d,cinfo) 
     344           || !ops_write_mpi(skey->key.rsa.p,cinfo) 
     345           || !ops_write_mpi(skey->key.rsa.q,cinfo) 
     346    &nb