X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5dd5f9ec28f304ca377c42fd7f711d6cf12b90e1..5c19dc3ae3bd8e40a9c028b0deddd50ff337692c:/Security/libsecurity_cdsa_utilities/lib/cssmkey.h diff --git a/Security/libsecurity_cdsa_utilities/lib/cssmkey.h b/Security/libsecurity_cdsa_utilities/lib/cssmkey.h deleted file mode 100644 index 74a7f918..00000000 --- a/Security/libsecurity_cdsa_utilities/lib/cssmkey.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 2000-2004,2006,2011,2014 Apple Inc. All Rights Reserved. - * - * @APPLE_LICENSE_HEADER_START@ - * - * This file contains Original Code and/or Modifications of Original Code - * as defined in and that are subject to the Apple Public Source License - * Version 2.0 (the 'License'). You may not use this file except in - * compliance with the License. Please obtain a copy of the License at - * http://www.opensource.apple.com/apsl/ and read it before using this - * file. - * - * The 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. - * - * @APPLE_LICENSE_HEADER_END@ - */ - - -// -// PODWrapper for CssmKey and related types -// -#ifndef _H_CSSMKEY -#define _H_CSSMKEY - -#include -#include -#include -#include - - -namespace Security { - - -// -// User-friendlier CSSM_KEY objects -// -class CssmKey : public PodWrapper { -public: - CssmKey() { clearPod(); KeyHeader.HeaderVersion = CSSM_KEYHEADER_VERSION; } - // all of the following constructors take over ownership of the key data - CssmKey(const CSSM_KEY &key); - CssmKey(const CSSM_DATA &keyData); - CssmKey(uint32 length, void *data); - -public: - class Header : public PodWrapper { - public: - // access to components of the key header - CSSM_KEYBLOB_TYPE blobType() const { return BlobType; } - void blobType(CSSM_KEYBLOB_TYPE blobType) { BlobType = blobType; } - - CSSM_KEYBLOB_FORMAT blobFormat() const { return Format; } - void blobFormat(CSSM_KEYBLOB_FORMAT blobFormat) { Format = blobFormat; } - - CSSM_KEYCLASS keyClass() const { return KeyClass; } - void keyClass(CSSM_KEYCLASS keyClass) { KeyClass = keyClass; } - - CSSM_KEY_TYPE algorithm() const { return AlgorithmId; } - void algorithm(CSSM_KEY_TYPE algorithm) { AlgorithmId = algorithm; } - - CSSM_KEY_TYPE wrapAlgorithm() const { return WrapAlgorithmId; } - void wrapAlgorithm(CSSM_KEY_TYPE wrapAlgorithm) { WrapAlgorithmId = wrapAlgorithm; } - - CSSM_ENCRYPT_MODE wrapMode() const { return WrapMode; } - void wrapMode(CSSM_ENCRYPT_MODE mode) { WrapMode = mode; } - - bool isWrapped() const { return WrapAlgorithmId != CSSM_ALGID_NONE; } - - const Guid &cspGuid() const { return Guid::overlay(CspId); } - void cspGuid(const Guid &guid) { Guid::overlay(CspId) = guid; } - - uint32 attributes() const { return KeyAttr; } - bool attribute(uint32 attr) const { return KeyAttr & attr; } - void setAttribute(uint32 attr) { KeyAttr |= attr; } - void clearAttribute(uint32 attr) { KeyAttr &= ~attr; } - - uint32 usage() const { return KeyUsage; } - bool useFor(uint32 u) const { return KeyUsage & u; } - - void usage(uint32 u) { KeyUsage |= u; } - void clearUsage(uint32 u) { KeyUsage &= ~u; } - - }; - - // access to the key header - Header &header() { return Header::overlay(KeyHeader); } - const Header &header() const { return Header::overlay(KeyHeader); } - - CSSM_KEYBLOB_TYPE blobType() const { return header().blobType(); } - void blobType(CSSM_KEYBLOB_TYPE blobType) { header().blobType(blobType); } - - CSSM_KEYBLOB_FORMAT blobFormat() const { return header().blobFormat(); } - void blobFormat(CSSM_KEYBLOB_FORMAT blobFormat) { header().blobFormat(blobFormat); } - - CSSM_KEYCLASS keyClass() const { return header().keyClass(); } - void keyClass(CSSM_KEYCLASS keyClass) { header().keyClass(keyClass); } - - CSSM_KEY_TYPE algorithm() const { return header().algorithm(); } - void algorithm(CSSM_KEY_TYPE algorithm) { header().algorithm(algorithm); } - - CSSM_KEY_TYPE wrapAlgorithm() const { return header().wrapAlgorithm(); } - void wrapAlgorithm(CSSM_KEY_TYPE wrapAlgorithm) { header().wrapAlgorithm(wrapAlgorithm); } - - CSSM_ENCRYPT_MODE wrapMode() const { return header().wrapMode(); } - void wrapMode(CSSM_ENCRYPT_MODE mode) { header().wrapMode(mode); } - - bool isWrapped() const { return header().isWrapped(); } - const Guid &cspGuid() const { return header().cspGuid(); } - - uint32 attributes() const { return header().attributes(); } - bool attribute(uint32 a) const { return header().attribute(a); } - void setAttribute(uint32 attr) { header().setAttribute(attr); } - void clearAttribute(uint32 attr) { header().clearAttribute(attr); } - - uint32 usage() const { return header().usage(); } - bool useFor(uint32 u) const { return header().useFor(u); } - - void usage(uint32 u) { header().usage(u); } - void clearUsage(uint32 u) { header().clearUsage(u); } - -public: - // access to the key data - size_t length() const { return KeyData.Length; } - void *data() const { return KeyData.Data; } - operator void * () const { return data(); } - CssmData &keyData() { return CssmData::overlay(KeyData); } - const CssmData &keyData() const { return CssmData::overlay(KeyData); } - operator CssmData & () { return keyData(); } - operator const CssmData & () const { return keyData(); } - operator bool () const { return KeyData.Data != NULL; } - void operator = (const CssmData &data) { KeyData = data; } -}; - - -// -// Wrapped keys are currently identically structured to normal keys. -// But perhaps in the future... -// -typedef CssmKey CssmWrappedKey; - - -} // end namespace Security - - -#endif //_H_CSSMUTILITIES