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