Создание low-s подписи ECDSA в iOS - PullRequest
1 голос
/ 25 февраля 2020

Мне нужно взаимодействовать с Hyperledger Fabri c в приложении iOS, и я столкнулся с проблемой при создании подписи предложения. Fabri c требует ECDSA с низким уровнем, но я не могу найти способ указать это в криптографических функциях Apple. Без указания low-s мои звонки завершаются неудачно примерно в 50% случаев, когда S выше R.

Мой код подписи довольно прост:

  static func sign(data:Data, withPrivateKey:SecKey) throws -> Data {
    var error: Unmanaged<CFError>?
    guard
      let signature = SecKeyCreateSignature(
        withPrivateKey,
        .ecdsaSignatureMessageX962SHA256,
        data as CFData,
        &error
      ) as Data?
    else {
      throw error!.takeRetainedValue()
    }
    return signature
  }
...