]> git.saurik.com Git - apple/security.git/blame - libsecurity_ssl/lib/sslBER.h
Security-55471.tar.gz
[apple/security.git] / libsecurity_ssl / lib / sslBER.h
CommitLineData
b1ab9ed8
A
1/*
2 * Copyright (c) 1999-2001,2005-2007,2010-2012 Apple Inc. All Rights Reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24/*
25 * sslBER.h - BER routines
26 */
27
28#ifndef _SSL_BER_H_
29#define _SSL_BER_H_
30
31#ifndef _SSL_PRIV_H_
32#include "sslPriv.h"
33#endif
34
35#ifdef __cplusplus
36extern "C" {
37#endif
38
39/*
40 * Given a PKCS-1 encoded RSA public key, extract the
41 * modulus and public exponent.
42 *
43 * RSAPublicKey ::= SEQUENCE {
44 * modulus INTEGER, -- n
45 * publicExponent INTEGER -- e }
46 */
47
48OSStatus sslDecodeRsaBlob(
49 const SSLBuffer *blob, /* PKCS-1 encoded */
50 SSLBuffer *modulus, /* data mallocd and RETURNED */
51 SSLBuffer *exponent); /* data mallocd and RETURNED */
52
53/*
54 * Given a raw modulus and exponent, cook up a
55 * BER-encoded RSA public key blob.
56 */
57
58OSStatus sslEncodeRsaBlob(
59 const SSLBuffer *modulus,
60 const SSLBuffer *exponent,
61 SSLBuffer *blob); /* data mallocd and RETURNED */
62
63/*
64 * Given a DER encoded DHParameter, extract the prime and generator.
65 * modulus and public exponent.
66 */
67OSStatus sslDecodeDhParams(
68 const SSLBuffer *blob, /* PKCS-1 encoded */
69 SSLBuffer *prime, /* data mallocd and RETURNED */
70 SSLBuffer *generator); /* data mallocd and RETURNED */
71
72/*
73 * Given a prime and generator, cook up a BER-encoded DHParameter blob.
74 */
75OSStatus sslEncodeDhParams(
76 const SSLBuffer *prime,
77 const SSLBuffer *generator,
78 SSLBuffer *blob); /* data mallocd and RETURNED */
79
80/*
81 * Given an ECDSA public key in CSSM format, extract the SSL_ECDSA_NamedCurve
82 * from its algorithm parameters.
83 */
84OSStatus sslEcdsaPeerCurve(
85 CSSM_KEY_PTR pubKey,
86 SSL_ECDSA_NamedCurve *namedCurve);
87
88/*
89 * Given an ECDSA public key in X509 format, extract the raw public key
90 * bits in ECPOint format.
91 */
92OSStatus sslEcdsaPubKeyBits(
93 CSSM_KEY_PTR pubKey,
94 SSLBuffer *pubBits); /* data mallocd and RETURNED */
95
96#ifdef __cplusplus
97}
98#endif
99
100#endif /* _SSL_BER_H_ */