@@ -15,21 +15,21 @@ final public class HMAC: Authenticator {
public enum Variant {
case sha1, sha256, sha384, sha512, md5
- var size:Int {
+ var digestSize:Int {
switch (self) {
case .sha1:
- return SHA1.size
+ return SHA1.digestSize
case .sha256:
- return SHA2.Variant.sha256.size
+ return SHA2.Variant.sha256.digestSize
case .sha384:
- return SHA2.Variant.sha384.size
+ return SHA2.Variant.sha384.digestSize
case .sha512:
- return SHA2.Variant.sha512.size
+ return SHA2.Variant.sha512.digestSize
case .md5:
- return MD5.size
+ return MD5.digestSize
}
-
+
func calculateHash(_ bytes:Array<UInt8>) -> Array<UInt8>? {
@@ -47,7 +47,9 @@ final public class HMAC: Authenticator {
func blockSize() -> Int {
switch self {
- case .md5, .sha1, .sha256:
+ case .md5:
+ return MD5.blockSize
+ case .sha1, .sha256:
return 64
case .sha384, .sha512:
return 128
@@ -7,12 +7,13 @@
//
final class MD5: DigestType {
- static let size:Int = 16 // 128 / 8
let message: Array<UInt8>
init (_ message: Array<UInt8>) {
self.message = message
+ static let blockSize:Int = 64
+ static let digestSize:Int = 16 // 128 / 8
/** specifies the per-round shift amounts */
private let s: Array<UInt32> = [7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
@@ -26,9 +26,9 @@ public extension PKCS5 {
var size:Int {
@@ -44,9 +44,9 @@ public extension PKCS5 {
throw Error.invalidInput
- self.dkLen = keyLength ?? variant.size
+ self.dkLen = keyLength ?? variant.digestSize
let keyLengthFinal = Double(self.dkLen)
- let hLen = Double(prf.variant.size)
+ let hLen = Double(prf.variant.digestSize)
if keyLengthFinal > (pow(2,32) - 1) * hLen {
throw Error.derivedKeyTooLong
@@ -7,8 +7,8 @@
final class SHA1: DigestType {
- static let size:Int = 20 // 160 / 8
- let message: Array<UInt8>
+ static let digestSize:Int = 20 // 160 / 8
+ private let message: Array<UInt8>
init(_ message: Array<UInt8>) {
@@ -53,7 +53,7 @@ final class SHA2: DigestType {
- var size:Int { return self.rawValue }
+ var digestSize:Int { return self.rawValue }
fileprivate var h:Array<UInt64> {