Changeset 618

Show
Ignore:
Timestamp:
09/08/08 15:47:42
Author:
rachel
Message:

More tests and code changes to cope with malformed armoured text.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openpgpsdk/trunk/include/openpgpsdk/errors.h

    r617 r618  
    113113void ops_print_errors(ops_error_t *errstack); 
    114114void ops_free_errors(ops_error_t *errstack); 
     115int ops_has_error(ops_error_t *errstack, ops_errcode_t errcode); 
    115116 
    116117#define OPS_SYSTEM_ERROR_1(err,code,syscall,fmt,arg)    do { ops_push_error(err,OPS_E_SYSTEM_ERROR,errno,__FILE__,__LINE__,syscall); ops_push_error(err,code,0,__FILE__,__LINE__,fmt,arg); } while(0) 
  • openpgpsdk/trunk/plan/OpenPGP.omniplan/contents.xml

    r567 r618  
    3131                        <false/> 
    3232                        <key>GanttVisibleRect</key> 
    33                         <string>{{-15, 0}, {614, 740}}</string> 
     33                        <string>{{1702, 0}, {614, 740}}</string> 
    3434                        <key>OutlineVisibleRect</key> 
    3535                        <string>{{0, 0}, {802, 740}}</string> 
     
    169169                                <string>Automatic</string> 
    170170                                <key>TimelineVisibleRect</key> 
    171                                 <string>{{-286, 0}, {959, 740}}</string> 
     171                                <string>{{-227, 290}, {959, 740}}</string> 
    172172                                <key>activeColumnIdentifiers</key> 
    173173                                <array> 
     
    213213        <true/> 
    214214        <key>endDate</key> 
    215         <string>20080930 12:36</string> 
     215        <string>20081021 13:00</string> 
    216216        <key>flatNumbering</key> 
    217217        <false/> 
     
    738738                                <integer>233</integer> 
    739739                        </array> 
     740                        <key>isExpanded</key> 
     741                        <false/> 
    740742                        <key>objectId</key> 
    741743                        <integer>3</integer> 
     
    969971                                <integer>166</integer> 
    970972                        </array> 
     973                        <key>isExpanded</key> 
     974                        <false/> 
    971975                        <key>objectId</key> 
    972976                        <integer>12</integer> 
     
    10371041                                <integer>152</integer> 
    10381042                        </array> 
     1043                        <key>isExpanded</key> 
     1044                        <false/> 
    10391045                        <key>objectId</key> 
    10401046                        <integer>17</integer> 
     
    10811087                        <key>forcedStart</key> 
    10821088                        <string>20070917090000</string> 
     1089                        <key>isExpanded</key> 
     1090                        <false/> 
    10831091                        <key>objectId</key> 
    10841092                        <integer>18</integer> 
     
    11931201                                <integer>203</integer> 
    11941202                        </array> 
     1203                        <key>isExpanded</key> 
     1204                        <false/> 
    11951205                        <key>objectId</key> 
    11961206                        <integer>23</integer> 
     
    26892699                        <key>objectId</key> 
    26902700                        <integer>89</integer> 
    2691                         <key>prerequisites</key> 
    2692                         <array> 
    2693                                 <dict> 
    2694                                         <key>id</key> 
    2695                                         <integer>172</integer> 
    2696                                         <key>isResource</key> 
    2697                                         <string>YES</string> 
    2698                                         <key>kind</key> 
    2699                                         <integer>2</integer> 
    2700                                 </dict> 
    2701                         </array> 
    27022701                        <key>task</key> 
    27032702                        <string>CAST5</string> 
     
    27192718                        <key>objectId</key> 
    27202719                        <integer>90</integer> 
    2721                         <key>prerequisites</key> 
    2722                         <array> 
    2723                                 <dict> 
    2724                                         <key>id</key> 
    2725                                         <integer>89</integer> 
    2726                                         <key>isResource</key> 
    2727                                         <string>YES</string> 
    2728                                         <key>kind</key> 
    2729                                         <integer>2</integer> 
    2730                                 </dict> 
    2731                         </array> 
    27322720                        <key>task</key> 
    27332721                        <string>AES128</string> 
     
    27492737                        <key>objectId</key> 
    27502738                        <integer>91</integer> 
    2751                         <key>prerequisites</key> 
    2752                         <array> 
    2753                                 <dict> 
    2754                                         <key>id</key> 
    2755                                         <integer>90</integer> 
    2756                                         <key>isResource</key> 
    2757                                         <string>YES</string> 
    2758                                         <key>kind</key> 
    2759                                         <integer>2</integer> 
    2760                                 </dict> 
    2761                         </array> 
    27622739                        <key>task</key> 
    27632740                        <string>AES256</string> 
     
    28482825                                </dict> 
    28492826                        </array> 
     2827                        <key>completionPercentage</key> 
     2828                        <real>1</real> 
    28502829                        <key>desiredStart</key> 
    28512830                        <string>20080811090000</string> 
    28522831                        <key>effort</key> 
    2853                         <real>14400</real> 
     2832                        <real>0.0</real> 
    28542833                        <key>objectId</key> 
    28552834                        <integer>96</integer> 
    2856                         <key>prerequisites</key> 
    2857                         <array> 
    2858                                 <dict> 
    2859                                         <key>id</key> 
    2860                                         <integer>191</integer> 
    2861                                         <key>isResource</key> 
    2862                                         <string>YES</string> 
    2863                                         <key>kind</key> 
    2864                                         <integer>2</integer> 
    2865                                 </dict> 
    2866                         </array> 
    2867                         <key>task</key> 
    2868                         <string>Multiple recipients for encryption</string> 
    2869                         <key>workSeconds</key> 
    2870                         <real>28800</real> 
    2871                         <key>workTime</key> 
    2872                         <real>8</real> 
    2873                 </dict> 
    2874                 <dict> 
    2875                         <key>assignments</key> 
    2876                         <array> 
    2877                                 <dict> 
    2878                                         <key>id</key> 
    2879                                         <integer>1</integer> 
    2880                                         <key>units</key> 
    2881                                         <real>0.5</real> 
    2882                                 </dict> 
    2883                         </array> 
     2835                        <key>task</key> 
     2836                        <string>Multiple recipients for encryption (FUTURE)</string> 
     2837                </dict> 
     2838                <dict> 
     2839                        <key>assignments</key> 
     2840                        <array> 
     2841                                <dict> 
     2842                                        <key>id</key> 
     2843                                        <integer>1</integer> 
     2844                                        <key>units</key> 
     2845                                        <real>0.5</real> 
     2846                                </dict> 
     2847                        </array> 
     2848                        <key>completionPercentage</key> 
     2849                        <real>1</real> 
    28842850                        <key>desiredStart</key> 
    28852851                        <string>20080812090000</string> 
    28862852                        <key>effort</key> 
    2887                         <real>14400</real> 
     2853                        <real>0.0</real> 
    28882854                        <key>objectId</key> 
    28892855                        <integer>97</integer> 
    2890                         <key>prerequisites</key> 
    2891                         <array> 
    2892                                 <dict> 
    2893                                         <key>id</key> 
    2894                                         <integer>96</integer> 
    2895                                         <key>isResource</key> 
    2896                                         <string>YES</string> 
    2897                                         <key>kind</key> 
    2898                                         <integer>2</integer> 
    2899                                 </dict> 
    2900                         </array> 
    2901                         <key>task</key> 
    2902                         <string>Signature options</string> 
    2903                         <key>workSeconds</key> 
    2904                         <real>28800</real> 
    2905                         <key>workTime</key> 
    2906                         <real>8</real> 
    2907                 </dict> 
    2908                 <dict> 
    2909                         <key>assignments</key> 
    2910                         <array> 
    2911                                 <dict> 
    2912                                         <key>id</key> 
    2913                                         <integer>1</integer> 
    2914                                         <key>units</key> 
    2915                                         <real>0.5</real> 
    2916                                 </dict> 
    2917                         </array> 
     2856                        <key>task</key> 
     2857                        <string>Signature options (FUTURE)</string> 
     2858                </dict> 
     2859                <dict> 
     2860                        <key>assignments</key> 
     2861                        <array> 
     2862                                <dict> 
     2863                                        <key>id</key> 
     2864                                        <integer>1</integer> 
     2865                                        <key>units</key> 
     2866                                        <real>0.5</real> 
     2867                                </dict> 
     2868                        </array> 
     2869                        <key>completionPercentage</key> 
     2870                        <real>1</real> 
    29182871                        <key>desiredStart</key> 
    29192872                        <string>20080813090000</string> 
    29202873                        <key>effort</key> 
    2921                         <real>14400</real> 
     2874                        <real>0.0</real> 
    29222875                        <key>objectId</key> 
    29232876                        <integer>98</integer> 
    2924                         <key>prerequisites</key> 
    2925                         <array> 
    2926                                 <dict> 
    2927                                         <key>id</key> 
    2928                                         <integer>97</integer> 
    2929                                         <key>isResource</key> 
    2930                                         <string>YES</string> 
    2931                                         <key>kind</key> 
    2932                                         <integer>2</integer> 
    2933                                 </dict> 
    2934                         </array> 
    2935                         <key>task</key> 
    2936                         <string>Created Key Pair options</string> 
    2937                         <key>workSeconds</key> 
    2938                         <real>28800</real> 
    2939                         <key>workTime</key> 
    2940                         <real>8</real> 
     2877                        <key>task</key> 
     2878                        <string>Created Key Pair options (FUTURE)</string> 
    29412879                </dict> 
    29422880                <dict> 
     
    29452883                                <integer>10</integer> 
    29462884                        </array> 
     2885                        <key>isExpanded</key> 
     2886                        <false/> 
    29472887                        <key>objectId</key> 
    29482888                        <integer>100</integer> 
     
    30182958                                </dict> 
    30192959                        </array> 
     2960                        <key>completionPercentage</key> 
     2961                        <real>1</real> 
    30202962                        <key>desiredStart</key> 
    30212963                        <string>20080814090000</string> 
    30222964                        <key>effort</key> 
    3023                         <real>14400</real> 
     2965                        <real>0.0</real> 
    30242966                        <key>objectId</key> 
    30252967                        <integer>103</integer> 
    3026                         <key>prerequisites</key> 
    3027                         <array> 
    3028                                 <dict> 
    3029                                         <key>id</key> 
    3030                                         <integer>98</integer> 
    3031                                         <key>isResource</key> 
    3032                                         <string>YES</string> 
    3033                                         <key>kind</key> 
    3034                                         <integer>2</integer> 
    3035                                 </dict> 
    3036                         </array> 
    3037                         <key>task</key> 
    3038                         <string>Use encrypt-only key for signing, etc</string> 
    3039                         <key>workSeconds</key> 
    3040                         <real>28800</real> 
    3041                         <key>workTime</key> 
    3042                         <real>8</real> 
     2968                        <key>task</key> 
     2969                        <string>Use encrypt-only key for signing, etc (FUTURE)</string> 
    30432970                </dict> 
    30442971                <dict> 
     
    31553082                                <integer>208</integer> 
    31563083                        </array> 
     3084                        <key>isExpanded</key> 
     3085                        <false/> 
    31573086                        <key>objectId</key> 
    31583087                        <integer>111</integer> 
     
    33623291                                </dict> 
    33633292                        </array> 
    3364                         <key>desiredStart</key> 
    3365                         <string>20080815103600</string> 
    3366                         <key>effort</key> 
    3367                         <real>14400</real> 
    3368                         <key>objectId</key> 
    3369                         <integer>118</integer> 
    3370                         <key>prerequisites</key> 
    3371                         <array> 
    3372                                 <dict> 
    3373                                         <key>id</key> 
    3374                                         <integer>207</integer> 
    3375                                         <key>isResource</key> 
    3376                                         <string>YES</string> 
    3377                                         <key>kind</key> 
    3378                                         <integer>2</integer> 
    3379                                 </dict> 
    3380                         </array> 
    3381                         <key>task</key> 
    3382                         <string>Encrypted and Signed</string> 
    3383                         <key>workSeconds</key> 
    3384                         <real>28800</real> 
    3385                         <key>workTime</key> 
    3386                         <real>8</real> 
    3387                 </dict> 
    3388                 <dict> 
    3389                         <key>assignments</key> 
    3390                         <array> 
    3391                                 <dict> 
    3392                                         <key>id</key> 
    3393                                         <integer>1</integer> 
    3394                                         <key>units</key> 
    3395                                         <real>0.5</real> 
    3396                                 </dict> 
    3397                         </array> 
    33983293                        <key>completionPercentage</key> 
    33993294                        <real>1</real> 
    34003295                        <key>desiredStart</key> 
     3296                        <string>20080815103600</string> 
     3297                        <key>effort</key> 
     3298                        <real>0.0</real> 
     3299                        <key>objectId</key> 
     3300                        <integer>118</integer> 
     3301                        <key>task</key> 
     3302                        <string>Encrypted and Signed (FUTURE)</string> 
     3303                </dict> 
     3304                <dict> 
     3305                        <key>assignments</key> 
     3306                        <array> 
     3307                                <dict> 
     3308                                        <key>id</key> 
     3309                                        <integer>1</integer> 
     3310                                        <key>units</key> 
     3311                                        <real>0.5</real> 
     3312                                </dict> 
     3313                        </array> 
     3314                        <key>completionPercentage</key> 
     3315                        <real>1</real> 
     3316                        <key>desiredStart</key> 
    34013317                        <string>20080522160000</string> 
    34023318                        <key>effort</key> 
     
    35543470                                        <key>id</key> 
    35553471                                        <integer>124</integer> 
    3556                                         <key>kind</key> 
    3557                                         <integer>2</integer> 
    3558                                 </dict> 
    3559                                 <dict> 
    3560                                         <key>id</key> 
    3561                                         <integer>151</integer> 
    3562                                         <key>isResource</key> 
    3563                                         <string>YES</string> 
    35643472                                        <key>kind</key> 
    35653473                                        <integer>2</integer> 
     
    39413849                        <key>effort</key> 
    39423850                        <real>0.0</real> 
    3943                         <key>forcedStart</key> 
    3944                         <string>20080821180000</string> 
    39453851                        <key>objectId</key> 
    39463852                        <integer>139</integer> 
     
    40863992                        <key>desiredStart</key> 
    40873993                        <string>20080730090000</string> 
    4088                         <key>effort</key> 
     3994                        <key>doneSeconds</key> 
     3995                        <real>57600</real> 
     3996                        <key>effort</key> 
     3997                        <real>28800</real> 
     3998                        <key>effortDone</key> 
    40893999                        <real>28800</real> 
    40904000                        <key>objectId</key> 
    40914001                        <integer>151</integer> 
     4002                        <key>task</key> 
     4003                        <string>Large files</string> 
     4004                        <key>workDone</key> 
     4005                        <real>16</real> 
     4006                        <key>workSeconds</key> 
     4007                        <real>57600</real> 
     4008                        <key>workTime</key> 
     4009                        <real>16</real> 
     4010                </dict> 
     4011                <dict> 
     4012                        <key>assignments</key> 
     4013                        <array> 
     4014                                <dict> 
     4015                                        <key>id</key> 
     4016                                        <integer>1</integer> 
     4017                                        <key>units</key> 
     4018                                        <real>0.5</real> 
     4019                                </dict> 
     4020                        </array> 
     4021                        <key>completionPercentage</key> 
     4022                        <real>1</real> 
     4023                        <key>desiredStart</key> 
     4024                        <string>20080731090000</string> 
     4025                        <key>effort</key> 
     4026                        <real>0.0</real> 
     4027                        <key>objectId</key> 
     4028                        <integer>152</integer> 
     4029                        <key>task</key> 
     4030                        <string>Stream encryption (FUTURE)</string> 
     4031                </dict> 
     4032                <dict> 
     4033                        <key>assignments</key> 
     4034                        <array> 
     4035                                <dict> 
     4036                                        <key>id</key> 
     4037                                        <integer>1</integer> 
     4038                                        <key>units</key> 
     4039                                        <real>0.5</real> 
     4040                                </dict> 
     4041                        </array> 
     4042                        <key>desiredStart</key> 
     4043                        <string>20080804090000</string> 
     4044                        <key>doneSeconds</key> 
     4045                        <real>57600</real> 
     4046                        <key>effort</key> 
     4047                        <real>28800</real> 
     4048                        <key>effortDone</key> 
     4049                        <real>28800</real> 
     4050                        <key>objectId</key> 
     4051                        <integer>154</integer> 
     4052                        <key>task</key> 
     4053                        <string>Large files</string> 
     4054                        <key>workDone</key> 
     4055                        <real>16</real> 
     4056                        <key>workSeconds</key> 
     4057                        <real>57600</real> 
     4058                        <key>workTime</key> 
     4059                        <real>16</real> 
     4060                </dict> 
     4061                <dict> 
     4062                        <key>assignments</key> 
     4063                        <array> 
     4064                                <dict> 
     4065                                        <key>id</key> 
     4066                                        <integer>1</integer> 
     4067                                        <key>units</key> 
     4068                                        <real>0.5</real> 
     4069                                </dict> 
     4070                        </array> 
     4071                        <key>desiredStart</key> 
     4072                        <string>20080805143600</string> 
     4073                        <key>doneSeconds</key> 
     4074                        <real>7200</real> 
     4075                        <key>effort</key> 
     4076                        <real>3600</real> 
     4077                        <key>effortDone</key> 
     4078                        <real>3600</real> 
     4079                        <key>objectId</key> 
     4080                        <integer>156</integer> 
     4081                        <key>task</key> 
     4082                        <string>Create Key Pair with OPS, test with GPG</string> 
     4083                        <key>workDone</key> 
     4084                        <real>2</real> 
     4085                        <key>workSeconds</key> 
     4086                        <real>7200</real> 
     4087                        <key>workTime</key> 
     4088                        <real>2</real> 
     4089                </dict> 
     4090                <dict> 
     4091                        <key>assignments</key> 
     4092                        <array> 
     4093                                <dict> 
     4094                                        <key>id</key> 
     4095                                        <integer>1</integer> 
     4096                                        <key>units</key> 
     4097                                        <real>0.5</real> 
     4098                                </dict> 
     4099                        </array> 
     4100                        <key>completionPercentage</key> 
     4101                        <real>1</real> 
     4102                        <key>desiredStart</key> 
     4103                        <string>20080826173600</string> 
     4104                        <key>effort</key> 
     4105                        <real>0.0</real> 
     4106                        <key>objectId</key> 
     4107                        <integer>157</integer> 
     4108                        <key>task</key> 
     4109                        <string>Create Key Pair with GPG, test with OPS (NOT NEEDED)</string> 
     4110                </dict> 
     4111                <dict> 
     4112                        <key>assignments</key> 
     4113                        <array> 
     4114                                <dict> 
     4115                                        <key>id</key> 
     4116                                        <integer>1</integer> 
     4117                                        <key>units</key> 
     4118                                        <real>0.5</real> 
     4119                                </dict> 
     4120                        </array> 
     4121                        <key>desiredStart</key> 
     4122                        <string>20080805173600</string> 
     4123                        <key>doneSeconds</key> 
     4124                        <real>7200</real> 
     4125                        <key>effort</key> 
     4126                        <real>3600</real> 
     4127                        <key>effortDone</key> 
     4128                        <real>3600</real> 
     4129                        <key>objectId</key> 
     4130                        <integer>158</integer> 
     4131                        <key>task</key> 
     4132                        <string>Sign Key with OPS, verify with GPG</string> 
     4133                        <key>workDone</key> 
     4134                        <real>2</real> 
     4135                        <key>workSeconds</key> 
     4136                        <real>7200</real> 
     4137                        <key>workTime</key> 
     4138                        <real>2</real> 
     4139                </dict> 
     4140                <dict> 
     4141                        <key>assignments</key> 
     4142                        <array> 
     4143                                <dict> 
     4144                                        <key>id</key> 
     4145                                        <integer>1</integer> 
     4146                                        <key>units</key> 
     4147                                        <real>0.5</real> 
     4148                                </dict> 
     4149                        </array> 
     4150                        <key>completionPercentage</key> 
     4151                        <real>1</real> 
     4152                        <key>desiredStart</key> 
     4153                        <string>20080827103600</string> 
     4154                        <key>effort</key> 
     4155                        <real>0.0</real> 
     4156                        <key>objectId</key> 
     4157                        <integer>159</integer> 
     4158                        <key>task</key> 
     4159                        <string>Sign Key with GPG, verify with OPS (NOT NEEDED)</string> 
     4160                </dict> 
     4161                <dict> 
     4162                        <key>assignments</key> 
     4163                        <array> 
     4164                                <dict> 
     4165                                        <key>id</key> 
     4166                                        <integer>1</integer> 
     4167                                        <key>units</key> 
     4168                                        <real>0.5</real> 
     4169                                </dict> 
     4170                        </array> 
     4171                        <key>desiredStart</key> 
     4172                        <string>20080909140000</string> 
     4173                        <key>effort</key> 
     4174                        <real>28800</real> 
     4175                        <key>objectId</key> 
     4176                        <integer>161</integer> 
    40924177                        <key>prerequisites</key> 
    40934178                        <array> 
    40944179                                <dict> 
    40954180                                        <key>id</key> 
    4096                                         <integer>91</integer> 
     4181                                        <integer>245</integer> 
    40974182                                        <key>isResource</key> 
    40984183                                        <string>YES</string> 
     
    41024187                        </array> 
    41034188                        <key>task</key> 
    4104                         <string>Large files</string> 
     4189                        <string>Good behaviour when algorithms not present e.g. IDEA</string> 
    41054190                        <key>workSeconds</key> 
    41064191                        <real>57600</real> 
     
    41194204                        </array> 
    41204205                        <key>desiredStart</key> 
    4121                         <string>20080731090000</string> 
    4122                         <key>effort</key> 
    4123                         <real>0.0</real> 
    4124                         <key>objectId</key> 
    4125                         <integer>152</integer> 
    4126                         <key>task</key> 
    4127                         <string>Stream encryption (FUTURE)</string> 
    4128                 </dict> 
    4129                 <dict> 
    4130                         <key>assignments</key> 
    4131                         <array> 
    4132                                 <dict> 
    4133                                         <key>id</key> 
    4134                                         <integer>1</integer> 
    4135                                         <key>units</key> 
    4136                                         <real>0.5</real> 
    4137                                 </dict> 
    4138                         </array> 
    4139                         <key>desiredStart</key> 
    4140                         <string>20080804090000</string> 
    4141                         <key>effort</key> 
    4142                         <real>28800</real> 
    4143                         <key>objectId</key> 
    4144                         <integer>154</integer> 
    4145                         <key>prerequisites</key> 
    4146                         <array> 
    4147                                 <dict> 
    4148                                         <key>id</key> 
    4149                                         <integer>125</integer> 
    4150                                         <key>isResource</key> 
    4151                                         <string>YES</string> 
    4152                                         <key>kind</key> 
    4153                                         <integer>2</integer> 
    4154                                 </dict> 
    4155                         </array> 
    4156                         <key>task</key> 
    4157                         <string>Large files</string> 
    4158                         <key>workSeconds</key> 
     4206                        <string>20080313090000</string> 
     4207                        <key>doneSeconds</key> 
    41594208                        <real>57600</real> 
    4160                         <key>workTime</key> 
     4209                        <key>effort</key> 
     4210                        <real>28800</real> 
     4211                        <key>effortDone</key> 
     4212                        <real>28800</real> 
     4213                        <key>objectId</key> 
     4214                        <integer>162</integer> 
     4215                        <key>task</key> 
     4216                        <string>Write creation of key pair</string> 
     4217                        <key>workDone</key> 
    41614218                        <real>16</real> 
    4162                 </dict> 
    4163                 <dict> 
    4164                         <key>assignments</key> 
    4165                         <array> 
    4166                                 <dict> 
    4167                                         <key>id</key> 
    4168                                         <integer>1</integer> 
    4169                                         <key>units</key> 
    4170                                         <real>0.5</real> 
    4171                                 </dict> 
    4172                         </array> 
    4173                         <key>desiredStart</key> 
    4174                         <string>20080805143600</string> 
    4175                         <key>doneSeconds</key> 
    4176                         <real>7200</real> 
    4177                         <key>effort</key> 
    4178                         <real>3600</real> 
    4179                         <key>effortDone</key> 
    4180                         <real>3600</real> 
    4181                         <key>objectId</key> 
    4182                         <integer>156</integer> 
    4183                         <key>task</key> 
    4184                         <string>Create Key Pair with OPS, test with GPG</string> 
    4185                         <key>workDone</key> 
    4186                         <real>2</real> 
    4187                         <key>workSeconds</key> 
    4188                         <real>7200</real> 
    4189                         <key>workTime</key> 
    4190                         <real>2</real> 
    4191                 </dict> 
    4192                 <dict> 
    4193                         <key>assignments</key> 
    4194                         <array> 
    4195                                 <dict> 
    4196                                         <key>id</key> 
    4197                                         <integer>1</integer> 
    4198                                         <key>units</key> 
    4199                                         <real>0.5</real> 
    4200                                 </dict> 
    4201                         </array> 
    4202                         <key>desiredStart</key> 
    4203                         <string>20080826173600</string> 
    4204                         <key>effort</key> 
    4205                         <real>3600</real> 
    4206                         <key>objectId</key> 
    4207                         <integer>157</integer> 
    4208                         <key>prerequisites</key> 
    4209                         <array> 
    4210                                 <dict> 
    4211                                         <key>id</key> 
    4212                                         <integer>227</integer> 
    4213                                         <key>isResource</key> 
    4214                                         <string>YES</string> 
    4215                                         <key>kind</key> 
    4216                                         <integer>2</integer> 
    4217                                 </dict> 
    4218                         </array> 
    4219                         <key>task</key> 
    4220                         <string>Create Key Pair with GPG, test with OPS</string> 
    4221                         <key>workSeconds</key> 
    4222                         <real>7200</real> 
    4223                         <key>workTime</key> 
    4224                         <real>2</real> 
    4225                 </dict> 
    4226                 <dict> 
    4227                         <key>assignments</key> 
    4228                         <array> 
    4229                                 <dict> 
    4230                                         <key>id</key> 
    4231                                         <integer>1</integer> 
    4232                                         <key>units</key> 
    4233                                         <real>0.5</real> 
    4234                                 </dict> 
    4235                         </array> 
    4236                         <key>desiredStart</key> 
    4237                         <string>20080805173600</string> 
    4238                         <key>doneSeconds</key> 
    4239                         <real>7200</real> 
    4240                         <key>effort</key> 
    4241                         <real>3600</real> 
    4242                         <key>effortDone</key> 
    4243                         <real>3600</real> 
    4244                         <key>objectId</key> 
    4245                         <integer>158</integer> 
    4246                         <key>task</key> 
    4247                         <string>Sign Key with OPS, verify with GPG</string> 
    4248                         <key>workDone</key> 
    4249                         <real>2</real> 
    4250                         <key>workSeconds</key> 
    4251                         <real>7200</real> 
    4252                         <key>workTime</key> 
    4253                         <real>2</real> 
    4254                 </dict> 
    4255                 <dict> 
    4256                         <key>assignments</key> 
    4257                         <array> 
    4258                                 <dict> 
    4259                                         <key>id</key> 
    4260                                         <integer>1</integer> 
    4261                                         <key>units</key> 
    4262                                         <real>0.5</real> 
    4263                                 </dict> 
    4264                         </array> 
    4265                         <key>desiredStart</key> 
    4266                         <string>20080827103600</string> 
    4267                         <key>effort</key> 
    4268                         <real>3600</real> 
    4269                         <key>objectId</key> 
    4270                         <integer>159</integer> 
    4271                         <key>prerequisites</key> 
    4272                         <array> 
    4273                                 <dict> 
    4274                                         <key>id</key> 
    4275                                         <integer>157</integer> 
    4276                                         <key>isResource</key> 
    4277                                         <string>YES</string> 
    4278                                         <key>kind</key> 
    4279                                         <integer>2</integer> 
    4280                                 </dict> 
    4281                         </array> 
    4282                         <key>task</key> 
    4283                         <string>Sign Key with GPG, verify with OPS</string> 
    4284                         <key>workSeconds</key> 
    4285                         <real>7200</real> 
    4286                         <key>workTime</key> 
    4287                         <real>2</real> 
    4288                 </dict> 
    4289                 <dict> 
    4290                         <key>assignments</key> 
    4291                         <array> 
    4292                                 <dict> 
    4293                                         <key>id</key> 
    4294                                         <integer>1</integer> 
    4295                                         <key>units</key> 
    4296                                         <real>0.5</real> 
    4297                                 </dict> 
    4298                         </array> 
    4299                         <key>desiredStart</key> 
    4300                         <string>20080818103600</string> 
    4301                         <key>effort</key> 
    4302                         <real>28800</real> 
    4303                         <key>objectId</key> 
    4304                         <integer>161</integer> 
    4305                         <key>prerequisites</key> 
    4306                         <array> 
    4307                                 <dict> 
    4308                                         <key>id</key> 
    4309                                         <integer>118</integer> 
    4310                                         <key>isResource</key> 
    4311                                         <string>YES</string> 
    4312                                         <key>kind</key> 
    4313                                         <integer>2</integer> 
    4314                                 </dict> 
    4315                         </array> 
    4316                         <key>task</key> 
    4317                         <string>Good behaviour when algorithms not present e.g. IDEA</string> 
    43184219                        <key>workSeconds</key> 
    43194220                        <real>57600</real> 
     
    43324233                        </array> 
    43334234                        <key>desiredStart</key> 
    4334                         <string>20080313090000</string> 
    4335                         <key>doneSeconds</key> 
     4235                        <string>20080530090000</string> 
     4236                        <key>doneSeconds</key> 
     4237                        <real>7200</real> 
     4238                        <key>effort</key> 
     4239                        <real>3600</real> 
     4240                        <key>effortDone</key> 
     4241                        <real>3600</real> 
     4242                        <key>objectId</key> 
     4243                        <integer>163</integer> 
     4244                        <key>task</key> 
     4245                        <string>Write file writer append</string> 
     4246                        <key>workDone</key> 
     4247                        <real>2</real> 
     4248                        <key>workSeconds</key> 
     4249                        <real>7200</real> 
     4250                        <key>workTime</key> 
     4251                        <real>2</real> 
     4252                </dict> 
     4253                <dict> 
     4254                        <key>assignments</key> 
     4255                        <array> 
     4256                                <dict> 
     4257                                        <key>id</key> 
     4258                                        <integer>1</integer> 
     4259                                        <key>units</key> 
     4260                                        <real>0.5</real> 
     4261                                </dict> 
     4262                        </array> 
     4263                        <key>desiredStart</key> 
     4264                        <string>20080704090000</string> 
     4265                        <key>doneSeconds</key> 
     4266                        <real>14400</real> 
     4267                        <key>effort</key> 
     4268                        <real>7200</real> 
     4269                        <key>effortDone</key> 
     4270                        <real>7200</real> 
     4271                        <key>objectId</key> 
     4272                        <integer>165</integer> 
     4273                        <key>task</key> 
     4274                        <string>Public Key packet</string> 
     4275                        <key>workDone</key> 
     4276                        <real>4</real> 
     4277                        <key>workSeconds</key> 
     4278                        <real>14400</real> 
     4279                        <key>workTime</key> 
     4280                        <real>4</real> 
     4281                </dict> 
     4282                <dict> 
     4283                        <key>assignments</key> 
     4284                        <array> 
     4285                                <dict> 
     4286                                        <key>id</key> 
     4287                                        <integer>1</integer> 
     4288                                        <key>units</key> 
     4289                                        <real>0.5</real> 
     4290                                </dict> 
     4291                        </array> 
     4292                        <key>desiredStart</key> 
     4293                        <string>20080704140000</string> 
     4294                        <key>doneSeconds</key> 
     4295                        <real>14400</real> 
     4296                        <key>effort</key> 
     4297                        <real>7200</real> 
     4298                        <key>effortDone</key> 
     4299                        <real>7200</real> 
     4300                        <key>objectId</key> 
     4301                        <integer>166</integer> 
     4302                        <key>task</key> 
     4303                        <string>Secret Key Packet</string> 
     4304                        <key>workDone</key> 
     4305                        <real>4</real> 
     4306                        <key>workSeconds</key> 
     4307                        <real>14400</real> 
     4308                        <key>workTime</key> 
     4309                        <real>4</real> 
     4310                </dict> 
     4311                <dict> 
     4312                        <key>assignments</key> 
     4313                        <array> 
     4314                                <dict> 
     4315                                        <key>id</key> 
     4316                                        <integer>1</integer> 
     4317                                        <key>units</key> 
     4318                                        <real>0.5</real> 
     4319                                </dict> 
     4320                        </array> 
     4321                        <key>desiredStart</key> 
     4322                        <string>20080319110000</string> 
     4323                        <key>doneSeconds</key> 
     4324                        <real>14400</real> 
     4325                        <key>effort</key> 
     4326                        <real>7200</real> 
     4327                        <key>effortDone</key> 
     4328                        <real>7200</real> 
     4329                        <key>objectId</key> 
     4330                        <integer>167</integer> 
     4331                        <key>task</key> 
     4332                        <string>Signing Key pair</string> 
     4333                        <key>workDone</key> 
     4334                        <real>4</real> 
     4335                        <key>workSeconds</key> 
     4336                        <real>14400</real> 
     4337                        <key>workTime</key> 
     4338                        <real>4</real> 
     4339                </dict> 
     4340                <dict> 
     4341                        <key>assignments</key> 
     4342                        <array> 
     4343                                <dict> 
     4344                                        <key>id</key> 
     4345                                        <integer>1</integer> 
     4346                                        <key>units</key> 
     4347                                        <real>0.5</real> 
     4348                                </dict> 
     4349                        </array> 
     4350                        <key>desiredStart</key> 
     4351                        <string>20080704090000</string> 
     4352                        <key>doneSeconds</key> 
     4353                        <real>115200</real> 
     4354                        <key>effort</key> 
    43364355                        <real>57600</real> 
    4337                         <key>effort</key> 
    4338                         <real>28800</real> 
    4339                         <key>effortDone</key> 
    4340                         <real>28800</real> 
    4341                         <key>objectId</key> 
    4342                         <integer>162</integer> 
    4343                         <key>task</key> 
    4344                         <string>Write creation of key pair</string> 
    4345                         <key>workDone</key> 
    4346                         <real>16</real> 
    4347                         <key>workSeconds</key> 
     4356                        <key>effortDone</key> 
    43484357                        <real>57600</real> 
    4349                         <key>workTime</key> 
    4350                         <real>16</real> 
    4351                 </dict> 
    4352                 <dict> 
    4353                         <key>assignments</key> 
    4354                         <array> 
    4355                                 <dict> 
    4356                                         <key>id</key> 
    4357                                         <integer>1</integer> 
    4358                                         <key>units</key> 
    4359                                         <real>0.5</real> 
    4360                                 </dict> 
    4361                         </array> 
    4362                         <key>desiredStart</key> 
    4363                         <string>20080530090000</string> 
    4364                         <key>doneSeconds</key> 
    4365                         <real>7200</real> 
    4366                         <key>effort</key> 
    4367                         <real>3600</real> 
    4368                         <key>effortDone</key> 
    4369                         <real>3600</real> 
    4370                         <key>objectId</key> 
    4371                         <integer>163</integer> 
    4372                         <key>task</key> 
    4373                         <string>Write file writer append</string> 
    4374                         <key>workDone</key> 
    4375                         <real>2</real> 
    4376                         <key>workSeconds</key> 
    4377                         <real>7200</real> 
    4378                         <key>workTime</key> 
    4379                         <real>2</real> 
    4380                 </dict> 
    4381                 <dict> 
    4382                         <key>assignments</key> 
    4383                         <array> 
    4384                                 <dict> 
    4385                                         <key>id</key> 
    4386                                         <integer>1</integer> 
    4387                                         <key>units</key> 
    4388                                         <real>0.5</real> 
    4389                                 </dict> 
    4390                         </array> 
    4391                         <key>desiredStart</key> 
    4392                         <string>20080704090000</string> 
    4393                         <key>doneSeconds</key> 
    4394                         <real>14400</real> 
    4395                         <key>effort</key> 
    4396                         <real>7200</real> 
    4397                         <key>effortDone</key> 
    4398                         <real>7200</real> 
    4399                         <key>objectId</key> 
    4400                         <integer>165</integer> 
    4401                         <key>task</key> 
    4402                         <string>Public Key packet</string> 
    4403                         <key>workDone</key> 
    4404                         <real>4</real> 
    4405                         <key>workSeconds</key> 
    4406                         <real>14400</real> 
    4407                         <key>workTime</key> 
    4408                         <real>4</real> 
    4409                 </dict> 
    4410                 <dict> 
    4411                         <key>assignments</key> 
    4412                         <array> 
    4413                                 <dict> 
    4414                                         <key>id</key> 
    4415                                         <integer>1</integer> 
    4416                                         <key>units</key> 
    4417                                         <real>0.5</real> 
    4418                                 </dict> 
    4419                         </array> 
    4420                         <key>desiredStart</key> 
    4421                         <string>20080704140000</string> 
    4422                         <key>doneSeconds</key> 
    4423                         <real>14400</real> 
    4424                         <key>effort</key> 
    4425                         <real>7200</real> 
    4426                         <key>effortDone</key> 
    4427                         <real>7200</real> 
    4428                         <key>objectId</key> 
    4429                         <integer>166</integer> 
    4430                         <key>prerequisites</key> 
    4431                         <array> 
    4432                                 <dict> 
    4433                                         <key>id</key> 
    4434                                         <integer>165</integer> 
    4435                                         <key>isResource</key> 
    4436                                         <string>YES</string> 
    4437                                         <key>kind</key> 
    4438                                         <integer>2</integer> 
    4439                                 </dict> 
    4440                         </array> 
    4441                         <key>task</key> 
    4442                         <string>Secret Key Packet</string> 
    4443                         <key>workDone</key> 
    4444                         <real>4</real> 
    4445                         <key>workSeconds</key> 
    4446                         <real>14400</real> 
    4447                         <key>workTime</key> 
    4448                         <real>4</real> 
    4449                 </dict> 
    4450                 <dict> 
    4451                         <key>assignments</key> 
    4452                         <array> 
    4453                                 <dict> 
    4454                                         <key>id</key> 
    4455                                         <integer>1</integer> 
    4456                                         <key>units</key> 
    4457                                         <real>0.5</real> 
    4458                                 </dict> 
    4459                         </array> 
    4460                         <key>desiredStart</key> 
    4461                         <string>20080319110000</string> 
    4462                         <key>doneSeconds</key> 
    4463                         <real>14400</real> 
    4464                         <key>effort</key> 
    4465                         <real>7200</real> 
    4466                         <key>effortDone</key> 
    4467                         <real>7200</real> 
    4468                         <key>objectId</key> 
    4469                         <integer>167</integer> 
    4470                         <key>task</key> 
    4471                         <string>Signing Key pair</string> 
    4472                         <key>workDone</key> 
    4473                         <real>4</real> 
    4474                         <key>workSeconds</key> 
    4475                         <real>14400</real> 
    4476                         <key>workTime</key> 
    4477                         <real>4</real> 
    4478                 </dict> 
    4479                 <dict> 
    4480                         <key>assignments</key> 
    4481                         <array> 
    4482                                 <dict> 
    4483                                         <key>id</key> 
    4484                                         <integer>1</integer> 
    4485                                         <key>units</key> 
    4486                                         <real>0.5</real> 
    4487                                 </dict> 
    4488                         </array> 
    4489                         <key>desiredStart</key> 
    4490                         <string>20080704090000</string> 
    4491                         <key>doneSeconds</key> 
    4492                         <real>57600</real> 
    4493                         <key>effort</key> 
    4494                         <real>57600</real> 
    4495                         <key>effortDone</key> 
    4496                         <real>28800</real> 
    44974358                        <key>objectId</key> 
    44984359                        <integer>168</integer> 
    4499                         <key>prerequisites</key> 
    4500                         <array> 
    4501                                 <dict> 
    4502                                         <key>id</key> 
    4503                                         <integer>150</integer> 
    4504                                         <key>isResource</key> 
    4505                                         <string>YES</string> 
    4506                                         <key>kind</key> 
    4507                                         <integer>2</integer> 
    4508                                 </dict> 
    4509                         </array> 
    45104360                        <key>task</key> 
    45114361                        <string>Command line app</string> 
    45124362                        <key>workDone</key> 
    4513                         <real>16</real> 
     4363                        <real>32</real> 
    45144364                        <key>workSeconds</key> 
    45154365                        <real>115200</real> 
     
    46014451                        <string>20080708090000</string> 
    46024452                        <key>doneSeconds</key> 
    4603                         <real>57599.99609375</real> 
     4453                        <real>288000</real> 
    46044454                        <key>effort</key> 
    46054455                        <real>144000</real> 
    46064456                        <key>effortDone</key> 
    4607                         <real>28799.998046875</real> 
     4457                        <real>144000</real> 
    46084458                        <key>objectId</key> 
    46094459                        <integer>172</integer> 
    4610                         <key>prerequisites</key> 
    4611                         <array> 
    4612                                 <dict> 
    4613                                         <key>id</key> 
    4614                                         <integer>168</integer> 
    4615                                         <key>isResource</key> 
    4616                                         <string>YES</string> 
    4617                                         <key>kind</key> 
    4618                                         <integer>2</integer> 
    4619                                 </dict> 
    4620                         </array> 
    46214460                        <key>task</key> 
    46224461                        <string>Error handling</string> 
    46234462                        <key>workDone</key> 
    4624                         <real>15.999999046325684</real> 
     4463                        <real>80</real> 
    46254464                        <key>workSeconds</key> 
    46264465                        <real>288000</real> 
     
    47224561                        </array> 
    47234562                        <key>desiredStart</key> 
    4724                         <string>20080916123600</string> 
     4563                        <string>20081007140000</string> 
    47254564                        <key>effort</key> 
    47264565                        <real>28800</real> 
     
    47624601                        </array> 
    47634602                        <key>desiredStart</key> 
    4764                         <string>20080918123600</string> 
     4603                        <string>20081009140000</string> 
    47654604                        <key>effort</key> 
    47664605                        <real>115200</real> 
     
    48394678                                <integer>189</integer> 
    48404679                                <integer>190</integer> 
    4841                                 <integer>191</integer> 
    48424680                        </array> 
    48434681                        <key>forcedStart</key> 
     
    50164854                                        <integer>2</integer> 
    50174855                                </dict> 
    5018                                 <dict> 
    5019                                         <key>id</key> 
    5020                                         <integer>154</integer> 
    5021                                         <key>isResource</key> 
    5022                                         <string>YES</string> 
    5023                                         <key>kind</key> 
    5024                                         <integer>2</integer> 
    5025                                 </dict> 
    50264856                        </array> 
    50274857                        <key>task</key> 
     
    50334863                        <key>workTime</key> 
    50344864                        <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>20080807090000</string> 
    5048                         <key>effort</key> 
    5049                         <real>28800</real> 
    5050                         <key>objectId</key> 
    5051                         <integer>191</integer> 
    5052                         <key>prerequisites</key> 
    5053                         <array> 
    5054                                 <dict> 
    5055                                         <key>id</key> 
    5056                                         <integer>190</integer> 
    5057                                         <key>isResource</key> 
    5058                                         <string>YES</string> 
    5059                                         <key>kind</key> 
    5060                                         <integer>2</integer> 
    5061                                 </dict> 
    5062                         </array> 
    5063                         <key>task</key> 
    5064                         <string>Large files</string> 
    5065                         <key>workSeconds</key> 
    5066                         <real>57600</real> 
    5067                         <key>workTime</key> 
    5068                         <real>16</real> 
    50694865                </dict> 
    50704866                <dict> 
     
    52195015                                </dict> 
    52205016                        </array> 
     5017                        <key>completionPercentage</key> 
     5018                        <real>1</real> 
    52215019                        <key>desiredStart</key> 
    52225020                        <string>20080820103600</string> 
    52235021                        <key>effort</key> 
    5224                         <real>28800</real> 
     5022                        <real>0.0</real> 
    52255023                        <key>objectId</key> 
    52265024                        <integer>199</integer> 
    5227                         <key>prerequisites</key> 
    5228                         <array> 
    5229                                 <dict> 
    5230                                         <key>id</key> 
    5231                                         <integer>161</integer> 
    5232                                         <key>isResource</key> 
    5233                                         <string>YES</string> 
    5234                                         <key>kind</key> 
    5235                                         <integer>2</integer> 
    5236                                 </dict> 
    5237                         </array> 
    5238                         <key>task</key> 
    5239                         <string>(NEW) Test behaviour when using revoked/expired key</string> 
    5240                         <key>workSeconds</key> 
    5241                         <real>57600</real> 
    5242                         <key>workTime</key> 
    5243                         <real>16</real> 
    5244                 </dict> 
    5245                 <dict> 
    5246                         <key>assignments</key> 
    5247                         <array> 
    5248                                 <dict> 
    5249                                         <key>id</key> 
    5250                                         <integer>1</integer> 
    5251                                         <key>units</key> 
    5252                                         <real>0.5</real> 
    5253                                 </dict> 
    5254                         </array> 
     5025                        <key>task</key> 
     5026                        <string>(NEW) Test behaviour when using revoked/expired key (FUTURE)</string> 
     5027                </dict> 
     5028                <dict> 
     5029                        <key>assignments</key> 
     5030                        <array> 
     5031                                <dict> 
     5032                                        <key>id</key> 
     5033                                        <integer>1</integer> 
     5034                                        <key>units</key> 
     5035                                        <real>0.5</real> 
     5036                                </dict> 
     5037                        </array> 
     5038                        <key>completionPercentage</key> 
     5039                        <real>1</real> 
    52555040                        <key>desiredStart</key> 
    52565041                        <string>20080822103600</string> 
    52575042                        <key>effort</key> 
    5258                         <real>28800</real> 
     5043                        <real>0.0</real> 
    52595044                        <key>objectId</key> 
    52605045                        <integer>200</integer> 
    5261                         <key>prerequisites</key> 
    5262                         <array> 
    5263                                 <dict> 
    5264                                         <key>id</key> 
    5265                                         <integer>199</integer> 
    5266                                         <key>isResource</key> 
    5267                                         <string>YES</string> 
    5268                                         <key>kind</key> 
    5269                                         <integer>2</integer> 
    5270                                 </dict> 
    5271                         </array> 
    5272                         <key>task</key> 
    5273                         <string>(NEW) Test correct behaviour for binary/text files</string> 
    5274                         <key>workSeconds</key> 
    5275                         <real>57600</real> 
    5276                         <key>workTime</key> 
    5277                         <real>16</real> 
     5046                        <key>task</key> 
     5047                        <string>(NEW) Test correct behaviour for binary/text files (FUTURE)</string> 
    52785048                </dict> 
    52795049                <dict> 
     
    54125182                        <string>20080813103600</string> 
    54135183                        <key>doneSeconds</key> 
    5414                         <real>51840</real> 
    5415                         <key>effort</key> 
    5416                         <real>28800</real> 
    5417                         <key>effortDone</key> 
    5418                         <real>25920</real> 
     5184                        <real>57600</real> 
     5185                        <key>effort</key> 
     5186                        <real>28800</real> 
     5187                        <key>effortDone</key> 
     5188                        <real>28800</real> 
    54195189                        <key>objectId</key> 
    54205190                        <integer>207</integer> 
    5421                         <key>prerequisites</key> 
    5422                         <array> 
    5423                                 <dict> 
    5424                                         <key>id</key> 
    5425                                         <integer>103</integer> 
    5426                                         <key>isResource</key> 
    5427                                         <string>YES</string> 
    5428                                         <key>kind</key> 
    5429                                         <integer>2</integer> 
    5430                                 </dict> 
    5431                         </array> 
    54325191                        <key>task</key> 
    54335192                        <string>ZIP-compress</string> 
    54345193                        <key>workDone</key> 
    5435                         <real>14.399999618530273</real> 
     5194                        <real>16</real> 
    54365195                        <key>workSeconds</key> 
    54375196                        <real>57600</real> 
     
    56205379                        </array> 
    56215380                        <key>desiredStart</key> 
    5622                         <string>20080827123600</string> 
     5381                        <string>20080917140000</string> 
    56235382                        <key>effort</key> 
    56245383                        <real>201600</real> 
     
    56295388                                <dict> 
    56305389                                        <key>id</key> 
    5631                                         <integer>159</integer> 
     5390                                        <integer>239</integer> 
    56325391                                        <key>isResource</key> 
    56335392                                        <string>YES</string> 
     
    56915450                                <integer>227</integer> 
    56925451                        </array> 
    5693                         <key>isExpanded</key> 
    5694                         <false/> 
    56955452                        <key>objectId</key> 
    56965453                        <integer>223</integer> 
     
    57315488                        <key>desiredStart</key> 
    57325489                        <string>20080826123600</string> 
    5733                         <key>effort</key> 
     5490                        <key>doneSeconds</key> 
     5491                        <real>7200</real> 
     5492                        <key>effort</key> 
     5493                        <real>3600</real> 
     5494                        <key>effortDone</key> 
    57345495                        <real>3600</real> 
    57355496                        <key>objectId</key> 
    57365497                        <integer>225</integer> 
    5737                         <key>prerequisites</key> 
    5738                         <array> 
    5739                                 <dict> 
    5740                                         <key>id</key> 
    5741                                         <integer>226</integer> 
    5742                                         <key>isResource</key> 
    5743                                         <string>YES</string> 
    5744                                         <key>kind</key> 
    5745                                         <integer>2</integer> 
    5746                                 </dict> 
    5747                         </array> 
    57485498                        <key>task</key> 
    57495499                        <string>Armoured/No Passphrase</string> 
     5500                        <key>workDone</key> 
     5501                        <real>2</real> 
    57505502                        <key>workSeconds</key> 
    57515503                        <real>7200</real> 
     
    57655517                        <key>desiredStart</key> 
    57665518                        <string>20080826103600</string> 
    5767                         <key>effort</key> 
     5519                        <key>doneSeconds</key> 
     5520                        <real>7200</real> 
     5521                        <key>effort</key> 
     5522                        <real>3600</real> 
     5523                        <key>effortDone</key> 
    57685524                        <real>3600</real> 
    57695525                        <key>objectId</key> 
    57705526                        <integer>226</integer> 
    5771                         <key>prerequisites</key> 
    5772                         <array> 
    5773                                 <dict> 
    5774                                         <key>id</key> 
    5775                                         <integer>200</integer> 
    5776                                         <key>isResource</key> 
    5777                                         <string>YES</string> 
    5778                                         <key>kind</key> 
    5779                                         <integer>2</integer> 
    5780                                 </dict> 
    5781                         </array> 
    57825527                        <key>task</key> 
    57835528                        <string>Unarmoured/Passphrase</string> 
     5529                        <key>workDone</key> 
     5530                        <real>2</real> 
    57845531                        <key>workSeconds</key> 
    57855532                        <real>7200</real> 
     
    57995546                        <key>desiredStart</key> 
    58005547                        <string>20080826153600</string> 
    5801                         <key>effort</key> 
     5548                        <key>doneSeconds</key> 
     5549                        <real>7200</real> 
     5550                        <key>effort</key> 
     5551                        <real>3600</real> 
     5552                        <key>effortDone</key> 
    58025553                        <real>3600</real> 
    58035554                        <key>objectId</key> 
    58045555                        <integer>227</integer> 
    5805                         <key>prerequisites</key> 
    5806                         <array> 
    5807                                 <dict> 
    5808                                         <key>id</key> 
    5809                                         <integer>225</integer> 
    5810                                         <key>isResource</key> 
    5811                                         <string>YES</string> 
    5812                                         <key>kind</key> 
    5813                                         <integer>2</integer> 
    5814                                 </dict> 
    5815                         </array> 
    58165556                        <key>task</key> 
    58175557                        <string>Armoured/Passphrase</string> 
     5558                        <key>workDone</key> 
     5559                        <real>2</real> 
    58185560                        <key>workSeconds</key> 
    58195561                        <real>7200</real> 
     
    59965738                </dict> 
    59975739                <dict> 
     5740                        <key>assignments</key> 
     5741                        <array> 
     5742                                <dict> 
     5743                                        <key>id</key> 
     5744                                        <integer>1</integer> 
     5745                                        <key>units</key> 
     5746                                        <real>0.5</real> 
     5747                                </dict> 
     5748                        </array> 
     5749                        <key>desiredStart</key> 
     5750                        <string>20080911140000</string> 
    59985751                        <key>effort</key> 
    59995752                        <real>57600</real> 
    60005753                        <key>objectId</key> 
    60015754                        <integer>239</integer> 
     5755                        <key>prerequisites</key> 
     5756                        <array> 
     5757                                <dict> 
     5758                                        <key>id</key> 
     5759                                        <integer>161</integer> 
     5760                                        <key>isResource</key> 
     5761                                        <string>YES</string> 
     5762                                        <key>kind</key> 
     5763                                        <integer>2</integer> 
     5764                                </dict> 
     5765                        </array> 
    60025766                        <key>task</key> 
    60035767                        <string>(NEW 080502) Interoperability with PGP latest version</string> 
    60045768                        <key>workSeconds</key> 
    6005                         <real>57600</real> 
    6006                         <key>workTime</key> 
    6007                         <real>16</real> 
    6008                 </dict> 
    6009                 <dict> 
    6010                         <key>doneSeconds</key> 
     5769                        <real>115200</real> 
     5770                        <key>workTime</key> 
     5771                        <real>32</real> 
     5772                </dict> 
     5773                <dict> 
     5774                        <key>assignments</key> 
     5775                        <array> 
     5776                                <dict> 
     5777                                        <key>id</key> 
     5778                                        <integer>1</integer> 
     5779                                        <key>units</key> 
     5780                                        <real>0.5</real> 
     5781                                </dict> 
     5782                        </array> 
     5783                        <key>doneSeconds</key> 
     5784                        <real>172800</real> 
     5785                        <key>effort</key> 
    60115786                        <real>86400</real> 
    6012                         <key>effort</key> 
     5787                        <key>effortDone</key> 
    60135788                        <real>86400</real> 
    6014                         <key>effortDone</key> 
    6015                         <real>86400</real> 
    60165789                        <key>objectId</key> 
    60175790                        <integer>242</integer> 
     
    60195792                        <string>Extra complexity in cmd line app</string> 
    60205793                        <key>workDone</key> 
    6021                         <real>24</real> 
    6022                         <key>workSeconds</key> 
    6023                         <real>86400</real> 
    6024                         <key>workTime</key> 
    6025                         <real>24</real> 
    6026                 </dict> 
    6027                 <dict> 
     5794                        <real>48</real> 
     5795                        <key>workSeconds</key> 
     5796                        <real>172800</real> 
     5797                        <key>workTime</key> 
     5798                        <real>48</real> 
     5799                </dict> 
     5800                <dict> 
     5801                        <key>assignments</key> 
     5802                        <array> 
     5803                                <dict> 
     5804                                        <key>id</key> 
     5805                                        <integer>1</integer> 
     5806                                        <key>units</key> 
     5807                                        <real>0.5</real> 
     5808                                </dict> 
     5809                        </array> 
     5810                        <key>desiredStart</key> 
     5811                        <string>20080909090000</string> 
    60285812                        <key>effort</key> 
    60295813                        <real>3600</real> 
     
    60335817                        <string>3DES</string> 
    60345818                        <key>workSeconds</key> 
    6035                         <real>3600</real> 
    6036                         <key>workTime</key> 
    6037                         <real>1</real> 
    6038                 </dict> 
    6039                 <dict> 
     5819                        <real>7200</real> 
     5820                        <key>workTime</key> 
     5821                        <real>2</real> 
     5822                </dict> 
     5823                <dict> 
     5824                        <key>assignments</key> 
     5825                        <array> 
     5826                                <dict> 
     5827                                        <key>id</key> 
     5828                                        <integer>1</integer> 
     5829                                        <key>units</key> 
     5830                                        <real>0.5</real> 
     5831                                </dict> 
     5832                        </array> 
     5833                        <key>desiredStart</key> 
     5834                        <string>20080909110000</string> 
    60405835                        <key>effort</key> 
    60415836                        <real>3600</real> 
    60425837                        <key>objectId</key> 
    60435838                        <integer>245</integer> 
     5839                        <key>prerequisites</key> 
     5840                        <array> 
     5841                                <dict> 
     5842                                        <key>id</key> 
     5843                                        <integer>244</integer> 
     5844                                        <key>isResource</key> 
     5845                                        <string>YES</string> 
     5846                                        <key>kind</key> 
     5847                                        <integer>2</integer> 
     5848                                </dict> 
     5849                        </array> 
    60445850                        <key>task</key> 
    60455851                        <string>3DES</string> 
    60465852                        <key>workSeconds</key> 
    6047                         <real>3600</real> 
    6048                         <key>workTime</key> 
    6049                         <real>1</real> 
     5853                        <real>7200</real> 
     5854                        <key>workTime</key> 
     5855                        <real>2</real> 
    60505856                </dict> 
    60515857        </array> 
     
    60595865        </array> 
    60605866        <key>uuid</key> 
    6061         <string>8FDD7D7D-8C33-4C7A-BF51-949995C5C267</string> 
     5867        <string>2D61B514-B49E-405E-8FE4-3DBFC3DB2094</string> 
    60625868        <key>version</key> 
    60635869        <integer>2</integer> 
  • openpgpsdk/trunk/src/lib/errors.c

    r616 r618  
    166166    } 
    167167 
     168int ops_has_error(ops_error_t *errstack, ops_errcode_t errcode) 
     169    { 
     170    ops_error_t *err; 
     171    for (err=errstack; err!=NULL; err=err->next) 
     172        { 
     173        if (err->errcode==errcode) 
     174            return 1; 
     175        } 
     176    return 0; 
     177    } 
     178 
    168179void ops_free_errors(ops_error_t *errstack) 
    169180{ 
  • openpgpsdk/trunk/src/lib/reader_armoured.c

    r613 r618  
    125125    } 
    126126     
    127 static void set_lastseen_headerline(dearmour_arg_t* arg, char* buf, ops_error_t **errors) 
     127static int set_lastseen_headerline(dearmour_arg_t* arg, char* buf, ops_error_t **errors) 
    128128    { 
    129129    char* begin_msg="BEGIN PGP MESSAGE"; 
     
    145145    if (!strncmp(buf,begin_msg,strlen(begin_msg))) 
    146146        arg->lastseen=BEGIN_PGP_MESSAGE; 
    147     if (!strncmp(buf,begin_public,strlen(begin_public))) 
     147    else if (!strncmp(buf,begin_public,strlen(begin_public))) 
    148148        arg->lastseen=BEGIN_PGP_PUBLIC_KEY_BLOCK; 
    149     if (!strncmp(buf,begin_private,strlen(begin_private))) 
     149    else if (!strncmp(buf,begin_private,strlen(begin_private))) 
    150150        arg->lastseen=BEGIN_PGP_PRIVATE_KEY_BLOCK; 
    151     if (!strncmp(buf,begin_multi,strlen(begin_multi))) 
     151    else if (!strncmp(buf,begin_multi,strlen(begin_multi))) 
    152152        arg->lastseen=BEGIN_PGP_MULTI; 
    153     if (!strncmp(buf,begin_sig,strlen(begin_sig))) 
     153    else if (!strncmp(buf,begin_sig,strlen(begin_sig))) 
    154154        arg->lastseen=BEGIN_PGP_SIGNATURE; 
    155155 
    156     if (!strncmp(buf,end_msg,strlen(end_msg))) 
     156    else if (!strncmp(buf,end_msg,strlen(end_msg))) 
    157157        arg->lastseen=END_PGP_MESSAGE; 
    158     if (!strncmp(buf,end_public,strlen(end_public))) 
     158    else if (!strncmp(buf,end_public,strlen(end_public))) 
    159159        arg->lastseen=END_PGP_PUBLIC_KEY_BLOCK; 
    160     if (!strncmp(buf,end_private,strlen(end_private))) 
     160    else if (!strncmp(buf,end_private,strlen(end_private))) 
    161161        arg->lastseen=END_PGP_PRIVATE_KEY_BLOCK; 
    162     if (!strncmp(buf,end_multi,strlen(end_multi))) 
     162    else if (!strncmp(buf,end_multi,strlen(end_multi))) 
    163163        arg->lastseen=END_PGP_MULTI; 
    164     if (!strncmp(buf,end_sig,strlen(end_sig))) 
     164    else if (!strncmp(buf,end_sig,strlen(end_sig))) 
    165165        arg->lastseen=END_PGP_SIGNATURE; 
    166166 
    167     if (!strncmp(buf,begin_signed_msg,strlen(begin_signed_msg))) 
     167    else if (!strncmp(buf,begin_signed_msg,strlen(begin_signed_msg))) 
    168168        arg->lastseen=BEGIN_PGP_SIGNED_MESSAGE; 
     169 
     170    else 
     171        { 
     172        OPS_ERROR_1(errors,OPS_E_R_BAD_FORMAT,"Unrecognised Header Line %s", buf); 
     173        return 0; 
     174        } 
    169175 
    170176    if (debug) 
     
    174180        { 
    175181    case NONE: 
    176         OPS_ERROR_1(errors,OPS_E_R_BAD_FORMAT,"Unrecognised Header Line %s", buf); 
     182        OPS_ERROR_1(errors,OPS_E_R_BAD_FORMAT,"Unrecognised last seen Header Line %s", buf); 
    177183        break; 
    178184 
     
    209215        break; 
    210216        } 
     217 
     218    return 1; 
    211219    } 
    212220 
     
    445453    } 
    446454 
    447 static void add_header(dearmour_arg_t *arg,const char *key,const char 
     455static int add_header(dearmour_arg_t *arg,const char *key,const char 
    448456                       *value) 
    449457    { 
    450     arg->headers.headers=realloc(arg->headers.headers, 
    451                                  (arg->headers.nheaders+1) 
    452                                  *sizeof *arg->headers.headers); 
    453     arg->headers.headers[arg->headers.nheaders].key=strdup(key); 
    454     arg->headers.headers[arg->headers.nheaders].value=strdup(value); 
    455     ++arg->headers.nheaders; 
     458    /* 
     459     * Check that the header is valid 
     460     */ 
     461    if ( !strcmp(key,"Version") || !strcmp(key,"Comment")  
     462         || !strcmp(key,"MessageID") || !strcmp(key,"Hash") 
     463         || !strcmp(key,"Charset")) 
     464        { 
     465        arg->headers.headers=realloc(arg->headers.headers, 
     466                                     (arg->headers.nheaders+1) 
     467                                     *sizeof *arg->headers.headers); 
     468        arg->headers.headers[arg->headers.nheaders].key=strdup(key); 
     469        arg->headers.headers[arg->headers.nheaders].value=strdup(value); 
     470        ++arg->headers.nheaders; 
     471        return 1; 
     472        } 
     473    else 
     474        { 
     475        return 0; 
     476        } 
    456477    } 
    457478 
     
    518539                *s='\0'; 
    519540                if(s[1] != ' ') 
     541            { 
    520542                    OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"No space in armour header"); 
    521                 add_header(arg,buf,s+2); 
     543            rtn=-1; 
     544            goto end; 
     545            } 
     546        if (!add_header(arg,buf,s+2)) 
     547            { 
     548            OPS_ERROR_1(errors,OPS_E_R_BAD_FORMAT,"Invalid header %s", buf); 
     549            rtn=-1; 
     550            goto end; 
     551            } 
    522552                nbuf=0; 
    523553                } 
     
    535565        } 
    536566 
     567 end: 
    537568    free(buf); 
    538569 
     
    604635    int n2; 
    605636    unsigned long l; 
    606     //ops_parser_content_t content; 
    607637    int c; 
    608638    int ret; 
     
    612642    ret=read4(arg,errors,rinfo,cbinfo,&c,&n,&l); 
    613643    if(ret < 0) 
    614         OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly formed base64"); 
     644        { 
     645        OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly formed base64"); 
     646        return 0; 
     647        } 
    615648 
    616649    if(n == 3) 
    617650        { 
    618651        if(c != '=') 
     652        { 
    619653            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64 (2)"); 
     654        return 0; 
     655        } 
    620656        arg->buffered=2; 
    621657        arg->eof64=ops_true; 
     
    625661        { 
    626662        if(c != '=') 
     663        { 
    627664            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64 (3)"); 
     665        return 0; 
     666        } 
    628667        arg->buffered=1; 
    629668        arg->eof64=ops_true; 
     
    631670        c=read_char(arg,errors,rinfo,cbinfo,ops_false); 
    632671        if(c != '=') 
     672        { 
    633673            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64"); 
     674        return 0; 
     675        } 
    634676        } 
    635677    else if(n == 0) 
    636678        { 
    637679        if(!arg->prev_nl || c != '=') 
     680        { 
    638681            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64 (4)"); 
     682        return 0; 
     683        } 
    639684        arg->buffered=0; 
    640685        } 
     
    652697        c=read_and_eat_whitespace(arg,errors,rinfo,cbinfo,ops_true); 
    653698        if(c != '\n') 
     699        { 
    654700            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"No newline at base64 end"); 
     701        return 0; 
     702        } 
    655703        c=read_char(arg,errors,rinfo,cbinfo,ops_false); 
    656704        if(c != '=') 
     705        { 
    657706            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"No checksum at base64 end"); 
     707        return 0; 
     708        } 
    658709        } 
    659710 
     
    663714        ret=read4(arg,errors,rinfo,cbinfo,&c,&n,&arg->read_checksum); 
    664715        if(ret < 0 || n != 4) 
     716        { 
    665717            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Error in checksum"); 
     718        return 0; 
     719        } 
    666720        c=read_char(arg,errors,rinfo,cbinfo,ops_true); 
    667721        if(arg->allow_trailing_whitespace) 
    668722            c=eat_whitespace(c,arg,errors,rinfo,cbinfo,ops_true); 
    669723        if(c != '\n') 
     724        { 
    670725            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated checksum"); 
     726        return 0; 
     727        } 
    671728        c=read_char(arg,errors,rinfo,cbinfo,ops_false); 
    672729        if(c != '-') 
     730        { 
    673731            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Bad base64 trailer (2)"); 
     732        return 0; 
     733        } 
    674734        } 
    675735 
     
    678738        for(n=0 ; n < 4 ; ++n) 
    679739            if(read_char(arg,errors,rinfo,cbinfo,ops_false) != '-') 
    680                 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Bad base64 trailer"); 
     740            { 
     741            OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Bad base64 trailer"); 
     742            return 0; 
     743            } 
    681744        arg->eof64=ops_true; 
    682745        } 
     
    694757 
    695758    if(arg->eof64 && arg->read_checksum != arg->checksum) 
     759        { 
    696760        OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Checksum mismatch"); 
     761        return 0; 
     762        } 
    697763 
    698764    return 1; 
     
    799865                 return -1; 
    800866 
    801              set_lastseen_headerline(arg,buf,errors); 
     867         if (!set_lastseen_headerline(arg,buf,errors)) 
     868             return -1; 
    802869 
    803870             if(!strcmp(buf,"BEGIN PGP SIGNED MESSAGE")) 
     
    869936             buf[n]='\0'; 
    870937 
    871              set_lastseen_headerline(arg,buf,errors); 
     938         if (!set_lastseen_headerline(arg,buf,errors)) 
     939             return -1; 
    872940 
    873941             /* Consume trailing '-' */ 
     
    894962             if(!strncmp(buf,"BEGIN ",6)) 
    895963                 { 
    896                  set_lastseen_headerline(arg,buf,errors); 
     964         if (!set_lastseen_headerline(arg,buf,errors)) 
     965             return -1; 
    897966                 if((ret=parse_headers(arg,errors,rinfo,cbinfo)) <= 0) 
    898967                     return ret; 
  • openpgpsdk/trunk/tests/test_rsa_encrypt.c

    r573 r618  
    248248    } 
    249249 
     250/* 
     251  FUTURE: 
    250252static void test_todo(void) 
    251253    { 
    252     /* 
    253       FUTURE: 
    254254    CU_FAIL("Test TODO: Use AES128"); 
    255255    CU_FAIL("Test TODO: Use AES256"); 
     
    257257    CU_FAIL("Test TODO: Encrypt to multiple keys where my keys is (a) first key in list; (b) last key in list; (c) in the middle of the list"); 
    258258    CU_FAIL("Test TODO: Encrypt to users with different preferences"); 
     259    } 
     260*/ 
     261 
     262static int add_tests(CU_pSuite suite) 
     263    { 
     264    // add tests to suite 
     265     
     266    if (NULL == CU_add_test(suite, "Unarmoured, single key, no passphrase", test_rsa_encrypt_noarmour_nopassphrase_singlekey)) 
     267            return 0; 
     268     
     269    if (NULL == CU_add_test(suite, "Unarmoured, single key, passphrase", test_rsa_encrypt_noarmour_passphrase_singlekey)) 
     270            return 0; 
     271     
     272    if (NULL == CU_add_test(suite, "Armoured, single key, no passphrase", test_rsa_encrypt_armour_nopassphrase_singlekey)) 
     273            return 0; 
     274     
     275    if (NULL == CU_add_test(suite, "Armoured, single key, passphrase", test_rsa_encrypt_armour_passphrase_singlekey)) 
     276            return 0; 
     277 
     278    if (NULL == CU_add_test(suite, "Large, no armour, no passphrase", test_rsa_encrypt_large_noarmour_nopassphrase)) 
     279            return 0; 
     280 
     281    if (NULL == CU_add_test(suite, "Large, armour, no passphrase", test_rsa_encrypt_large_armour_nopassphrase)) 
     282            return 0; 
     283 
     284    /* 
     285    if (NULL == CU_add_test(suite, "Tests to be implemented", test_todo)) 
     286            return 0; 
    259287    */ 
    260     } 
    261  
    262 static int add_tests(CU_pSuite suite) 
    263     { 
    264     // add tests to suite 
    265      
    266     if (NULL == CU_add_test(suite, "Unarmoured, single key, no passphrase", test_rsa_encrypt_noarmour_nopassphrase_singlekey)) 
    267             return 0; 
    268      
    269     if (NULL == CU_add_test(suite, "Unarmoured, single key, passphrase", test_rsa_encrypt_noarmour_passphrase_singlekey)) 
    270             return 0; 
    271      
    272     if (NULL == CU_add_test(suite, "Armoured, single key, no passphrase", test_rsa_encrypt_armour_nopassphrase_singlekey)) 
    273             return 0; 
    274      
    275     if (NULL == CU_add_test(suite, "Armoured, single key, passphrase", test_rsa_encrypt_armour_passphrase_singlekey)) 
    276             return 0; 
    277  
    278     if (NULL == CU_add_test(suite, "Large, no armour, no passphrase", test_rsa_encrypt_large_noarmour_nopassphrase)) 
    279             return 0; 
    280  
    281     if (NULL == CU_add_test(suite, "Large, armour, no passphrase", test_rsa_encrypt_large_armour_nopassphrase)) 
    282             return 0; 
    283  
    284     if (NULL == CU_add_test(suite, "Tests to be implemented", test_todo)) 
    285             return 0; 
    286      
     288 
    287289    return 1; 
    288290    } 
  • openpgpsdk/trunk/tests/test_rsa_verify.c

    r610 r618  
    7575    int i=0; 
    7676    int fd=0; 
    77     char * malformed[]={ 
    78                         // no signature 
    79                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\n-----END PGP SIGNATURE-----\n", 
    80                         // no signature and early EOF 
    81                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\n-----END PGP SIGNATURE-----", 
    82                         // early EOF 
    83                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n", 
    84                         // no signature 
    85                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: -----END PGP SIGNATURE-----GnuPG v1.4.6 (GNU/Linux)\n", 
    86                         // no gap after armour headers in message 
    87                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
    88                         // no gap after armour headers in signature 
    89                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
    90                         // unsupported hash 
    91                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
    92                         // missing BEGIN SIG 
    93                         "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----END PGP SIGNATURE-----", 
    94  
     77    char* malformed[]= 
     78        { 
     79        // no signature 
     80        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\n-----END PGP SIGNATURE-----\n",  
     81        // no signature and early EOF 
     82        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\n-----END PGP SIGNATURE-----",  
     83        // early EOF 
     84        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n", 
     85        // no signature 
     86        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: -----END PGP SIGNATURE-----GnuPG v1.4.6 (GNU/Linux)\n",  
     87        // no gap after armour headers in message 
     88        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
     89        // no gap after armour headers in signature 
     90        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
     91        // unsupported hash 
     92        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
     93        // missing BEGIN SIG 
     94        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----END PGP SIGNATURE-----", 
     95        // missing END SIG 
     96        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n", 
     97        // bad header line 
     98        "-----BEGIN MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
     99        // bad header : no colon 
     100        "-----BEGIN PGP SIGNED MESSAGE-----\nHash SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
     101        // bad header : invalid header 
     102        "-----BEGIN PGP SIGNED MESSAGE-----\nUnknown: Header\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PGP SIGNATURE-----\n", 
     103        // bad armour trailer 
     104                        "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA1\n\nmessage to encrypt\n-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v1.4.6 (GNU/Linux)\n\niJwEAQECAAYFAkiup4kACgkQr5tWFB2nA4mpVwP8DeeMDFrp7ICHYleyW/UmBIQH\ndXuviEA9WK/BUyHVKxLOyciAw18vm1rKJE9Q30GUrFkPvaOV6XZXZMDBXY/CQixT\nHjKRoFapgbzA5hqDeLjjkJ59hjS5jmsOrdyIebOVrF7YaSRji15uAeeIzBQ0lClZ\nupkvjuuc6o0RoS/+otk=\n=itEi\n-----END PPP SIGNATURE-----\n-----END PGP SIGNATURE-----", 
    95105    }; 
    96106    num_malformed=sizeof (malformed)/sizeof(char *); 
     
    362372    errstack=ops_parse_info_get_errors(pinfo); 
    363373 
    364     // we are expecting one and only one error 
     374    CU_ASSERT(errstack!=NULL); 
     375 
    365376    // print out errors if we have actually got a different error 
    366     CU_ASSERT(errstack!=NULL); 
    367  
    368     if (errstack && errstack->errcode!=expected_errcode) 
    369         { 
    370         ops_print_errors(errstack); 
     377    // to the one expected 
     378    if (errstack) 
     379        { 
     380        if  (!ops_has_error(errstack,expected_errcode)) 
     381            { 
     382            printf("\nfilename=%s: errstack->errcode=0x%2x\n", filename, errstack->errcode); 
     383            ops_print_errors(errstack); 
     384            } 
    371385        } 
    372386    CU_ASSERT(rtn==0);