XML 형식의 C#에서 공유하는 PublicKey (2048 비트) 데이터에서 SecKeyRef를 생성하려고합니다. 데이터는 다음과 같다 : I 키 만 1024 비트 동작하지만 동일한 로직이 상기 키 (2048 비트)로 인코딩 DER에 실패하는 Convert XML Dsig format to DER ASN.1 public key 링크를 따랐다RSA 공개 키 (2048 비트)를 XML 형식에서 DER ASN.1 iOS 공개 키로 변환
<Modulus>yLgpOFtg14GjDdle0xha2JCbYrpmKCpXcv+zFx2pi6OlIF8cOSXF6dE19W15+WfuCc2SznVQlVDOLp/NlPGLXKN5L47XYQrPpcls8/xp2PYYW7hjezx7Ig6+WDJnUxSbWgxZQMaiyO1XbCKll5yT2AxUj4od/DfylsVe8ljq154rEb+vCjr/LDpxExijHouJYDNqFV1jglWHWfftBQAzEZADPx7NpHsgXSYrFeVY/WH38GIlyO8FvGWIuDiwyRrHUEXhljmBqAJ3lgULyik3ShfjpN1W4h7BbzFs27mpiAPMtPgToADPNzOadRWFJQjeVVknIq5g6SHHnaZK8wBwrQ==</Modulus><Exponent>AQAB</Exponent>]]>"
. 덧붙여서, 변환 논리가 256 바이트 키로 수정 될 필요가 있음을 알았지 만, 변경으로 성공할 수는 없습니다!
나는 또한 Generate Public Key From Modulus & Exponent on iOS using OpenSSL 라이브러리를 사용해 보았지만 이것으로 RSA 객체를 생성하지 못했습니다!
NSString *mod = @"yLgpOFtg14GjDdle0xha2JCbYrpmKCpXcv+zFx2pi6OlIF8cOSXF6dE19W15+WfuCc2SznVQlVDOLp/NlPGLXKN5L47XYQrPpcls8/xp2PYYW7hjezx7Ig6+WDJnUxSbWgxZQMaiyO1XbCKll5yT2AxUj4od/DfylsVe8ljq154rEb+vCjr/LDpxExijHouJYDNqFV1jglWHWfftBQAzEZADPx7NpHsgXSYrFeVY/WH38GIlyO8FvGWIuDiwyRrHUEXhljmBqAJ3lgULyik3ShfjpN1W4h7BbzFs27mpiAPMtPgToADPNzOadRWFJQjeVVknIq5g6SHHnaZK8wBwrQ==";
BIGNUM *modulus = BN_new();
int res = BN_hex2bn(&modulus,[mod cStringUsingEncoding:NSUTF8StringEncoding]);
BIGNUM *exponent = BN_new();
NSString *exp = @"AQAB";
res = BN_hex2bn(&exponent,[exp cStringUsingEncoding:NSUTF8StringEncoding]);
RSA *rsa = RSA_new();
rsa->n = BN_new();
BN_copy(rsa->n,modulus);
rsa->e = BN_new();
BN_copy(rsa->e,exponent);
rsa->iqmp=NULL;
rsa->d=NULL;
rsa->p=NULL;
rsa->q=NULL;
FILE *fp = fopen("/publicKey.pem", "wb");
int suc = PEM_write_RSAPublicKey(fp, rsa, NULL, NULL, 0, 0, NULL);
생성 된 publicKey.pem 파일이 분명히 비어 : 아래는 샘플입니다! 누구나 XML RSA 공개 키를 iOS SecKetRef 객체로 가져올 수 있다면 좋을 것입니다.
미리 감사드립니다.