SecKeyGeneratePair를 사용하여 키퍼를 생성했습니다.서버에서 SecKeyGeneratePair를 사용하여 생성 된 공개 키 <SecKey>을 내보내려면 어떻게해야합니까?
publicKey: <SecKeyRef algorithm id: 1, key type: RSAPublicKey, version: 3, block size: 2048 bits, exponent: {hex: 10001, decimal: 65537}, modulus: B2A7BD90C909F8084AD5B34040ABDAF7D1A6AFBADB35F3B6AB5CDDAB473449B0F175DEA32A7476F339D98F4AB3716AA2C1476D4009A80574B984DDFA1EF1A2550E48C46791CEFBFC39EF281049AA74E4C734C3B2A7B3F621B8A41F8B6689C4978696690D4EF9FFF0F90DB85C8ECBCF721FB7652AD7B337880A09D97EA736008C3ADBB72223F18C522C0C0889B05122561042D8637D1CBEF8F9F5AE88CDC43E411AA217E2A81C2D812B46D01C3BDC2799DFF3EAD46BB092A566E18EE94F63C4690ECE806B993FDDAC3159BE2098C2428F24969C109E221D8F066BEE3530848DE328D888B4C7E701435EACB116F97BB77B9379EF818B4D280890262EE678B92705, addr: 0x144841a00>
하지만 내가 할 수 있도록 키를 내보내는 방법을 알아낼 수 없습니다 : 나는 내가 확신 계수를 볼 수있는 공개 키를 인쇄 할 경우
var publicKeyPtr, privateKeyPtr: Unmanaged<SecKey>?
let publicKeyParameters: [String: AnyObject] = [
kSecAttrIsPermanent: true,
kSecAttrApplicationTag: "com.example.site.public"
]
let privateKeyParameters: [String: AnyObject] = [
kSecAttrIsPermanent: true,
kSecAttrApplicationTag: "com.example.site.private"
]
let parameters: [String: AnyObject] = [
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits: 2048,
kSecPublicKeyAttrs.takeUnretainedValue() as String: publicKeyParameters,
kSecPrivateKeyAttrs.takeUnretainedValue() as String: privateKeyParameters
]
let result = SecKeyGeneratePair(parameters, &publicKeyPtr, &privateKeyPtr)
let publicKey = publicKeyPtr!.takeRetainedValue()
let privateKey = privateKeyPtr!.takeRetainedValue()
let blockSize = SecKeyGetBlockSize(publicKey)
내가 필요하다 내 서버로 보내서 사용하십시오.
내 이해에서. SecKey는 Keychain에 저장되며 포인터입니다. 블록 크기는 메모리에있는 키의 길이입니다. 그래서 이론적으로 NSData로 추출한 다음 서버에서 읽을 수있는 것으로 변환 할 수 있습니다. 이론적으로는 그것이 효과가있을 것이라고 생각합니다. 실제로 벽을 치려고했습니다. 모든 도움을 주시면 감사하겠습니다.
유망 해 보입니다. 감사합니다. 나는 그것을 시험 할 수있는대로 바로 표시 할 것입니다. 빠른 후속 조치. NSData인데, 웹 서버에 보낼 수있는 것을 어떻게 해석 할 수 있을까요? 감사. – jackreichert
서버가 받아들이는 것에 따라 다릅니다. 일반적으로 HTTP를 사용하여 서버로 전송하려면'publicKeyData.base64EncodedStringWithOptions (nil)'을 사용하여 base64 문자열로 인코딩하고'NSJSONSerialization'을 사용하여 JSON에 직렬화하십시오. – rintaro
PublicKeyData를 NSData로 사용하고 있지만 여전히 base64EncodeString을 사용할 수 있습니까? – jackreichert