]> git.saurik.com Git - apple/security.git/blame - OSX/include/security_cryptkit/HmacSha1Legacy.c
Security-57336.1.9.tar.gz
[apple/security.git] / OSX / include / security_cryptkit / HmacSha1Legacy.c
Content-type: text/html ]> git.saurik.com Git - apple/security.git/blame - OSX/include/security_cryptkit/HmacSha1Legacy.c


500 - Internal Server Error

Malformed UTF-8 character (fatal) at /usr/lib/x86_64-linux-gnu/perl5/5.40/HTML/Entities.pm line 485, <$fd> line 132.
CommitLineData
b1ab9ed8 1/*
d8f41ccd 2 * Copyright (c) 2000-2001,2011-2014 Apple Inc. All Rights Reserved.
b1ab9ed8
A
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/*
20 File: HmacSha1Legacy.c
21 Contains: HMAC/SHA1, bug-for-bug compatible with BSAFE 4.0.
d8f41ccd 22 Copyright (c) 2001,2011-2014 Apple Inc. All Rights Reserved.
b1ab9ed8
A
23*/
24
25#include "ckconfig.h"
26
27#if CRYPTKIT_HMAC_LEGACY
28
29#include "HmacSha1Legacy.h"
30#include "ckSHA1.h"
31#include <string.h>
32#include <stdlib.h>
427c49bc 33#include <Security/SecBase.h>
b1ab9ed8
A
34#define kHMACSHA1DigestSize 20
35
36/* XXX These should really be in ckSHA1.h */
37#define kSHA1DigestSize 20
38#define kSHA1BlockSize 64
39
40/*
41 * bug-for-bug compatible with BSAFE 4.0. See
42 * BSafe/bsource/algs/ahchhmac.c.
43 *
44 * This implementation, and the BSAFE implementation it emulates, work fine
45 * when calculating a MAC in a single update (init, update, final). They
46 * generate nonconforming MACs when performing multiple updates because
47 * the entire algorithm - both inner and outer digests - are performed
48 * in the update() step. As a result, if one e.g. calculates a MAC of
49 * a block of text with one update, and then calculates the MAC over the
50