ios以编程方式创建证书请求

时间:2014-10-09 20:37:06

标签: java ios objective-c cryptography public-key-encryption

我正在尝试以编程方式(我将发送到服务器)在iOS am OSX中创建证书请求,而不使用openSSL。我已经设法创建了RSA密钥对,但我没有做其余的事情。我有完全符合我需要的代码,但它是用Java编写的,我想知道是否有人帮助我将其转换为目标c。

这是Java代码:

        test.generateKeys(); // generate RSA key pair

        PrivateKey privateKey = test.keys.getPrivate();
        PublicKey publicKey = test.keys.getPublic();

        SecureRandom sr = new SecureRandom();
        String token = "123456"; // dummy token
        String uuid = "4670ff33-d9f7-4026-957d-25c00e4dec54"; // dummy uuid

        // with Bouncy Castle
        ContentSigner signGen = new JcaContentSignerBuilder("SHA1withRSA").setSecureRandom(sr).build(privateKey);
        X500Principal subject = new X500Principal("O=" + token + ", CN=" + uuid);
        PKCS10CertificationRequestBuilder builder = new JcaPKCS10CertificationRequestBuilder(subject, publicKey);
        PKCS10CertificationRequest request = builder.build(signGen);

        String bc = Hex.encodeHexString(request.getEncoded());
        System.out.println(PEMtoString(request));

我在加密方面不是很好,加密层苹果正在开发的文档很难记录,所以我在这里有点迷失。我遇到了很多类似的样本,但总有一些东西丢失了。 Thx提前。

1 个答案:

答案 0 :(得分:5)

如果有人在这里遇到同样的问题,那就是使用Apples公共加密层(没有openSSL)的解决方案。

https://github.com/ateska/ios-csr

不需要几周的编码只是一个简单的包含。

   SCCSR *sccsr = [[SCCSR alloc] init];
    sccsr.commonName = @"some name";
    sccsr.organizationName = @"some organisation";
//    // aditional data you can set
//    sccsr.countryName = @"";
//    sccsr.organizationalUnitName = @"";
//    sccsr.subjectDER = nil;
//    //
//    
    NSData *certificateRequest = [sccsr build:pPublicKey privateKey:privateKey];

    NSString *str = [certificateRequest base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];

    NSString *strCertificateRequest = @"-----BEGIN CERTIFICATE REQUEST-----\n";
    strCertificateRequest = [strCertificateRequest stringByAppendingString:str];
    strCertificateRequest = [strCertificateRequest stringByAppendingString:@"\n-----END CERTIFICATE REQUEST-----\n"];

SCCSR.h - >从提供的链接下载