Skip to content

Bug in Digest.swift #4

@jonnermut

Description

@jonnermut

There is a fairly fatal bug in the final() method in Digest.swift that means only MD5 digest work because the digest length is hardcoded to CC_MD5_DIGEST_LENGTH. Here's the patch I used in my subtree to fix it:

            --- /git/Payment/Clients/iOS/Subtrees/IDZSwiftCommonCrypto/IDZSwiftCommonCrypto/Digest.swift    2015-10-19 10:48:43.000000000 +1100
    +++ /var/folders/kt/5zxmzkk94vqbyjn9bb6_wtt80000gp/T/qWhPjp_Digest.swift    2015-10-20 12:27:03.000000000 +1100
    @@ -115,14 +115,14 @@
         var initializer : Initializer
         var updater : Updater
         var finalizer : Finalizer
    -    var length : Int32
    +    var length : Int

         init(initializer : Initializer, updater : Updater, finalizer : Finalizer, length : Int32)
         {
             self.initializer = initializer
             self.updater = updater
             self.finalizer = finalizer
    -        self.length = length
    +        self.length = Int(length)
             initializer(context)
         }

    @@ -138,8 +138,7 @@

         func final() -> [UInt8]
         {
    -        let digestLength = Int(CC_MD5_DIGEST_LENGTH)
    -        var digest = Array<UInt8>(count:digestLength, repeatedValue: 0)
    +        var digest = Array<UInt8>(count:length, repeatedValue: 0)
             finalizer(&digest, context)
             return digest
         }

image

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions