iPhone から他の関係者に公開鍵を渡そうとしていますが、iOS からの出力を使用できません。
let parameters: [String: Any] = [
kSecAttrKeySizeInBits as String: 384,
kSecAttrKeyType as String: kSecAttrKeyTypeEC,
kSecPrivateKeyAttrs as String: [
kSecAttrIsPermanent as String: false
]
]
var error: Unmanaged<CFError>?
let privateKey = SecKeyCreateRandomKey(parameters as CFDictionary, &error)
let publicKey = SecKeyCopyPublicKey(privateKey!)
let pub = SecKeyCopyExternalRepresentation(publicKey!, &error)
let pubData = pub as Data?
print(pubData!.base64EncodedString())
出力例:
BJSCZtBatd2BYEHtyLB0qTZNlphKf3ZTGI6Nke3dSxIDpyP9FWMZbG0zcdIXWENyndskfxV0No/yz369ngL2EHZYw6ggNysOnZ5IQSPOLFFl44m1aAk0o0NdaRXTVAz4jQ==
Python(私のセカンドパーティがある場所)には、次のものがあります。
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
pub_key = serialisation.load_pem_public_key(
data=xcode_data.encode(),
backend=default_backend()
)
私が得るエラーはValueError: Could not deserialize key data.
したがってSecKeyCopyExternalRepresentation
、ドキュメントで説明されているように、の出力は正確には何ですか:
このメソッドは、RSA キーの PCKS #1 形式でデータを返します。楕円曲線公開鍵の場合、形式は ANSI X9.63 標準に従い、04 || のバイト文字列を使用します。X || Y. 楕円曲線秘密鍵の場合、出力は、秘密スカラーのビッグ エンディアン エンコーディング、つまり 04 || と連結された公開鍵としてフォーマットされます。X || え || K. これらの表現はすべて、必要に応じて先行ゼロを含め、一定サイズの整数を使用します。
フォーマットをどのように説明しX6.93
ますか?そして、それをPythonコードで使用できるものに変換するにはどうすればよいですか?
-----BEGIN PUBLIC KEY-----
PS xcode出力などにヘッダーを追加しようとしました。