iOS - Создание общего секрета из GMEllipticCurveCrypto с использованием ключа publi c JWK E C и закрытого ключа E C - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь создать общий секрет, используя частный ключ E C и publi c JWK E C, используя библиотеку GMEllipticCurveCrypto для iOS. В настоящее время библиотека поддерживает создание общего секрета с использованием следующих методов, и я пробовал оба и просто вылетает с той же ошибкой, которая является недопустимым ключом. Может ли кто-нибудь помочь мне, как создать общий ключ с использованием закрытого ключа E C и publi c JWK E C с использованием или без использования GMEllipticCurveCrypto?. Я видел несколько блогов, в которых никто не опубликовал действительный код, но ниже я пытаюсь сделать.

Код:

let ecPublicKeyJson =
            """
                    {
                        "kty":"EC",
                        "crv":"P-256",
                        "x":"2_v-MuNZccqwM7PXlakW9oHLP5XyrjMG1W9oHLP5Xy",
                        "y":"rm1ktLmFIsP2R0YyJGXtsCbaTUesUXtsCbaTUesUdf"
                    }
                    """
 let ecPublicKeyJsonData = ecPublicKeyJson.data(using: .utf8)
 let ecPublicKeyJsonBase64 = ecPublicKeyJsonData?.base64EncodedString()
 let keyPair = GMEllipticCurveCrypto.generateKeyPair(for: GMEllipticCurveSecp256r1)

 let sharedZ = keyPair.getSharedSecret(publicKeyBase64: ecPublicKeyJsonBase64!)

Ошибка: завершение работы приложения из-за неперехваченного исключения «Недействительный ключ»

...