如何在 iOS 9 及更高版本上为 ECDH 算法使用公共 JWK

Bla*_*der 5 encryption objective-c public-key-encryption ios jwk

我在使用 CommonCrypto 的 Objective C 中使用 JWK 格式的公共 EC 密钥时遇到问题。

我有一个 Java 示例,说明我在 Objective C 中似乎无法执行的操作。这是从 Nimbus Jose JWT 库中提取的,网址https://static.javadoc.io/com.nimbusds/nimbus-jose-jwt/2.24/ src-html/com/nimbusds/jose/jwk/ECKey.Curve.html

public ECPublicKey toECPublicKey() throws NoSuchAlgorithmException, InvalidKeySpecException {

    ECParameterSpec spec = crv.toECParameterSpec();

    if (spec == null) {
        throw new NoSuchAlgorithmException("Couldn't get EC parameter spec for curve " + crv);
    }

    ECPoint w = new ECPoint(x.decodeToBigInteger(), y.decodeToBigInteger());
    ECPublicKeySpec publicKeySpec = new ECPublicKeySpec(w, spec);
    KeyFactory keyFactory = getECKeyFactory();
    return (ECPublicKey)keyFactory.generatePublic(publicKeySpec);
}
Run Code Online (Sandbox Code Playgroud)

我无法在 Objective C 中找到如何实现这一点,因为 CommonCrypto 似乎缺乏 JWK 支持。有没有人知道如何从曲线的 x 和 y 值将对方的 JWK 密钥转换为可读格式(.pem、SecKeyRef 或 NSData)?