1/* 2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved. 3 * 4 * The contents of this file constitute Original Code as defined in and are 5 * subject to the Apple Public Source License Version 1.2 (the 'License'). 6 * You may not use this file except in compliance with the License. Please obtain 7 * a copy of the License at http://www.apple.com/publicsource and read it before 8 * using this file. 9 * 10 * This Original Code and all software distributed under the License are 11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS 12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT 13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the 15 * specific language governing rights and limitations under the License. 16 */ 17 18/* 19 * MD2Object.cpp 20 */ 21#include "MD2Object.h" 22#include <stdexcept> 23#include <string.h> 24 25void MD2Object::digestInit() 26{ 27 setIsDone(false); 28 CC_MD2_Init(&mCtx); 29} 30 31void MD2Object::digestUpdate( 32 const void *data, 33 size_t len) 34{ 35 if(isDone()) { 36 throw std::runtime_error("MD2 digestUpdate after final"); 37 } 38 CC_MD2_Update(&mCtx, (unsigned char *)data, (CC_LONG)len); 39} 40 41void MD2Object::digestFinal( 42 void *digest) 43{ 44 if(isDone()) { 45 throw std::runtime_error("MD2 digestFinal after final"); 46 } 47 CC_MD2_Final((unsigned char *)digest, &mCtx); 48 setIsDone(true); 49} 50 51/* use default memberwise init */ 52DigestObject *MD2Object::digestClone() const 53{ 54 return new MD2Object(*this); 55} 56 57CSSM_SIZE MD2Object::digestSizeInBytes() const 58{ 59 return CC_MD2_DIGEST_LENGTH; 60} 61 62