1/* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5/*
6 * seccomon.h - common data structures for security libraries
7 *
8 * This file should have lowest-common-denominator datastructures
9 * for security libraries. It should not be dependent on any other
10 * headers, and should not require linking with any libraries.
11 */
12
13#ifndef _SECCOMMON_H_
14#define _SECCOMMON_H_
15
16#include "utilrename.h"
17#include "prtypes.h"
18
19#ifdef __cplusplus
20#define SEC_BEGIN_PROTOS extern "C" {
21#define SEC_END_PROTOS }
22#else
23#define SEC_BEGIN_PROTOS
24#define SEC_END_PROTOS
25#endif
26
27#include "secport.h"
28
29typedef enum {
30 siBuffer = 0,
31 siClearDataBuffer = 1,
32 siCipherDataBuffer = 2,
33 siDERCertBuffer = 3,
34 siEncodedCertBuffer = 4,
35 siDERNameBuffer = 5,
36 siEncodedNameBuffer = 6,
37 siAsciiNameString = 7,
38 siAsciiString = 8,
39 siDEROID = 9,
40 siUnsignedInteger = 10,
41 siUTCTime = 11,
42 siGeneralizedTime = 12,
43 siVisibleString = 13,
44 siUTF8String = 14,
45 siBMPString = 15
46} SECItemType;
47
48typedef struct SECItemStr SECItem;
49
50struct SECItemStr {
51 SECItemType type;
52 unsigned char *data;
53 unsigned int len;
54};
55
56typedef struct SECItemArrayStr SECItemArray;
57
58struct SECItemArrayStr {
59 SECItem *items;
60 unsigned int len;
61};
62
63/*
64** A status code. Status's are used by procedures that return status
65** values. Again the motivation is so that a compiler can generate
66** warnings when return values are wrong. Correct testing of status codes:
67**
68** SECStatus rv;
69** rv = some_function (some_argument);
70** if (rv != SECSuccess)
71** do_an_error_thing();
72**
73*/
74typedef enum _SECStatus {
75 SECWouldBlock = -2,
76 SECFailure = -1,
77 SECSuccess = 0
78} SECStatus;
79
80/*
81** A comparison code. Used for procedures that return comparision
82** values. Again the motivation is so that a compiler can generate
83** warnings when return values are wrong.
84*/
85typedef enum _SECComparison {
86 SECLessThan = -1,
87 SECEqual = 0,
88 SECGreaterThan = 1
89} SECComparison;
90
91#endif /* _SECCOMMON_H_ */
92