Skip to main content

security/ffi/
key.rs

1//! Additional raw `SecKey.h` declarations.
2
3use 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}