1 // Copyright 2022-present 650 Industries. All rights reserved. 2 3 import CommonCrypto 4 import ABI47_0_0ExpoModulesCore 5 6 typealias DigestFunction = ( 7 _ data: UnsafeRawPointer?, 8 _ len: UInt32, 9 _ md: UnsafeMutablePointer<UInt8>? 10 ) -> UnsafeMutablePointer<UInt8>? 11 12 internal enum DigestAlgorithm: String, EnumArgument { 13 case md2 = "MD2" 14 case md4 = "MD4" 15 case md5 = "MD5" 16 case sha1 = "SHA-1" 17 case sha224 = "SHA-224" 18 case sha256 = "SHA-256" 19 case sha384 = "SHA-384" 20 case sha512 = "SHA-512" 21 22 var digestLength: Int32 { 23 switch self { 24 case .md2: 25 return CC_MD2_DIGEST_LENGTH 26 case .md4: 27 return CC_MD4_DIGEST_LENGTH 28 case .md5: 29 return CC_MD5_DIGEST_LENGTH 30 case .sha1: 31 return CC_SHA1_DIGEST_LENGTH 32 case .sha224: 33 return CC_SHA224_DIGEST_LENGTH 34 case .sha256: 35 return CC_SHA256_DIGEST_LENGTH 36 case .sha384: 37 return CC_SHA384_DIGEST_LENGTH 38 case .sha512: 39 return CC_SHA512_DIGEST_LENGTH 40 } 41 } 42 43 var digest: DigestFunction { 44 switch self { 45 case .md2: 46 return CC_MD2 47 case .md4: 48 return CC_MD4 49 case .md5: 50 return CC_MD5 51 case .sha1: 52 return CC_SHA1 53 case .sha224: 54 return CC_SHA224 55 case .sha256: 56 return CC_SHA256 57 case .sha384: 58 return CC_SHA384 59 case .sha512: 60 return CC_SHA512 61 } 62 } 63 } 64