Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Objective-C) Duplicate OpenSSL smime CommandDemonstrates how to duplicate an OpenSSL smime command to sign a text file using cert + key.
#import <NSString.h> #import <CkoCert.h> #import <CkoPrivateKey.h> #import <CkoBinData.h> #import <CkoCrypt2.h> #import <CkoStringBuilder.h> // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // This example duplicates the following OpenSSL command: // // smime -sign -in helloWorld.txt -signer cert.pem -inkey my.key -passin pass:test1234 -outform PEM -out helloWorldSigned.pem NSString *certPath = @"qa_data/cert.pem"; NSString *privateKeyPath = @"qa_data/my.key"; NSString *password = @"test1234"; NSString *dataFile = @"qa_data/helloWorld.txt"; CkoCert *cert = [[CkoCert alloc] init]; BOOL success = [cert LoadFromFile: certPath]; if (success != YES) { NSLog(@"%@",cert.LastErrorText); return; } CkoPrivateKey *privKey = [[CkoPrivateKey alloc] init]; success = [privKey LoadEncryptedPemFile: privateKeyPath password: password]; if (success != YES) { NSLog(@"%@",privKey.LastErrorText); return; } CkoBinData *bd = [[CkoBinData alloc] init]; success = [bd LoadFile: dataFile]; if (success != YES) { NSLog(@"%@%@",@"Failed to load ",dataFile); return; } CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init]; success = [crypt SetSigningCert2: cert key: privKey]; if (success != YES) { NSLog(@"%@",crypt.LastErrorText); return; } success = [crypt OpaqueSignBd: bd]; if (success != YES) { NSLog(@"%@",crypt.LastErrorText); return; } CkoStringBuilder *sbPem = [[CkoStringBuilder alloc] init]; [sbPem AppendLine: @"-----BEGIN PKCS7-----" crlf: YES]; [sbPem Append: [bd GetEncoded: @"base64_mime"]]; [sbPem AppendLine: @"-----END PKCS7-----" crlf: YES]; [sbPem WriteFile: @"helloWorldSigned.pem" charset: @"utf-8" emitBom: NO]; NSLog(@"%@",[sbPem GetAsString]); // Sample output: // -----BEGIN PKCS7----- // MIINxAYJKoZIhvcNAQcCoIINtTCCDbECAQExCzAJBgUrDgMCGgUAMBoGCSqGSIb3DQEHAaANBAtI // ZWxsbyBXb3JsZKCCC0owggYQMIID+KADAgECAhBNlCwQ1DvglAnFgS06KwZPMA0GCSqGSIb3DQEB // DAUAMIGIMQswCQYDVQQGEwJVUzETMBEGA1UECBMKTmV3IEplcnNleTEUMBIGA1UEBxMLSmVyc2V5 // IENpdHkxHjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEuMCwGA1UEAxMlVVNFUlRydXN0 // IFJTQSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xODExMDIwMDAwMDBaFw0zMDEyMzEyMzU5 // NTlaMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQH // EwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8BgNVBAMTNVNlY3RpZ28gUlNB // IENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBMIIBIjANBgkqhkiG9w0B // AQEFAAOCAQ8AMIIBCgKCAQEAyjztlApB/975Rrno1jvm2pK/KxBOqhq8gr2+JhwpKirSzZxQgT9t // lC7zl6hn1fXjSo5MqXUfItMltrMaXqcESJuK8dtK56NCSrq4iDKaKq9NxOXFmqXX2zN8HHGjQ2b2 // Xv0v1L5Nk1MQPKA19xeWQcpGEGFUUd0kN+oHox+L9aV1rjfNiCj3bJk6kJaOPabPi2503nn/ITX5 // e8WfPnGw4VuZ79Khj1YBrf24k5Ee1sLTHsLtpiK9OjG4iQRBdq6Z/TlVx/hGAez5h36bBJMxqdHL // pdwIUkTqT8se3ed0PewDch/8kHPo5fZl5u1B0ecpq/sDN/5sCG52Ds+QU5O5EwIDAQABo4IBZDCC // AWAwHwYDVR0jBBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFAnA8vwL2pTbX/4r // 36iZQs/J4K0AMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdJQQWMBQG // CCsGAQUFBwMCBggrBgEFBQcDBDARBgNVHSAECjAIMAYGBFUdIAAwUAYDVR0fBEkwRzBFoEOgQYY/ // aHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VTRVJUcnVzdFJTQUNlcnRpZmljYXRpb25BdXRob3Jp // dHkuY3JsMHYGCCsGAQUFBwEBBGowaDA/BggrBgEFBQcwAoYzaHR0cDovL2NydC51c2VydHJ1c3Qu // Y29tL1VTRVJUcnVzdFJTQUFkZFRydXN0Q0EuY3J0MCUGCCsGAQUFBzABhhlodHRwOi8vb2NzcC51 // c2VydHJ1c3QuY29tMA0GCSqGSIb3DQEBDAUAA4ICAQBBRHUAqznCFfXejpVtMnFojADdF9d6HBA4 // kMjjsb0XMZHztuOCtKF+xswhh2GqkW5JQrM8zVlU+A2VP72Ky2nlRA1GwmIPgou74TZ/XTarHG8z // dMSgaDrkVYzz1g3nIVO9IHk96VwsacIvBF8JfqIs+8aWH2PfSUrNxP6Ys7U0sZYx4rXD6+cqFq/Z // W5BUfClN/rhk2ddQXyn7kkmka2RQb9d90nmNHdgKrwfQ49mQ2hWQNDkJJIXwKjYA6VUR/fZUFeCU // isdDe/0ABLTI+jheXUV1eoYV7lNwNBKpeHdNuO6Aacb533JlfeUHxvBz9OfYWUiXu09sMAviM11Q // 0DuMZ5760CdO2VnpsXP4KxaYIhvqPqUMWqRdWyn7crItNkZeroXaecG03i3mM7dkiPaCkgocBg0E // BYsbZDZ8bsG3a08LwEsL1Ygz3SBsyECa0waq4hOf/Z85F2w2ZpXfP+w8q4ifwO90SGZZV+HR/Jh6 // rEaVPDRF/CEGVqR1hiuQOZ1YL5ezMTX0ZSLwrymUE0pwi/KDaiYB15uswgeIAcA6JzPFf9pLkAFF // Ws1QNyN++niFhsM47qodx/PL+5jR87myx5uYdBEQkkDc+lKB1Wct6ucXqm2EmsaQ0M95QjTmy+rD // WjkDYdw3Ms6mSWE3Bn7i5ZgtwCLXgAIe5W8mybM2JzCCBTIwggQaoAMCAQICEQDwUrMy4rq9PIFH // eb0WvDbOMA0GCSqGSIb3DQEBCwUAMIGWMQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBN // YW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRgwFgYDVQQKEw9TZWN0aWdvIExpbWl0ZWQxPjA8 // BgNVBAMTNVNlY3RpZ28gUlNBIENsaWVudCBBdXRoZW50aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWls // IENBMB4XDTE5MDMyMjAwMDAwMFoXDTIwMDMyMTIzNTk1OVowKDEmMCQGCSqGSIb3DQEJARYXc3Vw // cG9ydEBjaGlsa2F0c29mdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3Y+NL // mfKmb5tkrlU8z0B4Nfbe09jivGC9+OLz9Hhvcn1xmHkEtunHFC2xZOOuTIbucKrJdlGmlSsztHdo // Uq6btS/7e3j0gk3OJ8P+VhL638rbgE7BFjwuDKkYhSsItwNJdoi3omA4kfnfITqp/GDU3618miIU // YFGdkZ0yhIofQoyzFEqdszG35d5rxNuSaw6pQG/NX2vtvLFuJ3zebvvZqs9JAIfDaVJ2OPfsyiCs // OWsvvC6Mv7ZuLnKi5ZbBJQEhxGI1t9fgOjResLbQXegKJdsh5z9BuocVmOHyYlj16aQHI3PpNY46 // 5WB0rrxTiFrjrj8KScNM/Yf0UISmb86ZAgMBAAGjggHmMIIB4jAfBgNVHSMEGDAWgBQJwPL8C9qU // 21/+K9+omULPyeCtADAdBgNVHQ4EFgQUp6kiYgCk7i8Fy9TkPf9yudOdRW4wDgYDVR0PAQH/BAQD // AgWgMAwGA1UdEwEB/wQCMAAwIAYDVR0lBBkwFwYIKwYBBQUHAwQGCysGAQQBsjEBAwUCMBEGCWCG // SAGG+EIBAQQEAwIFIDBABgNVHSAEOTA3MDUGDCsGAQQBsjEBAgEBATAlMCMGCCsGAQUFBwIBFhdo // dHRwczovL3NlY3RpZ28uY29tL0NQUzBaBgNVHR8EUzBRME+gTaBLhklodHRwOi8vY3JsLnNlY3Rp // Z28uY29tL1NlY3RpZ29SU0FDbGllbnRBdXRoZW50aWNhdGlvbmFuZFNlY3VyZUVtYWlsQ0EuY3Js // MIGKBggrBgEFBQcBAQR+MHwwVQYIKwYBBQUHMAKGSWh0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2Vj // dGlnb1JTQUNsaWVudEF1dGhlbnRpY2F0aW9uYW5kU2VjdXJlRW1haWxDQS5jcnQwIwYIKwYBBQUH // MAGGF2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMCIGA1UdEQQbMBmBF3N1cHBvcnRAY2hpbGthdHNv // ZnQuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQDHuPFffssUPGEnKOWPgBhABEzFKSWq8plEyPXraFdY // l4LBMm4uIpkUXsKdHyAu7m66CsNQR8RYN0xITVlyKVCaCu/bv1vLiPIEX6SF26HkQRlj4J4Amu7r // RcrNGhgQ/ofgihEwiVBIze3uvi5zY+QZwmRFikdHrUhWx3qQYG9sW42U0eN+CULbz4QHt3+4xRCq // YHbfazG4pK2ukI7xKI1sjxs5237fmdYhqUkH0S+0I708zv10/jLN6Ev8r6Q0ItwRh4gt5dTC8qPK // EmGQs/8v1etTdHzRwWUofOyzgkykGg4MdvFkC8hJ4Hinhpg3Y1vdjX6f3pZPsipKwB+MdYSIMYIC // MzCCAi8CAQEwgawwgZYxCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIx // EDAOBgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE+MDwGA1UEAxM1U2Vj // dGlnbyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEQDwUrMy // 4rq9PIFHeb0WvDbOMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG // SIb3DQEJBTEPFw0xOTA0MDIyMjM2MjRaMCMGCSqGSIb3DQEJBDEWBBQKTVWo13jlAi+rcBl3xdhA // u8SG0DANBgkqhkiG9w0BAQEFAASCAQAWaz5itTD7L3YUWuRS5nBzJKv6RUe84muwLICW+U5HEEd7 // aSNXCivMzsIYGN3VpBAfIGbRywDZ8SLFkmR3ernA4y0ki5SUNxfe6s3fsqPVIO56JEEF0/OZ54KU // 6o/Tn2Qw8mYyYW5n2O690DGqtN/mZjI5vyRM8fG6KDrlnMplACF4St6XZx9Od/Znq039IPzgukJI // rCIm9n0LFEdSYlajjS/d5GsIKWmy5ktrsXk5Ym6+Um95FBDuwrZyW1qYo+cLAWSBSf9poMUxwQNY // EAA1iZqJjnlwsgMgM44h9voAW+wDMfcGFUwGDTxaLday6vqxHobR3MwjsBI8qjRbb28G // -----END PKCS7----- // // |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.