]> git.saurik.com Git - apple/security.git/blob - Security/libsecurity_apple_csp/lib/MD2Object.cpp
Security-57031.40.6.tar.gz
[apple/security.git] / Security / libsecurity_apple_csp / lib / MD2Object.cpp
1 /*
2 * Copyright (c) 2000-2001,2011-2012,2014 Apple 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
25 void MD2Object::digestInit()
26 {
27 setIsDone(false);
28 CC_MD2_Init(&mCtx);
29 }
30
31 void 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
41 void 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 */
52 DigestObject *MD2Object::digestClone() const
53 {
54 return new MD2Object(*this);
55 }
56
57 CSSM_SIZE MD2Object::digestSizeInBytes() const
58 {
59 return CC_MD2_DIGEST_LENGTH;
60 }
61