@@ -11,7 +11,7 @@ import Foundation
1111
1212extension RSA : Signature {
1313 public func sign( _ bytes: ArraySlice < UInt8 > ) throws -> Array < UInt8 > {
14- try self . sign ( Array ( bytes) , variant: . message_pkcs1v15_SHA512_256 )
14+ try self . sign ( Array ( bytes) , variant: . message_pkcs1v15_SHA256 )
1515 }
1616
1717 public func sign( _ bytes: Array < UInt8 > , variant: SignatureVariant ) throws -> Array < UInt8 > {
@@ -30,13 +30,13 @@ extension RSA: Signature {
3030 }
3131
3232 public func verify( signature: ArraySlice < UInt8 > , for expectedData: ArraySlice < UInt8 > ) throws -> Bool {
33- try self . verify ( signature: Array ( signature) , for: Array ( expectedData) , variant: . message_pkcs1v15_SHA512_256 )
33+ try self . verify ( signature: Array ( signature) , for: Array ( expectedData) , variant: . message_pkcs1v15_SHA256 )
3434 }
3535
3636 /// https://datatracker.ietf.org/doc/html/rfc8017#section-8.2.2
37- public func verify( signature: Array < UInt8 > , for bytes: Array < UInt8 > , variant: SignatureVariant = . message_pkcs1v15_SHA256 ) throws -> Bool {
37+ public func verify( signature: Array < UInt8 > , for bytes: Array < UInt8 > , variant: SignatureVariant ) throws -> Bool {
3838 /// Step 1: Ensure the signature is the same length as the key's modulus
39- guard signature. count == ( self . keySize / 8 ) else { throw Error . invalidSignatureLength }
39+ guard signature. count == ( self . keySize / 8 ) || ( signature . count - 1 ) == ( self . keySize / 8 ) else { throw Error . invalidSignatureLength }
4040
4141 let expectedData = try Array < UInt8 > ( RSA . hashedAndEncoded ( bytes, variant: variant, keySizeInBytes: self . keySize / 8 ) . dropFirst ( ) )
4242
0 commit comments