]> git.saurik.com Git - apple/security.git/blob - SecurityTests/cspxutils/hashTimeLibCrypt/pbkdDigest.h
Security-57031.1.35.tar.gz
[apple/security.git] / SecurityTests / cspxutils / hashTimeLibCrypt / pbkdDigest.h
1 /*
2 * Copyright (c) 2003-2005 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
7 * obtain a copy of the License at http://www.apple.com/publicsource and
8 * read it before 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
12 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
13 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
15 * Please see the License for the specific language governing rights and
16 * limitations under the License.
17 */
18 /*
19 * pbkdDigest.h - SHA1/MD5 digest object
20 */
21
22 #ifndef _PBKD_DIGEST_H_
23 #define _PBKD_DIGEST_H_
24
25 #include <Security/cssmtype.h>
26 #include <openssl/md5.h>
27 #include <openssl/sha.h>
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 #define kSHA1DigestSize SHA_DIGEST_LENGTH
34 #define kSHA1BlockSize SHA_CBLOCK
35
36 #define kMD5DigestSize MD5_DIGEST_LENGTH
37 #define kMD5BlockSize MD5_CBLOCK
38
39 typedef int (*DigestInitFcn)(void *ctx);
40 typedef int (*DigestUpdateFcn)(void *ctx, const void *data, unsigned long len);
41 typedef int (*DigestFinalFcn)(void *md, void *c);
42
43 /* callouts to libcrypt */
44 typedef struct {
45 DigestInitFcn init;
46 DigestUpdateFcn update;
47 DigestFinalFcn final;
48 } DigestOps;
49
50 typedef struct {
51 union {
52 SHA_CTX sha1Context;
53 MD5_CTX md5Context;
54 } dig;
55 DigestOps *ops;
56 CSSM_BOOL isSha1;
57 } DigestCtx;
58
59 /* Ops on a DigestCtx */
60 int DigestCtxInit(
61 DigestCtx *ctx,
62 CSSM_BOOL isSha1);
63 void DigestCtxFree(
64 DigestCtx *ctx);
65 int DigestCtxUpdate(
66 DigestCtx *ctx,
67 const void *textPtr,
68 uint32 textLen);
69 int DigestCtxFinal(
70 DigestCtx *ctx,
71 void *digest);
72
73 #ifdef __cplusplus
74 }
75 #endif
76
77 #endif /* _PBKD_DIGEST_H_ */
78