1use libc::size_t;
4
5use super::{
6 Boolean, CFDataRef, CFDictionaryRef, CFErrorRef, CFIndex, CFStringRef, CFTypeID, SecKeyRef,
7};
8
9pub type SecKeyAlgorithm = CFStringRef;
10pub type SecKeyKeyExchangeParameter = CFStringRef;
11pub type SecKeyOperationType = CFIndex;
12
13pub const kSecKeyOperationTypeSign: SecKeyOperationType = 0;
14pub const kSecKeyOperationTypeVerify: SecKeyOperationType = 1;
15pub const kSecKeyOperationTypeEncrypt: SecKeyOperationType = 2;
16pub const kSecKeyOperationTypeDecrypt: SecKeyOperationType = 3;
17pub const kSecKeyOperationTypeKeyExchange: SecKeyOperationType = 4;
18
19extern "C" {
20 pub static kSecPrivateKeyAttrs: CFStringRef;
21 pub static kSecPublicKeyAttrs: CFStringRef;
22 pub static kSecKeyAlgorithmRSASignatureRaw: SecKeyAlgorithm;
23 pub static kSecKeyAlgorithmRSASignatureDigestPKCS1v15Raw: SecKeyAlgorithm;
24 pub static kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA1: SecKeyAlgorithm;
25 pub static kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA224: SecKeyAlgorithm;
26 pub static kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256: SecKeyAlgorithm;
27 pub static kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384: SecKeyAlgorithm;
28 pub static kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA512: SecKeyAlgorithm;
29 pub static kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA1: SecKeyAlgorithm;
30 pub static kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA224: SecKeyAlgorithm;
31 pub static kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA256: SecKeyAlgorithm;
32 pub static kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA384: SecKeyAlgorithm;
33 pub static kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA512: SecKeyAlgorithm;
34 pub static kSecKeyAlgorithmRSASignatureDigestPSSSHA1: SecKeyAlgorithm;
35 pub static kSecKeyAlgorithmRSASignatureDigestPSSSHA224: SecKeyAlgorithm;
36 pub static kSecKeyAlgorithmRSASignatureDigestPSSSHA256: SecKeyAlgorithm;
37 pub static kSecKeyAlgorithmRSASignatureDigestPSSSHA384: SecKeyAlgorithm;
38 pub static kSecKeyAlgorithmRSASignatureDigestPSSSHA512: SecKeyAlgorithm;
39 pub static kSecKeyAlgorithmRSASignatureMessagePSSSHA1: SecKeyAlgorithm;
40 pub static kSecKeyAlgorithmRSASignatureMessagePSSSHA224: SecKeyAlgorithm;
41 pub static kSecKeyAlgorithmRSASignatureMessagePSSSHA256: SecKeyAlgorithm;
42 pub static kSecKeyAlgorithmRSASignatureMessagePSSSHA384: SecKeyAlgorithm;
43 pub static kSecKeyAlgorithmRSASignatureMessagePSSSHA512: SecKeyAlgorithm;
44 pub static kSecKeyAlgorithmECDSASignatureDigestX962: SecKeyAlgorithm;
45 pub static kSecKeyAlgorithmECDSASignatureDigestX962SHA1: SecKeyAlgorithm;
46 pub static kSecKeyAlgorithmECDSASignatureDigestX962SHA224: SecKeyAlgorithm;
47 pub static kSecKeyAlgorithmECDSASignatureDigestX962SHA256: SecKeyAlgorithm;
48 pub static kSecKeyAlgorithmECDSASignatureDigestX962SHA384: SecKeyAlgorithm;
49 pub static kSecKeyAlgorithmECDSASignatureDigestX962SHA512: SecKeyAlgorithm;
50 pub static kSecKeyAlgorithmECDSASignatureMessageX962SHA1: SecKeyAlgorithm;
51 pub static kSecKeyAlgorithmECDSASignatureMessageX962SHA224: SecKeyAlgorithm;
52 pub static kSecKeyAlgorithmECDSASignatureMessageX962SHA256: SecKeyAlgorithm;
53 pub static kSecKeyAlgorithmECDSASignatureMessageX962SHA384: SecKeyAlgorithm;
54 pub static kSecKeyAlgorithmECDSASignatureMessageX962SHA512: SecKeyAlgorithm;
55 pub static kSecKeyAlgorithmECDSASignatureDigestRFC4754: SecKeyAlgorithm;
56 pub static kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA1: SecKeyAlgorithm;
57 pub static kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA224: SecKeyAlgorithm;
58 pub static kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA256: SecKeyAlgorithm;
59 pub static kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA384: SecKeyAlgorithm;
60 pub static kSecKeyAlgorithmECDSASignatureDigestRFC4754SHA512: SecKeyAlgorithm;
61 pub static kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA1: SecKeyAlgorithm;
62 pub static kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA224: SecKeyAlgorithm;
63 pub static kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA256: SecKeyAlgorithm;
64 pub static kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA384: SecKeyAlgorithm;
65 pub static kSecKeyAlgorithmECDSASignatureMessageRFC4754SHA512: SecKeyAlgorithm;
66 pub static kSecKeyAlgorithmRSAEncryptionRaw: SecKeyAlgorithm;
67 pub static kSecKeyAlgorithmRSAEncryptionPKCS1: SecKeyAlgorithm;
68 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA1: SecKeyAlgorithm;
69 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA224: SecKeyAlgorithm;
70 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA256: SecKeyAlgorithm;
71 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA384: SecKeyAlgorithm;
72 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA512: SecKeyAlgorithm;
73 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA1AESGCM: SecKeyAlgorithm;
74 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA224AESGCM: SecKeyAlgorithm;
75 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM: SecKeyAlgorithm;
76 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA384AESGCM: SecKeyAlgorithm;
77 pub static kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM: SecKeyAlgorithm;
78 pub static kSecKeyAlgorithmECIESEncryptionStandardX963SHA1AESGCM: SecKeyAlgorithm;
79 pub static kSecKeyAlgorithmECIESEncryptionStandardX963SHA224AESGCM: SecKeyAlgorithm;
80 pub static kSecKeyAlgorithmECIESEncryptionStandardX963SHA256AESGCM: SecKeyAlgorithm;
81 pub static kSecKeyAlgorithmECIESEncryptionStandardX963SHA384AESGCM: SecKeyAlgorithm;
82 pub static kSecKeyAlgorithmECIESEncryptionStandardX963SHA512AESGCM: SecKeyAlgorithm;
83 pub static kSecKeyAlgorithmECIESEncryptionCofactorX963SHA1AESGCM: SecKeyAlgorithm;
84 pub static kSecKeyAlgorithmECIESEncryptionCofactorX963SHA224AESGCM: SecKeyAlgorithm;
85 pub static kSecKeyAlgorithmECIESEncryptionCofactorX963SHA256AESGCM: SecKeyAlgorithm;
86 pub static kSecKeyAlgorithmECIESEncryptionCofactorX963SHA384AESGCM: SecKeyAlgorithm;
87 pub static kSecKeyAlgorithmECIESEncryptionCofactorX963SHA512AESGCM: SecKeyAlgorithm;
88 pub static kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA224AESGCM: SecKeyAlgorithm;
89 pub static kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA256AESGCM: SecKeyAlgorithm;
90 pub static kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA384AESGCM: SecKeyAlgorithm;
91 pub static kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA512AESGCM: SecKeyAlgorithm;
92 pub static kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA224AESGCM: SecKeyAlgorithm;
93 pub static kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM: SecKeyAlgorithm;
94 pub static kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA384AESGCM: SecKeyAlgorithm;
95 pub static kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA512AESGCM: SecKeyAlgorithm;
96 pub static kSecKeyAlgorithmECDHKeyExchangeStandard: SecKeyAlgorithm;
97 pub static kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA1: SecKeyAlgorithm;
98 pub static kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA224: SecKeyAlgorithm;
99 pub static kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA256: SecKeyAlgorithm;
100 pub static kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA384: SecKeyAlgorithm;
101 pub static kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA512: SecKeyAlgorithm;
102 pub static kSecKeyAlgorithmECDHKeyExchangeCofactor: SecKeyAlgorithm;
103 pub static kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA1: SecKeyAlgorithm;
104 pub static kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA224: SecKeyAlgorithm;
105 pub static kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA256: SecKeyAlgorithm;
106 pub static kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA384: SecKeyAlgorithm;
107 pub static kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA512: SecKeyAlgorithm;
108 pub static kSecKeyKeyExchangeParameterRequestedSize: SecKeyKeyExchangeParameter;
109 pub static kSecKeyKeyExchangeParameterSharedInfo: SecKeyKeyExchangeParameter;
110 pub fn SecKeyGetTypeID() -> CFTypeID;
111 pub fn SecKeyCreateRandomKey(parameters: CFDictionaryRef, error: *mut CFErrorRef) -> SecKeyRef;
112 pub fn SecKeyCreateWithData(
113 key_data: CFDataRef,
114 attributes: CFDictionaryRef,
115 error: *mut CFErrorRef,
116 ) -> SecKeyRef;
117 pub fn SecKeyGetBlockSize(key: SecKeyRef) -> size_t;
118 pub fn SecKeyCopyExternalRepresentation(key: SecKeyRef, error: *mut CFErrorRef) -> CFDataRef;
119 pub fn SecKeyCopyAttributes(key: SecKeyRef) -> CFDictionaryRef;
120 pub fn SecKeyCopyPublicKey(key: SecKeyRef) -> SecKeyRef;
121 pub fn SecKeyCreateSignature(
122 key: SecKeyRef,
123 algorithm: SecKeyAlgorithm,
124 data_to_sign: CFDataRef,
125 error: *mut CFErrorRef,
126 ) -> CFDataRef;
127 pub fn SecKeyVerifySignature(
128 key: SecKeyRef,
129 algorithm: SecKeyAlgorithm,
130 signed_data: CFDataRef,
131 signature: CFDataRef,
132 error: *mut CFErrorRef,
133 ) -> Boolean;
134 pub fn SecKeyCreateEncryptedData(
135 key: SecKeyRef,
136 algorithm: SecKeyAlgorithm,
137 plaintext: CFDataRef,
138 error: *mut CFErrorRef,
139 ) -> CFDataRef;
140 pub fn SecKeyCreateDecryptedData(
141 key: SecKeyRef,
142 algorithm: SecKeyAlgorithm,
143 ciphertext: CFDataRef,
144 error: *mut CFErrorRef,
145 ) -> CFDataRef;
146 pub fn SecKeyCopyKeyExchangeResult(
147 private_key: SecKeyRef,
148 algorithm: SecKeyAlgorithm,
149 public_key: SecKeyRef,
150 parameters: CFDictionaryRef,
151 error: *mut CFErrorRef,
152 ) -> CFDataRef;
153 pub fn SecKeyIsAlgorithmSupported(
154 key: SecKeyRef,
155 operation: SecKeyOperationType,
156 algorithm: SecKeyAlgorithm,
157 ) -> Boolean;
158}