+++ /dev/null
-/*
- * Copyright (c) 2003 Apple Computer, Inc. All Rights Reserved.
- *
- * The contents of this file constitute Original Code as defined in and are
- * subject to the Apple Public Source License Version 1.2 (the 'License').
- * You may not use this file except in compliance with the License. Please
- * obtain a copy of the License at http://www.apple.com/publicsource and
- * read it before using this file.
- *
- * This Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
- * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
- * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
- */
-/*
- * pbkdDigest.cpp - SHA1/MD5 digest object for HMAC and PBE routines
- */
-
-#include "pbkdDigest.h"
-#include <Security/cssmerr.h>
-#include <string.h>
-
-/* Ops on a DigestCtx */
-/* Note caller has to memset(0) the DigestCtx before using */
-CSSM_RETURN DigestCtxInit(
- DigestCtx *ctx,
- CSSM_BOOL isSha1)
-{
- if(isSha1) {
- if(ctx->dig.sha1Context == NULL) {
- ctx->dig.sha1Context = sha1Alloc();
- if(ctx->dig.sha1Context == NULL) {
- return CSSMERR_CSP_MEMORY_ERROR;
- }
- }
- else {
- sha1Reinit(ctx->dig.sha1Context);
- }
- }
- else {
- MD5Init(&ctx->dig.md5Context);
- }
- ctx->isSha1 = isSha1;
- return CSSM_OK;
-}
-
-void DigestCtxFree(
- DigestCtx *ctx)
-{
- if(ctx->isSha1) {
- sha1Free(ctx->dig.sha1Context);
- }
- memset(ctx, 0, sizeof(DigestCtx));
-}
-
-void DigestCtxUpdate(
- DigestCtx *ctx,
- const void *textPtr,
- UInt32 textLen)
-{
- if(ctx->isSha1) {
- sha1AddData(ctx->dig.sha1Context, (unsigned char *)textPtr, textLen);
- }
- else {
- MD5Update(&ctx->dig.md5Context, (unsigned char *)textPtr, textLen);
- }
-}
-
-void DigestCtxFinal(
- DigestCtx *ctx,
- void *digest)
-{
- if(ctx->isSha1) {
- sha1GetDigest(ctx->dig.sha1Context, (unsigned char *)digest);
- }
- else {
- MD5Final(&ctx->dig.md5Context, (unsigned char *)digest);
- }
-}