【问题标题】:Transform ASN. 1 signature to IEEE P1363 signature转换 ASN。 1 个签名到 IEEE P1363 签名
【发布时间】:2021-07-30 03:26:44
【问题描述】:

我确实使用下面的代码生成了一个签名,但是我想要一个 IEEE P1336(长度 80)格式的签名

           guard let signData = SecKeyCreateSignature(
               key,
               SecKeyAlgorithm.ecdsaSignatureMessageX962SHA256,
               signatureString.data(using: .utf8)! as CFData, &error) else {
               let e = error!.takeRetainedValue() as Error

               print("Signing Error \(  e.localizedDescription)")
               return nil
           }
           let signedData = signData as Data
           let signedString = signedData.base64EncodedString(options: [])

【问题讨论】:

    标签: ios swift signature crypto++ xcode11.5


    【解决方案1】:

    我不是 iOS 专家。但是我为 iOS 生成的签名解决了这个问题。您可以自己创建此格式。例如用于 SHA-256 散列签名。 JavaScript 示例

    function parseASN1ToIEEEP1363(signature) {
        const buffer = new ArrayBuffer(signature.length);
        const int8View = new Int8Array(buffer);
        for (let i = 0, strLen = signature.length; i < strLen; i++) {
          int8View[i] = signature.charCodeAt(i);
        }
        //Currently these bytes getting for SHA256. for other hashings need to make it dynamic
        const r = new Int8Array(buffer.slice(4, 36));
        const s = new Int8Array(buffer.slice(39));
        return appendBuffer(r, s);
    }
    
    function appendBuffer(buffer1, buffer2) {
      var tmp = new Uint8Array(buffer1.byteLength + buffer2.byteLength);
      tmp.set(new Uint8Array(buffer1), 0);
      tmp.set(new Uint8Array(buffer2), buffer1.byteLength);
      return tmp;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-20
      • 2020-01-25
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多