1/*
2 * Copyright (c) 2000-2001,2011,2014 Apple 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 * DH_csp.cpp - Diffie-Hellman Algorithm factory
21 */
22
23#include "DH_csp.h"
24#include "DH_keys.h"
25#include <Security/cssmapple.h>
26
27Allocator *DH_Factory::normAllocator;
28Allocator *DH_Factory::privAllocator;
29
30DH_Factory::DH_Factory(Allocator *normAlloc, Allocator *privAlloc)
31{
32	setNormAllocator(normAlloc);
33	setPrivAllocator(privAlloc);
34
35	/* NOTE WELL we assume that the RSA_DSA factory has already been instantitated,
36	 * doing the basic init of openssl */
37
38	ERR_load_DH_strings();
39}
40
41DH_Factory::~DH_Factory()
42{
43}
44
45bool DH_Factory::setup(
46	AppleCSPSession &session,
47	CSPFullPluginSession::CSPContext * &cspCtx,
48	const Context &context)
49{
50	switch(context.type()) {
51		case CSSM_ALGCLASS_KEYGEN:
52			switch(context.algorithm()) {
53				case CSSM_ALGID_DH:
54					if(cspCtx == NULL) {
55						cspCtx = new DHKeyPairGenContext(session, context);
56					}
57					return true;
58				default:
59					break;
60			}
61			break;
62
63		default:
64			break;
65	}
66	/* not implemented here */
67	return false;
68}
69
70
71
72