我无法使用 jpgpj 对 avro 消息进行加密

问题描述

我正在尝试使用 jpgpj 库使用架构加密 avro 消息,它在加密时给了我一个例外:

import SwiftUI

struct ContentView: View {
    
    @State private var array: Array<String> = ["a","a","b","c","c"]
    
    var body: some View {

        List(array) { item in
          Text(item)
        }
        
        Button("remove last item") {
            
            if array.count > 0 { array.remove(at: array.count - 1) }
            
        }
        .foregroundColor(Color.red)
        .font(Font.body.weight(Font.Weight.bold))
        
        
    }
}

extension String: Identifiable {
    
    public var id: UUID {
        get {
            return UUID()
        }
    }
    
}

我使用以下命令生成密钥对:

Exception in thread "main" org.bouncycastle.openpgp.PGPException: no suitable signing key found
    at org.c02e.jpgpj.Encryptor.sign(Encryptor.java:982)
    at org.c02e.jpgpj.Encryptor.prepareCiphertextoutputStream(Encryptor.java:773)
    at org.c02e.jpgpj.Encryptor.encrypt(Encryptor.java:691)
    at org.c02e.jpgpj.Encryptor.encrypt(Encryptor.java:662)
    at avro.EncryptPayload$.main(EncryptPayload.scala:40)
    at avro.EncryptPayload.main(EncryptPayload.scala)

然后,我将 public-key.gpg 文件复制到带有此 code 的项目中的 src/main/resources 并且发生了异常。例外很明显,我可以在来源中看到它。 这不是找不到文件的问题,而是说公钥不能用作签署消息的密钥的问题,这让我很困惑。我做错了什么?

解决方法

当我改变这一行时问题就消失了:

    encryptor.setSigningAlgorithm(HashingAlgorithm.SHA256)

到这一行:

    encryptor.setSigningAlgorithm(HashingAlgorithm.Unsigned)

编辑

我与代码共享 gist