1 use core_foundation_sys::base::CFTypeID; 2 use core_foundation_sys::data::CFDataRef; 3 use core_foundation_sys::dictionary::CFDictionaryRef; 4 use core_foundation_sys::error::CFErrorRef; 5 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] 6 use core_foundation_sys::string::CFStringRef; 7 8 use crate::base::SecKeyRef; 9 10 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] 11 pub type SecKeyAlgorithm = CFStringRef; 12 13 extern "C" { SecKeyGetTypeID() -> CFTypeID14 pub fn SecKeyGetTypeID() -> CFTypeID; 15 16 #[cfg(target_os = "macos")] SecKeyCreateFromData( parameters: CFDictionaryRef, keyData: CFDataRef, error: *mut CFErrorRef, ) -> SecKeyRef17 pub fn SecKeyCreateFromData( 18 parameters: CFDictionaryRef, 19 keyData: CFDataRef, 20 error: *mut CFErrorRef, 21 ) -> SecKeyRef; 22 23 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] SecKeyCopyExternalRepresentation(key: SecKeyRef, error: *mut CFErrorRef) -> CFDataRef24 pub fn SecKeyCopyExternalRepresentation(key: SecKeyRef, error: *mut CFErrorRef) -> CFDataRef; 25 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] SecKeyCopyAttributes(key: SecKeyRef) -> CFDictionaryRef26 pub fn SecKeyCopyAttributes(key: SecKeyRef) -> CFDictionaryRef; 27 28 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] SecKeyCreateSignature( key: SecKeyRef, algorithm: SecKeyAlgorithm, dataToSign: CFDataRef, error: *mut CFErrorRef, ) -> CFDataRef29 pub fn SecKeyCreateSignature( 30 key: SecKeyRef, 31 algorithm: SecKeyAlgorithm, 32 dataToSign: CFDataRef, 33 error: *mut CFErrorRef, 34 ) -> CFDataRef; 35 } 36 37 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] 38 macro_rules! names { 39 ($($i:ident => $x:ident),*) => { 40 extern "C" { 41 $(pub static $x: SecKeyAlgorithm;)* 42 } 43 44 pub enum Algorithm { 45 $( $i, )* 46 #[doc(hidden)] 47 _NonExhaustive, 48 } 49 50 impl From<Algorithm> for SecKeyAlgorithm { 51 fn from(m: Algorithm) -> Self { 52 unsafe { match m { 53 $( Algorithm::$i => $x, )* 54 Algorithm::_NonExhaustive => kSecKeyAlgorithmRSASignatureMessagePSSSHA512, 55 } } 56 } 57 } 58 } 59 } 60 61 #[cfg(any(feature = "OSX_10_12", target_os = "ios"))] 62 names! { 63 ECIESEncryptionStandardX963SHA1AESGCM => kSecKeyAlgorithmECIESEncryptionStandardX963SHA1AESGCM, 64 ECIESEncryptionStandardX963SHA224AESGCM => kSecKeyAlgorithmECIESEncryptionStandardX963SHA224AESGCM, 65 ECIESEncryptionStandardX963SHA256AESGCM => kSecKeyAlgorithmECIESEncryptionStandardX963SHA256AESGCM, 66 ECIESEncryptionStandardX963SHA384AESGCM => kSecKeyAlgorithmECIESEncryptionStandardX963SHA384AESGCM, 67 ECIESEncryptionStandardX963SHA512AESGCM => kSecKeyAlgorithmECIESEncryptionStandardX963SHA512AESGCM, 68 69 ECIESEncryptionStandardVariableIVX963SHA224AESGCM => kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA224AESGCM, 70 ECIESEncryptionStandardVariableIVX963SHA256AESGCM => kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA256AESGCM, 71 ECIESEncryptionStandardVariableIVX963SHA384AESGCM => kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA384AESGCM, 72 ECIESEncryptionStandardVariableIVX963SHA512AESGCM => kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA512AESGCM, 73 74 ECIESEncryptionCofactorVariableIVX963SHA224AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA224AESGCM, 75 ECIESEncryptionCofactorVariableIVX963SHA256AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM, 76 ECIESEncryptionCofactorVariableIVX963SHA384AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA384AESGCM, 77 ECIESEncryptionCofactorVariableIVX963SHA512AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA512AESGCM, 78 79 ECIESEncryptionCofactorX963SHA1AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorX963SHA1AESGCM, 80 ECIESEncryptionCofactorX963SHA224AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorX963SHA224AESGCM, 81 ECIESEncryptionCofactorX963SHA256AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorX963SHA256AESGCM, 82 ECIESEncryptionCofactorX963SHA384AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorX963SHA384AESGCM, 83 ECIESEncryptionCofactorX963SHA512AESGCM => kSecKeyAlgorithmECIESEncryptionCofactorX963SHA512AESGCM, 84 85 ECDSASignatureRFC4754 => kSecKeyAlgorithmECDSASignatureRFC4754, 86 87 ECDSASignatureDigestX962 => kSecKeyAlgorithmECDSASignatureDigestX962, 88 ECDSASignatureDigestX962SHA1 => kSecKeyAlgorithmECDSASignatureDigestX962SHA1, 89 ECDSASignatureDigestX962SHA224 => kSecKeyAlgorithmECDSASignatureDigestX962SHA224, 90 ECDSASignatureDigestX962SHA256 => kSecKeyAlgorithmECDSASignatureDigestX962SHA256, 91 ECDSASignatureDigestX962SHA384 => kSecKeyAlgorithmECDSASignatureDigestX962SHA384, 92 ECDSASignatureDigestX962SHA512 => kSecKeyAlgorithmECDSASignatureDigestX962SHA512, 93 94 ECDSASignatureMessageX962SHA1 => kSecKeyAlgorithmECDSASignatureMessageX962SHA1, 95 ECDSASignatureMessageX962SHA224 => kSecKeyAlgorithmECDSASignatureMessageX962SHA224, 96 ECDSASignatureMessageX962SHA256 => kSecKeyAlgorithmECDSASignatureMessageX962SHA256, 97 ECDSASignatureMessageX962SHA384 => kSecKeyAlgorithmECDSASignatureMessageX962SHA384, 98 ECDSASignatureMessageX962SHA512 => kSecKeyAlgorithmECDSASignatureMessageX962SHA512, 99 100 ECDHKeyExchangeCofactor => kSecKeyAlgorithmECDHKeyExchangeCofactor, 101 ECDHKeyExchangeStandard => kSecKeyAlgorithmECDHKeyExchangeStandard, 102 ECDHKeyExchangeCofactorX963SHA1 => kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA1, 103 ECDHKeyExchangeStandardX963SHA1 => kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA1, 104 ECDHKeyExchangeCofactorX963SHA224 => kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA224, 105 ECDHKeyExchangeCofactorX963SHA256 => kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA256, 106 ECDHKeyExchangeCofactorX963SHA384 => kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA384, 107 ECDHKeyExchangeCofactorX963SHA512 => kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA512, 108 ECDHKeyExchangeStandardX963SHA224 => kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA224, 109 ECDHKeyExchangeStandardX963SHA256 => kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA256, 110 ECDHKeyExchangeStandardX963SHA384 => kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA384, 111 ECDHKeyExchangeStandardX963SHA512 => kSecKeyAlgorithmECDHKeyExchangeStandardX963SHA512, 112 113 RSAEncryptionRaw => kSecKeyAlgorithmRSAEncryptionRaw, 114 RSAEncryptionPKCS1 => kSecKeyAlgorithmRSAEncryptionPKCS1, 115 116 RSAEncryptionOAEPSHA1 => kSecKeyAlgorithmRSAEncryptionOAEPSHA1, 117 RSAEncryptionOAEPSHA224 => kSecKeyAlgorithmRSAEncryptionOAEPSHA224, 118 RSAEncryptionOAEPSHA256 => kSecKeyAlgorithmRSAEncryptionOAEPSHA256, 119 RSAEncryptionOAEPSHA384 => kSecKeyAlgorithmRSAEncryptionOAEPSHA384, 120 RSAEncryptionOAEPSHA512 => kSecKeyAlgorithmRSAEncryptionOAEPSHA512, 121 122 RSAEncryptionOAEPSHA1AESGCM => kSecKeyAlgorithmRSAEncryptionOAEPSHA1AESGCM, 123 RSAEncryptionOAEPSHA224AESGCM => kSecKeyAlgorithmRSAEncryptionOAEPSHA224AESGCM, 124 RSAEncryptionOAEPSHA256AESGCM => kSecKeyAlgorithmRSAEncryptionOAEPSHA256AESGCM, 125 RSAEncryptionOAEPSHA384AESGCM => kSecKeyAlgorithmRSAEncryptionOAEPSHA384AESGCM, 126 RSAEncryptionOAEPSHA512AESGCM => kSecKeyAlgorithmRSAEncryptionOAEPSHA512AESGCM, 127 128 RSASignatureRaw => kSecKeyAlgorithmRSASignatureRaw, 129 130 RSASignatureDigestPKCS1v15Raw => kSecKeyAlgorithmRSASignatureDigestPKCS1v15Raw, 131 RSASignatureDigestPKCS1v15SHA1 => kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA1, 132 RSASignatureDigestPKCS1v15SHA224 => kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA224, 133 RSASignatureDigestPKCS1v15SHA256 => kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA256, 134 RSASignatureDigestPKCS1v15SHA384 => kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384, 135 RSASignatureDigestPKCS1v15SHA512 => kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA512, 136 137 RSASignatureMessagePKCS1v15SHA1 => kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA1, 138 RSASignatureMessagePKCS1v15SHA224 => kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA224, 139 RSASignatureMessagePKCS1v15SHA256 => kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA256, 140 RSASignatureMessagePKCS1v15SHA384 => kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA384, 141 RSASignatureMessagePKCS1v15SHA512 => kSecKeyAlgorithmRSASignatureMessagePKCS1v15SHA512, 142 143 RSASignatureDigestPSSSHA1 => kSecKeyAlgorithmRSASignatureDigestPSSSHA1, 144 RSASignatureDigestPSSSHA224 => kSecKeyAlgorithmRSASignatureDigestPSSSHA224, 145 RSASignatureDigestPSSSHA256 => kSecKeyAlgorithmRSASignatureDigestPSSSHA256, 146 RSASignatureDigestPSSSHA384 => kSecKeyAlgorithmRSASignatureDigestPSSSHA384, 147 RSASignatureDigestPSSSHA512 => kSecKeyAlgorithmRSASignatureDigestPSSSHA512, 148 149 RSASignatureMessagePSSSHA1 => kSecKeyAlgorithmRSASignatureMessagePSSSHA1, 150 RSASignatureMessagePSSSHA224 => kSecKeyAlgorithmRSASignatureMessagePSSSHA224, 151 RSASignatureMessagePSSSHA256 => kSecKeyAlgorithmRSASignatureMessagePSSSHA256, 152 RSASignatureMessagePSSSHA384 => kSecKeyAlgorithmRSASignatureMessagePSSSHA384, 153 RSASignatureMessagePSSSHA512 => kSecKeyAlgorithmRSASignatureMessagePSSSHA512 154 } 155