| OLD | NEW |
| (Empty) |
| 1 /* This Source Code Form is subject to the terms of the Mozilla Public | |
| 2 * License, v. 2.0. If a copy of the MPL was not distributed with this | |
| 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | |
| 4 /* | |
| 5 * pkix_resourcelimits.c | |
| 6 * | |
| 7 * Resourcelimits Params Object Functions | |
| 8 * | |
| 9 */ | |
| 10 | |
| 11 #include "pkix_resourcelimits.h" | |
| 12 | |
| 13 /* --Private-Functions-------------------------------------------- */ | |
| 14 | |
| 15 /* | |
| 16 * FUNCTION: pkix_ResourceLimits_Destroy | |
| 17 * (see comments for PKIX_PL_DestructorCallback in pkix_pl_system.h) | |
| 18 */ | |
| 19 static PKIX_Error * | |
| 20 pkix_ResourceLimits_Destroy( | |
| 21 PKIX_PL_Object *object, | |
| 22 void *plContext) | |
| 23 { | |
| 24 PKIX_ResourceLimits *rLimits = NULL; | |
| 25 | |
| 26 PKIX_ENTER(RESOURCELIMITS, "pkix_ResourceLimits_Destroy"); | |
| 27 PKIX_NULLCHECK_ONE(object); | |
| 28 | |
| 29 /* Check that this object is a ResourceLimits object */ | |
| 30 PKIX_CHECK(pkix_CheckType(object, PKIX_RESOURCELIMITS_TYPE, plContext), | |
| 31 PKIX_OBJECTNOTRESOURCELIMITS); | |
| 32 | |
| 33 rLimits = (PKIX_ResourceLimits *)object; | |
| 34 | |
| 35 rLimits->maxTime = 0; | |
| 36 rLimits->maxFanout = 0; | |
| 37 rLimits->maxDepth = 0; | |
| 38 rLimits->maxCertsNumber = 0; | |
| 39 rLimits->maxCrlsNumber = 0; | |
| 40 | |
| 41 cleanup: | |
| 42 | |
| 43 PKIX_RETURN(RESOURCELIMITS); | |
| 44 } | |
| 45 | |
| 46 /* | |
| 47 * FUNCTION: pkix_ResourceLimits_Equals | |
| 48 * (see comments for PKIX_PL_EqualsCallback in pkix_pl_system.h) | |
| 49 */ | |
| 50 static PKIX_Error * | |
| 51 pkix_ResourceLimits_Equals( | |
| 52 PKIX_PL_Object *first, | |
| 53 PKIX_PL_Object *second, | |
| 54 PKIX_Boolean *pResult, | |
| 55 void *plContext) | |
| 56 { | |
| 57 PKIX_UInt32 secondType; | |
| 58 PKIX_Boolean cmpResult; | |
| 59 PKIX_ResourceLimits *firstRLimits = NULL; | |
| 60 PKIX_ResourceLimits *secondRLimits = NULL; | |
| 61 | |
| 62 PKIX_ENTER(RESOURCELIMITS, "pkix_ResourceLimits_Equals"); | |
| 63 PKIX_NULLCHECK_THREE(first, second, pResult); | |
| 64 | |
| 65 PKIX_CHECK(pkix_CheckType(first, PKIX_RESOURCELIMITS_TYPE, plContext), | |
| 66 PKIX_FIRSTOBJECTNOTRESOURCELIMITS); | |
| 67 | |
| 68 PKIX_CHECK(PKIX_PL_Object_GetType(second, &secondType, plContext), | |
| 69 PKIX_COULDNOTGETTYPEOFSECONDARGUMENT); | |
| 70 | |
| 71 *pResult = PKIX_FALSE; | |
| 72 | |
| 73 if (secondType != PKIX_RESOURCELIMITS_TYPE) goto cleanup; | |
| 74 | |
| 75 firstRLimits = (PKIX_ResourceLimits *)first; | |
| 76 secondRLimits = (PKIX_ResourceLimits *)second; | |
| 77 | |
| 78 cmpResult = (firstRLimits->maxTime == secondRLimits->maxTime) && | |
| 79 (firstRLimits->maxFanout == secondRLimits->maxFanout) && | |
| 80 (firstRLimits->maxDepth == secondRLimits->maxDepth) && | |
| 81 (firstRLimits->maxCertsNumber == | |
| 82 secondRLimits->maxCertsNumber) && | |
| 83 (firstRLimits->maxCrlsNumber == | |
| 84 secondRLimits->maxCrlsNumber); | |
| 85 | |
| 86 *pResult = cmpResult; | |
| 87 | |
| 88 cleanup: | |
| 89 | |
| 90 PKIX_RETURN(RESOURCELIMITS); | |
| 91 } | |
| 92 | |
| 93 /* | |
| 94 * FUNCTION: pkix_ResourceLimits_Hashcode | |
| 95 * (see comments for PKIX_PL_HashcodeCallback in pkix_pl_system.h) | |
| 96 */ | |
| 97 static PKIX_Error * | |
| 98 pkix_ResourceLimits_Hashcode( | |
| 99 PKIX_PL_Object *object, | |
| 100 PKIX_UInt32 *pHashcode, | |
| 101 void *plContext) | |
| 102 { | |
| 103 PKIX_ResourceLimits *rLimits = NULL; | |
| 104 PKIX_UInt32 hash = 0; | |
| 105 | |
| 106 PKIX_ENTER(RESOURCELIMITS, "pkix_ResourceLimits_Hashcode"); | |
| 107 PKIX_NULLCHECK_TWO(object, pHashcode); | |
| 108 | |
| 109 PKIX_CHECK(pkix_CheckType(object, PKIX_RESOURCELIMITS_TYPE, plContext), | |
| 110 PKIX_OBJECTNOTRESOURCELIMITS); | |
| 111 | |
| 112 rLimits = (PKIX_ResourceLimits*)object; | |
| 113 | |
| 114 hash = 31 * rLimits->maxTime + (rLimits->maxFanout << 1) + | |
| 115 (rLimits->maxDepth << 2) + (rLimits->maxCertsNumber << 3) + | |
| 116 rLimits->maxCrlsNumber; | |
| 117 | |
| 118 *pHashcode = hash; | |
| 119 | |
| 120 cleanup: | |
| 121 | |
| 122 PKIX_RETURN(RESOURCELIMITS); | |
| 123 } | |
| 124 | |
| 125 /* | |
| 126 * FUNCTION: pkix_ResourceLimits_ToString | |
| 127 * (see comments for PKIX_PL_ToStringCallback in pkix_pl_system.h) | |
| 128 */ | |
| 129 static PKIX_Error * | |
| 130 pkix_ResourceLimits_ToString( | |
| 131 PKIX_PL_Object *object, | |
| 132 PKIX_PL_String **pString, | |
| 133 void *plContext) | |
| 134 { | |
| 135 PKIX_ResourceLimits *rLimits = NULL; | |
| 136 char *asciiFormat = NULL; | |
| 137 PKIX_PL_String *formatString = NULL; | |
| 138 PKIX_PL_String *rLimitsString = NULL; | |
| 139 | |
| 140 PKIX_ENTER(RESOURCELIMITS, "pkix_ResourceLimits_ToString"); | |
| 141 PKIX_NULLCHECK_TWO(object, pString); | |
| 142 | |
| 143 PKIX_CHECK(pkix_CheckType(object, PKIX_RESOURCELIMITS_TYPE, plContext), | |
| 144 PKIX_OBJECTNOTRESOURCELIMITS); | |
| 145 | |
| 146 /* maxCertsNumber and maxCrlsNumber are not supported */ | |
| 147 asciiFormat = | |
| 148 "[\n" | |
| 149 "\tMaxTime: \t\t%d\n" | |
| 150 "\tMaxFanout: \t\t%d\n" | |
| 151 "\tMaxDepth: \t\t%d\n" | |
| 152 "]\n"; | |
| 153 | |
| 154 PKIX_CHECK(PKIX_PL_String_Create | |
| 155 (PKIX_ESCASCII, | |
| 156 asciiFormat, | |
| 157 0, | |
| 158 &formatString, | |
| 159 plContext), | |
| 160 PKIX_STRINGCREATEFAILED); | |
| 161 | |
| 162 rLimits = (PKIX_ResourceLimits*)object; | |
| 163 | |
| 164 PKIX_CHECK(PKIX_PL_Sprintf | |
| 165 (&rLimitsString, | |
| 166 plContext, | |
| 167 formatString, | |
| 168 rLimits->maxTime, | |
| 169 rLimits->maxFanout, | |
| 170 rLimits->maxDepth), | |
| 171 PKIX_SPRINTFFAILED); | |
| 172 | |
| 173 *pString = rLimitsString; | |
| 174 | |
| 175 cleanup: | |
| 176 | |
| 177 PKIX_DECREF(formatString); | |
| 178 | |
| 179 PKIX_RETURN(RESOURCELIMITS); | |
| 180 } | |
| 181 | |
| 182 /* | |
| 183 * FUNCTION: pkix_ResourceLimits_RegisterSelf | |
| 184 * DESCRIPTION: | |
| 185 * Registers PKIX_RESOURCELIMITS_TYPE and its related functions with | |
| 186 * systemClasses[] | |
| 187 * THREAD SAFETY: | |
| 188 * Not Thread Safe - for performance and complexity reasons | |
| 189 * | |
| 190 * Since this function is only called by PKIX_PL_Initialize, which should | |
| 191 * only be called once, it is acceptable that this function is not | |
| 192 * thread-safe. | |
| 193 */ | |
| 194 PKIX_Error * | |
| 195 pkix_ResourceLimits_RegisterSelf(void *plContext) | |
| 196 { | |
| 197 | |
| 198 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; | |
| 199 pkix_ClassTable_Entry entry; | |
| 200 | |
| 201 PKIX_ENTER(RESOURCELIMITS, "pkix_ResourceLimits_RegisterSelf"); | |
| 202 | |
| 203 entry.description = "ResourceLimits"; | |
| 204 entry.objCounter = 0; | |
| 205 entry.typeObjectSize = sizeof(PKIX_ResourceLimits); | |
| 206 entry.destructor = pkix_ResourceLimits_Destroy; | |
| 207 entry.equalsFunction = pkix_ResourceLimits_Equals; | |
| 208 entry.hashcodeFunction = pkix_ResourceLimits_Hashcode; | |
| 209 entry.toStringFunction = pkix_ResourceLimits_ToString; | |
| 210 entry.comparator = NULL; | |
| 211 entry.duplicateFunction = NULL; | |
| 212 | |
| 213 systemClasses[PKIX_RESOURCELIMITS_TYPE] = entry; | |
| 214 | |
| 215 PKIX_RETURN(RESOURCELIMITS); | |
| 216 } | |
| 217 | |
| 218 /* --Public-Functions--------------------------------------------- */ | |
| 219 | |
| 220 /* | |
| 221 * FUNCTION: PKIX_ResourceLimits_Create (see comments in pkix_params.h) | |
| 222 */ | |
| 223 PKIX_Error * | |
| 224 PKIX_ResourceLimits_Create( | |
| 225 PKIX_ResourceLimits **pResourceLimits, | |
| 226 void *plContext) | |
| 227 { | |
| 228 PKIX_ResourceLimits *rLimits = NULL; | |
| 229 | |
| 230 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_Create"); | |
| 231 PKIX_NULLCHECK_ONE(pResourceLimits); | |
| 232 | |
| 233 PKIX_CHECK(PKIX_PL_Object_Alloc | |
| 234 (PKIX_RESOURCELIMITS_TYPE, | |
| 235 sizeof (PKIX_ResourceLimits), | |
| 236 (PKIX_PL_Object **)&rLimits, | |
| 237 plContext), | |
| 238 PKIX_COULDNOTCREATERESOURCELIMITOBJECT); | |
| 239 | |
| 240 /* initialize fields */ | |
| 241 rLimits->maxTime = 0; | |
| 242 rLimits->maxFanout = 0; | |
| 243 rLimits->maxDepth = 0; | |
| 244 rLimits->maxCertsNumber = 0; | |
| 245 rLimits->maxCrlsNumber = 0; | |
| 246 | |
| 247 *pResourceLimits = rLimits; | |
| 248 | |
| 249 cleanup: | |
| 250 | |
| 251 PKIX_RETURN(RESOURCELIMITS); | |
| 252 | |
| 253 } | |
| 254 | |
| 255 /* | |
| 256 * FUNCTION: PKIX_ResourceLimits_GetMaxTime | |
| 257 * (see comments in pkix_params.h) | |
| 258 */ | |
| 259 PKIX_Error * | |
| 260 PKIX_ResourceLimits_GetMaxTime( | |
| 261 PKIX_ResourceLimits *rLimits, | |
| 262 PKIX_UInt32 *pMaxTime, | |
| 263 void *plContext) | |
| 264 { | |
| 265 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_GetMaxTime"); | |
| 266 PKIX_NULLCHECK_TWO(rLimits, pMaxTime); | |
| 267 | |
| 268 *pMaxTime = rLimits->maxTime; | |
| 269 | |
| 270 PKIX_RETURN(RESOURCELIMITS); | |
| 271 } | |
| 272 | |
| 273 /* | |
| 274 * FUNCTION: PKIX_ResourceLimits_SetMaxTime | |
| 275 * (see comments in pkix_params.h) | |
| 276 */ | |
| 277 PKIX_Error * | |
| 278 PKIX_ResourceLimits_SetMaxTime( | |
| 279 PKIX_ResourceLimits *rLimits, | |
| 280 PKIX_UInt32 maxTime, | |
| 281 void *plContext) | |
| 282 { | |
| 283 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_SetMaxTime"); | |
| 284 PKIX_NULLCHECK_ONE(rLimits); | |
| 285 | |
| 286 rLimits->maxTime = maxTime; | |
| 287 | |
| 288 PKIX_RETURN(RESOURCELIMITS); | |
| 289 } | |
| 290 | |
| 291 /* | |
| 292 * FUNCTION: PKIX_ResourceLimits_GetMaxFanout | |
| 293 * (see comments in pkix_params.h) | |
| 294 */ | |
| 295 PKIX_Error * | |
| 296 PKIX_ResourceLimits_GetMaxFanout( | |
| 297 PKIX_ResourceLimits *rLimits, | |
| 298 PKIX_UInt32 *pMaxFanout, | |
| 299 void *plContext) | |
| 300 { | |
| 301 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_GetMaxFanout"); | |
| 302 PKIX_NULLCHECK_TWO(rLimits, pMaxFanout); | |
| 303 | |
| 304 *pMaxFanout = rLimits->maxFanout; | |
| 305 | |
| 306 PKIX_RETURN(RESOURCELIMITS); | |
| 307 } | |
| 308 | |
| 309 /* | |
| 310 * FUNCTION: PKIX_ResourceLimits_SetMaxFanout | |
| 311 * (see comments in pkix_params.h) | |
| 312 */ | |
| 313 PKIX_Error * | |
| 314 PKIX_ResourceLimits_SetMaxFanout( | |
| 315 PKIX_ResourceLimits *rLimits, | |
| 316 PKIX_UInt32 maxFanout, | |
| 317 void *plContext) | |
| 318 { | |
| 319 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_SetMaxFanout"); | |
| 320 PKIX_NULLCHECK_ONE(rLimits); | |
| 321 | |
| 322 rLimits->maxFanout = maxFanout; | |
| 323 | |
| 324 PKIX_RETURN(RESOURCELIMITS); | |
| 325 } | |
| 326 | |
| 327 /* | |
| 328 * FUNCTION: PKIX_ResourceLimits_GetMaxDepth | |
| 329 * (see comments in pkix_params.h) | |
| 330 */ | |
| 331 PKIX_Error * | |
| 332 PKIX_ResourceLimits_GetMaxDepth( | |
| 333 PKIX_ResourceLimits *rLimits, | |
| 334 PKIX_UInt32 *pMaxDepth, | |
| 335 void *plContext) | |
| 336 { | |
| 337 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_GetMaxDepth"); | |
| 338 PKIX_NULLCHECK_TWO(rLimits, pMaxDepth); | |
| 339 | |
| 340 *pMaxDepth = rLimits->maxDepth; | |
| 341 | |
| 342 PKIX_RETURN(RESOURCELIMITS); | |
| 343 } | |
| 344 | |
| 345 /* | |
| 346 * FUNCTION: PKIX_ResourceLimits_SetMaxDepth | |
| 347 * (see comments in pkix_params.h) | |
| 348 */ | |
| 349 PKIX_Error * | |
| 350 PKIX_ResourceLimits_SetMaxDepth( | |
| 351 PKIX_ResourceLimits *rLimits, | |
| 352 PKIX_UInt32 maxDepth, | |
| 353 void *plContext) | |
| 354 { | |
| 355 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_SetMaxDepth"); | |
| 356 PKIX_NULLCHECK_ONE(rLimits); | |
| 357 | |
| 358 rLimits->maxDepth = maxDepth; | |
| 359 | |
| 360 PKIX_RETURN(RESOURCELIMITS); | |
| 361 } | |
| 362 | |
| 363 /* | |
| 364 * FUNCTION: PKIX_ResourceLimits_GetMaxNumberOfCerts | |
| 365 * (see comments in pkix_params.h) | |
| 366 */ | |
| 367 PKIX_Error * | |
| 368 PKIX_ResourceLimits_GetMaxNumberOfCerts( | |
| 369 PKIX_ResourceLimits *rLimits, | |
| 370 PKIX_UInt32 *pMaxNumber, | |
| 371 void *plContext) | |
| 372 { | |
| 373 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_GetMaxNumberOfCerts"); | |
| 374 PKIX_NULLCHECK_TWO(rLimits, pMaxNumber); | |
| 375 | |
| 376 *pMaxNumber = rLimits->maxCertsNumber; | |
| 377 | |
| 378 PKIX_RETURN(RESOURCELIMITS); | |
| 379 } | |
| 380 | |
| 381 /* | |
| 382 * FUNCTION: PKIX_ResourceLimits_SetMaxNumberOfCerts | |
| 383 * (see comments in pkix_params.h) | |
| 384 */ | |
| 385 PKIX_Error * | |
| 386 PKIX_ResourceLimits_SetMaxNumberOfCerts( | |
| 387 PKIX_ResourceLimits *rLimits, | |
| 388 PKIX_UInt32 maxNumber, | |
| 389 void *plContext) | |
| 390 { | |
| 391 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_SetMaxNumberOfCerts"); | |
| 392 PKIX_NULLCHECK_ONE(rLimits); | |
| 393 | |
| 394 rLimits->maxCertsNumber = maxNumber; | |
| 395 | |
| 396 PKIX_RETURN(RESOURCELIMITS); | |
| 397 } | |
| 398 | |
| 399 /* | |
| 400 * FUNCTION: PKIX_ResourceLimits_GetMaxNumberOfCRLs | |
| 401 * (see comments in pkix_params.h) | |
| 402 */ | |
| 403 PKIX_Error * | |
| 404 PKIX_ResourceLimits_GetMaxNumberOfCRLs( | |
| 405 PKIX_ResourceLimits *rLimits, | |
| 406 PKIX_UInt32 *pMaxNumber, | |
| 407 void *plContext) | |
| 408 { | |
| 409 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_GetMaxNumberOfCRLs"); | |
| 410 PKIX_NULLCHECK_TWO(rLimits, pMaxNumber); | |
| 411 | |
| 412 *pMaxNumber = rLimits->maxCrlsNumber; | |
| 413 | |
| 414 PKIX_RETURN(RESOURCELIMITS); | |
| 415 } | |
| 416 | |
| 417 /* | |
| 418 * FUNCTION: PKIX_ResourceLimits_SetMaxNumberOfCRLs | |
| 419 * (see comments in pkix_params.h) | |
| 420 */ | |
| 421 PKIX_Error * | |
| 422 PKIX_ResourceLimits_SetMaxNumberOfCRLs( | |
| 423 PKIX_ResourceLimits *rLimits, | |
| 424 PKIX_UInt32 maxNumber, | |
| 425 void *plContext) | |
| 426 { | |
| 427 PKIX_ENTER(RESOURCELIMITS, "PKIX_ResourceLimits_SetMaxNumberOfCRLs"); | |
| 428 PKIX_NULLCHECK_ONE(rLimits); | |
| 429 | |
| 430 rLimits->maxCrlsNumber = maxNumber; | |
| 431 | |
| 432 PKIX_RETURN(RESOURCELIMITS); | |
| 433 } | |
| OLD | NEW |