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