]> git.saurik.com Git - apple/security.git/blame - libsecurity_smime/lib/cryptohi.h
Security-57740.60.18.tar.gz
[apple/security.git] / libsecurity_smime / lib / cryptohi.h
CommitLineData
b1ab9ed8
A
1/*
2 * crypto.h - public data structures and prototypes for the crypto library
3 *
4 * The contents of this file are subject to the Mozilla Public
5 * License Version 1.1 (the "License"); you may not use this file
6 * except in compliance with the License. You may obtain a copy of
7 * the License at http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS
10 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
11 * implied. See the License for the specific language governing
12 * rights and limitations under the License.
13 *
14 * The Original Code is the Netscape security libraries.
15 *
16 * The Initial Developer of the Original Code is Netscape
17 * Communications Corporation. Portions created by Netscape are
18 * Copyright (C) 1994-2000 Netscape Communications Corporation. All
19 * Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * Alternatively, the contents of this file may be used under the
24 * terms of the GNU General Public License Version 2 or later (the
25 * "GPL"), in which case the provisions of the GPL are applicable
26 * instead of those above. If you wish to allow use of your
27 * version of this file only under the terms of the GPL and not to
28 * allow others to use your version of this file under the MPL,
29 * indicate your decision by deleting the provisions above and
30 * replace them with the notice and other provisions required by
31 * the GPL. If you do not delete the provisions above, a recipient
32 * may use your version of this file under either the MPL or the
33 * GPL.
34 */
35
36#ifndef _CRYPTOHI_H_
37#define _CRYPTOHI_H_
38
39#include <security_asn1/seccomon.h>
40#include <Security/SecCmsBase.h>
41
b1ab9ed8
A
42SEC_BEGIN_PROTOS
43
b1ab9ed8
A
44/****************************************/
45/*
46** Signature creation operations
47*/
48
49/*
50** Sign a single block of data using private key encryption and given
51** signature/hash algorithm.
52** "result" the final signature data (memory is allocated)
53** "buf" the input data to sign
54** "len" the amount of data to sign
55** "pk" the private key to encrypt with
56** "algid" the signature/hash algorithm to sign with
57** (must be compatible with the key type).
58*/
d8f41ccd 59extern SECStatus SEC_SignData(SecAsn1Item *result, unsigned char *buf, int len,
b1ab9ed8
A
60 SecPrivateKeyRef pk, SECOidTag digAlgTag, SECOidTag sigAlgTag);
61
62/*
63** Sign a pre-digested block of data using private key encryption, encoding
64** The given signature/hash algorithm.
65** "result" the final signature data (memory is allocated)
66** "digest" the digest to sign
67** "pk" the private key to encrypt with
68** "algtag" The algorithm tag to encode (need for RSA only)
69*/
70extern SECStatus SGN_Digest(SecPrivateKeyRef privKey,
d8f41ccd 71 SECOidTag digAlgTag, SECOidTag sigAlgTag, SecAsn1Item *result, SecAsn1Item *digest);
b1ab9ed8
A
72
73/****************************************/
74/*
75** Signature verification operations
76*/
77
78
79/*
80** Verify the signature on a block of data for which we already have
81** the digest. The signature data is an RSA private key encrypted
82** block of data formatted according to PKCS#1.
83** "dig" the digest
84** "key" the public key to check the signature with
85** "sig" the encrypted signature data
86** "algid" specifies the signing algorithm to use. This must match
87** the key type.
88**/
d8f41ccd
A
89extern SECStatus VFY_VerifyDigest(SecAsn1Item *dig, SecPublicKeyRef key,
90 SecAsn1Item *sig, SECOidTag digAlgTag, SECOidTag sigAlgTag, void *wincx);
b1ab9ed8
A
91
92/*
93** Verify the signature on a block of data. The signature data is an RSA
94** private key encrypted block of data formatted according to PKCS#1.
95** "buf" the input data
96** "len" the length of the input data
97** "key" the public key to check the signature with
98** "sig" the encrypted signature data
99** "algid" specifies the signing algorithm to use. This must match
100** the key type.
101*/
102extern SECStatus VFY_VerifyData(unsigned char *buf, int len,
d8f41ccd 103 SecPublicKeyRef key, SecAsn1Item *sig,
b1ab9ed8
A
104 SECOidTag digAlgTag, SECOidTag sigAlgTag, void *wincx);
105
106
107
108extern SECStatus WRAP_PubWrapSymKey(SecPublicKeyRef publickey,
109 SecSymmetricKeyRef bulkkey,
d8f41ccd 110 SecAsn1Item * encKey);
b1ab9ed8
A
111
112
d8f41ccd 113extern SecSymmetricKeyRef WRAP_PubUnwrapSymKey(SecPrivateKeyRef privkey, const SecAsn1Item *encKey, SECOidTag bulkalgtag);
b1ab9ed8
A
114
115
116SEC_END_PROTOS
117
118#endif /* _CRYPTOHI_H_ */