Changeset 618
- Timestamp:
- 09/08/08 15:47:42
- Files:
-
- openpgpsdk/trunk/include/openpgpsdk/errors.h (modified) (1 diff)
- openpgpsdk/trunk/plan/OpenPGP.omniplan/contents.xml (modified) (40 diffs)
- openpgpsdk/trunk/src/lib/errors.c (modified) (1 diff)
- openpgpsdk/trunk/src/lib/reader_armoured.c (modified) (18 diffs)
- openpgpsdk/trunk/tests/test_rsa_encrypt.c (modified) (2 diffs)
- openpgpsdk/trunk/tests/test_rsa_verify.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
openpgpsdk/trunk/include/openpgpsdk/errors.h
r617 r618 113 113 void ops_print_errors(ops_error_t *errstack); 114 114 void ops_free_errors(ops_error_t *errstack); 115 int ops_has_error(ops_error_t *errstack, ops_errcode_t errcode); 115 116 116 117 #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 31 31 <false/> 32 32 <key>GanttVisibleRect</key> 33 <string>{{ -15, 0}, {614, 740}}</string>33 <string>{{1702, 0}, {614, 740}}</string> 34 34 <key>OutlineVisibleRect</key> 35 35 <string>{{0, 0}, {802, 740}}</string> … … 169 169 <string>Automatic</string> 170 170 <key>TimelineVisibleRect</key> 171 <string>{{-2 86,0}, {959, 740}}</string>171 <string>{{-227, 290}, {959, 740}}</string> 172 172 <key>activeColumnIdentifiers</key> 173 173 <array> … … 213 213 <true/> 214 214 <key>endDate</key> 215 <string>2008 0930 12:36</string>215 <string>20081021 13:00</string> 216 216 <key>flatNumbering</key> 217 217 <false/> … … 738 738 <integer>233</integer> 739 739 </array> 740 <key>isExpanded</key> 741 <false/> 740 742 <key>objectId</key> 741 743 <integer>3</integer> … … 969 971 <integer>166</integer> 970 972 </array> 973 <key>isExpanded</key> 974 <false/> 971 975 <key>objectId</key> 972 976 <integer>12</integer> … … 1037 1041 <integer>152</integer> 1038 1042 </array> 1043 <key>isExpanded</key> 1044 <false/> 1039 1045 <key>objectId</key> 1040 1046 <integer>17</integer> … … 1081 1087 <key>forcedStart</key> 1082 1088 <string>20070917090000</string> 1089 <key>isExpanded</key> 1090 <false/> 1083 1091 <key>objectId</key> 1084 1092 <integer>18</integer> … … 1193 1201 <integer>203</integer> 1194 1202 </array> 1203 <key>isExpanded</key> 1204 <false/> 1195 1205 <key>objectId</key> 1196 1206 <integer>23</integer> … … 2689 2699 <key>objectId</key> 2690 2700 <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>2702 2701 <key>task</key> 2703 2702 <string>CAST5</string> … … 2719 2718 <key>objectId</key> 2720 2719 <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>2732 2720 <key>task</key> 2733 2721 <string>AES128</string> … … 2749 2737 <key>objectId</key> 2750 2738 <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>2762 2739 <key>task</key> 2763 2740 <string>AES256</string> … … 2848 2825 </dict> 2849 2826 </array> 2827 <key>completionPercentage</key> 2828 <real>1</real> 2850 2829 <key>desiredStart</key> 2851 2830 <string>20080811090000</string> 2852 2831 <key>effort</key> 2853 <real> 14400</real>2832 <real>0.0</real> 2854 2833 <key>objectId</key> 2855 2834 <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> 2884 2850 <key>desiredStart</key> 2885 2851 <string>20080812090000</string> 2886 2852 <key>effort</key> 2887 <real> 14400</real>2853 <real>0.0</real> 2888 2854 <key>objectId</key> 2889 2855 <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> 2918 2871 <key>desiredStart</key> 2919 2872 <string>20080813090000</string> 2920 2873 <key>effort</key> 2921 <real> 14400</real>2874 <real>0.0</real> 2922 2875 <key>objectId</key> 2923 2876 <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> 2941 2879 </dict> 2942 2880 <dict> … … 2945 2883 <integer>10</integer> 2946 2884 </array> 2885 <key>isExpanded</key> 2886 <false/> 2947 2887 <key>objectId</key> 2948 2888 <integer>100</integer> … … 3018 2958 </dict> 3019 2959 </array> 2960 <key>completionPercentage</key> 2961 <real>1</real> 3020 2962 <key>desiredStart</key> 3021 2963 <string>20080814090000</string> 3022 2964 <key>effort</key> 3023 <real> 14400</real>2965 <real>0.0</real> 3024 2966 <key>objectId</key> 3025 2967 <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> 3043 2970 </dict> 3044 2971 <dict> … … 3155 3082 <integer>208</integer> 3156 3083 </array> 3084 <key>isExpanded</key> 3085 <false/> 3157 3086 <key>objectId</key> 3158 3087 <integer>111</integer> … … 3362 3291 </dict> 3363 3292 </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>3398 3293 <key>completionPercentage</key> 3399 3294 <real>1</real> 3400 3295 <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> 3401 3317 <string>20080522160000</string> 3402 3318 <key>effort</key> … … 3554 3470 <key>id</key> 3555 3471 <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>3564 3472 <key>kind</key> 3565 3473 <integer>2</integer> … … 3941 3849 <key>effort</key> 3942 3850 <real>0.0</real> 3943 <key>forcedStart</key>3944 <string>20080821180000</string>3945 3851 <key>objectId</key> 3946 3852 <integer>139</integer> … … 4086 3992 <key>desiredStart</key> 4087 3993 <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> 4089 3999 <real>28800</real> 4090 4000 <key>objectId</key> 4091 4001 <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> 4092 4177 <key>prerequisites</key> 4093 4178 <array> 4094 4179 <dict> 4095 4180 <key>id</key> 4096 <integer> 91</integer>4181 <integer>245</integer> 4097 4182 <key>isResource</key> 4098 4183 <string>YES</string> … … 4102 4187 </array> 4103 4188 <key>task</key> 4104 <string> Large files</string>4189 <string>Good behaviour when algorithms not present e.g. IDEA</string> 4105 4190 <key>workSeconds</key> 4106 4191 <real>57600</real> … … 4119 4204 </array> 4120 4205 <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> 4159 4208 <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> 4161 4218 <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>4318 4219 <key>workSeconds</key> 4319 4220 <real>57600</real> … … 4332 4233 </array> 4333 4234 <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> 4336 4355 <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> 4348 4357 <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>4497 4358 <key>objectId</key> 4498 4359 <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>4510 4360 <key>task</key> 4511 4361 <string>Command line app</string> 4512 4362 <key>workDone</key> 4513 <real> 16</real>4363 <real>32</real> 4514 4364 <key>workSeconds</key> 4515 4365 <real>115200</real> … … 4601 4451 <string>20080708090000</string> 4602 4452 <key>doneSeconds</key> 4603 <real> 57599.99609375</real>4453 <real>288000</real> 4604 4454 <key>effort</key> 4605 4455 <real>144000</real> 4606 4456 <key>effortDone</key> 4607 <real> 28799.998046875</real>4457 <real>144000</real> 4608 4458 <key>objectId</key> 4609 4459 <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>4621 4460 <key>task</key> 4622 4461 <string>Error handling</string> 4623 4462 <key>workDone</key> 4624 <real> 15.999999046325684</real>4463 <real>80</real> 4625 4464 <key>workSeconds</key> 4626 4465 <real>288000</real> … … 4722 4561 </array> 4723 4562 <key>desiredStart</key> 4724 <string>2008 0916123600</string>4563 <string>20081007140000</string> 4725 4564 <key>effort</key> 4726 4565 <real>28800</real> … … 4762 4601 </array> 4763 4602 <key>desiredStart</key> 4764 <string>2008 0918123600</string>4603 <string>20081009140000</string> 4765 4604 <key>effort</key> 4766 4605 <real>115200</real> … … 4839 4678 <integer>189</integer> 4840 4679 <integer>190</integer> 4841 <integer>191</integer>4842 4680 </array> 4843 4681 <key>forcedStart</key> … … 5016 4854 <integer>2</integer> 5017 4855 </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>5026 4856 </array> 5027 4857 <key>task</key> … … 5033 4863 <key>workTime</key> 5034 4864 <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>5069 4865 </dict> 5070 4866 <dict> … … 5219 5015 </dict> 5220 5016 </array> 5017 <key>completionPercentage</key> 5018 <real>1</real> 5221 5019 <key>desiredStart</key> 5222 5020 <string>20080820103600</string> 5223 5021 <key>effort</key> 5224 <real> 28800</real>5022 <real>0.0</real> 5225 5023 <key>objectId</key> 5226 5024 <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> 5255 5040 <key>desiredStart</key> 5256 5041 <string>20080822103600</string> 5257 5042 <key>effort</key> 5258 <real> 28800</real>5043 <real>0.0</real> 5259 5044 <key>objectId</key> 5260 5045 <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> 5278 5048 </dict> 5279 5049 <dict> … … 5412 5182 <string>20080813103600</string> 5413 5183 <key>doneSeconds</key> 5414 <real>5 1840</real>5415 <key>effort</key> 5416 <real>28800</real> 5417 <key>effortDone</key> 5418 <real>2 5920</real>5184 <real>57600</real> 5185 <key>effort</key> 5186 <real>28800</real> 5187 <key>effortDone</key> 5188 <real>28800</real> 5419 5189 <key>objectId</key> 5420 5190 <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>5432 5191 <key>task</key> 5433 5192 <string>ZIP-compress</string> 5434 5193 <key>workDone</key> 5435 <real>1 4.399999618530273</real>5194 <real>16</real> 5436 5195 <key>workSeconds</key> 5437 5196 <real>57600</real> … … 5620 5379 </array> 5621 5380 <key>desiredStart</key> 5622 <string>20080 827123600</string>5381 <string>20080917140000</string> 5623 5382 <key>effort</key> 5624 5383 <real>201600</real> … … 5629 5388 <dict> 5630 5389 <key>id</key> 5631 <integer> 159</integer>5390 <integer>239</integer> 5632 5391 <key>isResource</key> 5633 5392 <string>YES</string> … … 5691 5450 <integer>227</integer> 5692 5451 </array> 5693 <key>isExpanded</key>5694 <false/>5695 5452 <key>objectId</key> 5696 5453 <integer>223</integer> … … 5731 5488 <key>desiredStart</key> 5732 5489 <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> 5734 5495 <real>3600</real> 5735 5496 <key>objectId</key> 5736 5497 <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>5748 5498 <key>task</key> 5749 5499 <string>Armoured/No Passphrase</string> 5500 <key>workDone</key> 5501 <real>2</real> 5750 5502 <key>workSeconds</key> 5751 5503 <real>7200</real> … … 5765 5517 <key>desiredStart</key> 5766 5518 <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> 5768 5524 <real>3600</real> 5769 5525 <key>objectId</key> 5770 5526 <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>5782 5527 <key>task</key> 5783 5528 <string>Unarmoured/Passphrase</string> 5529 <key>workDone</key> 5530 <real>2</real> 5784 5531 <key>workSeconds</key> 5785 5532 <real>7200</real> … … 5799 5546 <key>desiredStart</key> 5800 5547 <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> 5802 5553 <real>3600</real> 5803 5554 <key>objectId</key> 5804 5555 <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>5816 5556 <key>task</key> 5817 5557 <string>Armoured/Passphrase</string> 5558 <key>workDone</key> 5559 <real>2</real> 5818 5560 <key>workSeconds</key> 5819 5561 <real>7200</real> … … 5996 5738 </dict> 5997 5739 <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> 5998 5751 <key>effort</key> 5999 5752 <real>57600</real> 6000 5753 <key>objectId</key> 6001 5754 <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> 6002 5766 <key>task</key> 6003 5767 <string>(NEW 080502) Interoperability with PGP latest version</string> 6004 5768 <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> 6011 5786 <real>86400</real> 6012 <key>effort </key>5787 <key>effortDone</key> 6013 5788 <real>86400</real> 6014 <key>effortDone</key>6015 <real>86400</real>6016 5789 <key>objectId</key> 6017 5790 <integer>242</integer> … … 6019 5792 <string>Extra complexity in cmd line app</string> 6020 5793 <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> 6028 5812 <key>effort</key> 6029 5813 <real>3600</real> … … 6033 5817 <string>3DES</string> 6034 5818 <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> 6040 5835 <key>effort</key> 6041 5836 <real>3600</real> 6042 5837 <key>objectId</key> 6043 5838 <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> 6044 5850 <key>task</key> 6045 5851 <string>3DES</string> 6046 5852 <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> 6050 5856 </dict> 6051 5857 </array> … … 6059 5865 </array> 6060 5866 <key>uuid</key> 6061 <string> 8FDD7D7D-8C33-4C7A-BF51-949995C5C267</string>5867 <string>2D61B514-B49E-405E-8FE4-3DBFC3DB2094</string> 6062 5868 <key>version</key> 6063 5869 <integer>2</integer> openpgpsdk/trunk/src/lib/errors.c
r616 r618 166 166 } 167 167 168 int 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 168 179 void ops_free_errors(ops_error_t *errstack) 169 180 { openpgpsdk/trunk/src/lib/reader_armoured.c
r613 r618 125 125 } 126 126 127 static voidset_lastseen_headerline(dearmour_arg_t* arg, char* buf, ops_error_t **errors)127 static int set_lastseen_headerline(dearmour_arg_t* arg, char* buf, ops_error_t **errors) 128 128 { 129 129 char* begin_msg="BEGIN PGP MESSAGE"; … … 145 145 if (!strncmp(buf,begin_msg,strlen(begin_msg))) 146 146 arg->lastseen=BEGIN_PGP_MESSAGE; 147 if (!strncmp(buf,begin_public,strlen(begin_public)))147 else if (!strncmp(buf,begin_public,strlen(begin_public))) 148 148 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))) 150 150 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))) 152 152 arg->lastseen=BEGIN_PGP_MULTI; 153 if (!strncmp(buf,begin_sig,strlen(begin_sig)))153 else if (!strncmp(buf,begin_sig,strlen(begin_sig))) 154 154 arg->lastseen=BEGIN_PGP_SIGNATURE; 155 155 156 if (!strncmp(buf,end_msg,strlen(end_msg)))156 else if (!strncmp(buf,end_msg,strlen(end_msg))) 157 157 arg->lastseen=END_PGP_MESSAGE; 158 if (!strncmp(buf,end_public,strlen(end_public)))158 else if (!strncmp(buf,end_public,strlen(end_public))) 159 159 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))) 161 161 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))) 163 163 arg->lastseen=END_PGP_MULTI; 164 if (!strncmp(buf,end_sig,strlen(end_sig)))164 else if (!strncmp(buf,end_sig,strlen(end_sig))) 165 165 arg->lastseen=END_PGP_SIGNATURE; 166 166 167 if (!strncmp(buf,begin_signed_msg,strlen(begin_signed_msg)))167 else if (!strncmp(buf,begin_signed_msg,strlen(begin_signed_msg))) 168 168 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 } 169 175 170 176 if (debug) … … 174 180 { 175 181 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); 177 183 break; 178 184 … … 209 215 break; 210 216 } 217 218 return 1; 211 219 } 212 220 … … 445 453 } 446 454 447 static voidadd_header(dearmour_arg_t *arg,const char *key,const char455 static int add_header(dearmour_arg_t *arg,const char *key,const char 448 456 *value) 449 457 { 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 } 456 477 } 457 478 … … 518 539 *s='\0'; 519 540 if(s[1] != ' ') 541 { 520 542 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 } 522 552 nbuf=0; 523 553 } … … 535 565 } 536 566 567 end: 537 568 free(buf); 538 569 … … 604 635 int n2; 605 636 unsigned long l; 606 //ops_parser_content_t content;607 637 int c; 608 638 int ret; … … 612 642 ret=read4(arg,errors,rinfo,cbinfo,&c,&n,&l); 613 643 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 } 615 648 616 649 if(n == 3) 617 650 { 618 651 if(c != '=') 652 { 619 653 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64 (2)"); 654 return 0; 655 } 620 656 arg->buffered=2; 621 657 arg->eof64=ops_true; … … 625 661 { 626 662 if(c != '=') 663 { 627 664 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64 (3)"); 665 return 0; 666 } 628 667 arg->buffered=1; 629 668 arg->eof64=ops_true; … … 631 670 c=read_char(arg,errors,rinfo,cbinfo,ops_false); 632 671 if(c != '=') 672 { 633 673 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64"); 674 return 0; 675 } 634 676 } 635 677 else if(n == 0) 636 678 { 637 679 if(!arg->prev_nl || c != '=') 680 { 638 681 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated base64 (4)"); 682 return 0; 683 } 639 684 arg->buffered=0; 640 685 } … … 652 697 c=read_and_eat_whitespace(arg,errors,rinfo,cbinfo,ops_true); 653 698 if(c != '\n') 699 { 654 700 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"No newline at base64 end"); 701 return 0; 702 } 655 703 c=read_char(arg,errors,rinfo,cbinfo,ops_false); 656 704 if(c != '=') 705 { 657 706 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"No checksum at base64 end"); 707 return 0; 708 } 658 709 } 659 710 … … 663 714 ret=read4(arg,errors,rinfo,cbinfo,&c,&n,&arg->read_checksum); 664 715 if(ret < 0 || n != 4) 716 { 665 717 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Error in checksum"); 718 return 0; 719 } 666 720 c=read_char(arg,errors,rinfo,cbinfo,ops_true); 667 721 if(arg->allow_trailing_whitespace) 668 722 c=eat_whitespace(c,arg,errors,rinfo,cbinfo,ops_true); 669 723 if(c != '\n') 724 { 670 725 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Badly terminated checksum"); 726 return 0; 727 } 671 728 c=read_char(arg,errors,rinfo,cbinfo,ops_false); 672 729 if(c != '-') 730 { 673 731 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Bad base64 trailer (2)"); 732 return 0; 733 } 674 734 } 675 735 … … 678 738 for(n=0 ; n < 4 ; ++n) 679 739 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 } 681 744 arg->eof64=ops_true; 682 745 } … … 694 757 695 758 if(arg->eof64 && arg->read_checksum != arg->checksum) 759 { 696 760 OPS_ERROR(errors,OPS_E_R_BAD_FORMAT,"Checksum mismatch"); 761 return 0; 762 } 697 763 698 764 return 1; … … 799 865 return -1; 800 866 801 set_lastseen_headerline(arg,buf,errors); 867 if (!set_lastseen_headerline(arg,buf,errors)) 868 return -1; 802 869 803 870 if(!strcmp(buf,"BEGIN PGP SIGNED MESSAGE")) … … 869 936 buf[n]='\0'; 870 937 871 set_lastseen_headerline(arg,buf,errors); 938 if (!set_lastseen_headerline(arg,buf,errors)) 939 return -1; 872 940 873 941 /* Consume trailing '-' */ … … 894 962 if(!strncmp(buf,"BEGIN ",6)) 895 963 { 896 set_lastseen_headerline(arg,buf,errors); 964 if (!set_lastseen_headerline(arg,buf,errors)) 965 return -1; 897 966 if((ret=parse_headers(arg,errors,rinfo,cbinfo)) <= 0) 898 967 return ret; openpgpsdk/trunk/tests/test_rsa_encrypt.c
r573 r618 248 248 } 249 249 250 /* 251 FUTURE: 250 252 static void test_todo(void) 251 253 { 252 /*253 FUTURE:254 254 CU_FAIL("Test TODO: Use AES128"); 255 255 CU_FAIL("Test TODO: Use AES256"); … … 257 257 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"); 258 258 CU_FAIL("Test TODO: Encrypt to users with different preferences"); 259 } 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 /* 285 if (NULL == CU_add_test(suite, "Tests to be implemented", test_todo)) 286 return 0; 259 287 */ 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 287 289 return 1; 288 290 } openpgpsdk/trunk/tests/test_rsa_verify.c
r610 r618 75 75 int i=0; 76 76 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-----", 95 105 }; 96 106 num_malformed=sizeof (malformed)/sizeof(char *); … … 362 372 errstack=ops_parse_info_get_errors(pinfo); 363 373 364 // we are expecting one and only one error 374 CU_ASSERT(errstack!=NULL); 375 365 376 // 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 } 371 385 } 372 386 CU_ASSERT(rtn==0);
