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// 20// macclient - client interface to CSSM sign/verify mac contexts 21// 22#ifndef _H_CDSA_CLIENT_MACCLIENT 23#define _H_CDSA_CLIENT_MACCLIENT 1 24 25#include <security_cdsa_client/cspclient.h> 26#include <security_cdsa_client/keyclient.h> 27 28namespace Security 29{ 30 31namespace CssmClient 32{ 33 34// 35// A signing/verifying mac context 36// 37class MacContext : public Context 38{ 39public: 40 MacContext(const CSP &csp, CSSM_ALGORITHMS alg) 41 : Context(csp, alg) { } 42 43 // preliminary interface 44 Key key() const { assert(mKey); return mKey; } 45 void key(const Key &k) { mKey = k; set(CSSM_ATTRIBUTE_KEY, mKey); } 46 47protected: 48 void activate(); 49 Key mKey; 50}; 51 52 53class GenerateMac : public MacContext 54{ 55public: 56 GenerateMac(const CSP &csp, CSSM_ALGORITHMS alg) : MacContext(csp, alg) { } 57 58 // integrated 59 void sign(const CssmData &data, CssmData &mac) { sign(&data, 1, mac); } 60 void sign(const CssmData *data, uint32 count, CssmData &mac); 61 62 // staged 63 void init(); // Optional 64 void sign(const CssmData &data) { sign(&data, 1); } 65 void sign(const CssmData *data, uint32 count); 66 void operator () (CssmData &mac); 67 CssmData operator () () { CssmData mac; (*this)(mac); return mac; } 68}; 69 70class VerifyMac : public MacContext 71{ 72public: 73 VerifyMac(const CSP &csp, CSSM_ALGORITHMS alg) : MacContext(csp, alg) { } 74 75 // integrated 76 void verify(const CssmData &data, const CssmData &mac) { verify(&data, 1, mac); } 77 void verify(const CssmData *data, uint32 count, const CssmData &mac); 78 79 // staged 80 void init(); // Optional 81 void verify(const CssmData &data) { verify(&data, 1); } 82 void verify(const CssmData *data, uint32 count); 83 void operator () (const CssmData &mac); 84}; 85 86} // end namespace CssmClient 87 88} // end namespace Security 89 90#endif // _H_CDSA_CLIENT_MACCLIENT 91