Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicPythonRubySQL ServerSwiftTclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcel

C++ Examples


ASN.1
Amazon S3
Amazon S3 (new)
Amazon SES
Amazon SNS
Amazon SQS
Async
Azure Cloud Storage
Azure Service Bus
Bounced Email
Box
CSR
CSV
Certificates
Compression
DKIM / DomainKey
DSA
Diffie-Hellman
Digital Signatures
Dropbox
ECC
Email Object
Encryption
FTP
Facebook
Firebase
GeoOp
Google APIs
Google Calendar
Google Cloud Storage
Google Drive
Gzip
HTML-to-XML/Text
HTTP
HTTP Misc
IMAP
JSON
JSON Web Encryption (JWE)
JSON Web Signatures (JWS)
JSON Web Token (JWT)

Java KeyStore (JKS)
MHT / HTML Email
MIME
Microsoft Graph
NTLM
OAuth1
OAuth2
OneDrive
OpenSSL
Outlook
PEM
PFX/P12
POP3
PRNG
PayPal
Peoplevox
QuickBooks
REST
RSA Encryption
SCP
SFTP
SMTP
SSH
SSH Key
SSH Tunnel
SharePoint
Shopify
Socket/SSL/TLS
Spider
Stream
Stripe
SugarCRM
Tar Archive
Twitter
VoiceBase
Walmart
WebSocket
XML
XML Digital Signatures
XMP
Xero
Zip
curl
eBay

 

 

 

(C++) Generate an ECC Key (Public and Private)

Demonstrates how to generate an ECC key and save both public and private parts.

Chilkat C/C++ Library Downloads

MS Visual C/C++

Linux/CentOS/Heroku C/C++

MAC OS X C/C++

C++ Builder

Solaris C/C++

iOS C/C++

Android C/C++

Raspberry Pi C/C++

Windows Mobile 5.0/Pocket PC 2003

ARM Embedded Linux C/C++

PowerLinux C/C++

FreeBSD C/C++

MinGW C/C++

#include <CkPrng.h>
#include <CkEcc.h>
#include <CkPrivateKey.h>
#include <CkPublicKey.h>

void ChilkatSample(void)
    {
    //  This example requires the Chilkat API to have been previously unlocked.
    //  See Global Unlock Sample for sample code.

    //  Create a Fortuna PRNG and seed it with system entropy.
    //  This will be our source of random data for generating the ECC private key.
    CkPrng fortuna;
    const char *entropy = fortuna.getEntropy(32,"base64");
    bool success = fortuna.AddEntropy(entropy,"base64");

    CkEcc ecc;

    //  Generate a random ECC private key on the secp256r1 curve.
    //  Chilkat also supports other curves, such as secp384r1, secp521r1, and secp256k1.

    CkPrivateKey *privKey = ecc.GenEccKey("secp256r1",fortuna);
    if (privKey == 0 ) {
        std::cout << ecc.lastErrorText() << "\r\n";
        return;
    }

    //  Save the private key to PKCS8 encrypted PEM
    //  (The private key can be saved in a variety of different formats. See the online reference documentation.)
    success = privKey->SavePkcs8EncryptedPemFile("pemPassword","qa_output/eccPrivKey.pem");
    if (success != true) {
        std::cout << privKey->lastErrorText() << "\r\n";
    }

    delete privKey;

    //  The private key PEM looks like this:

    //  	-----BEGIN ENCRYPTED PRIVATE KEY-----
    //  	MIHFMEAGCSqGSIb3DQEFDTAzMBsGCSqGSIb3DQEFDDAOBAhUmn+1/lwCIwICCAAw
    //  	FAYIKoZIhvcNAwcECPlyNXAXZO+oBIGAIvxvTENXJWbrCwSjh0QNxLecBotUpfI5
    //  	auOonLmwVMyt1ahMmNyVo/D+pnKQSE41Fg8fApM0DCDKZUOVCCcK1qirIsMPQkGp
    //  	klPJbvrQRVYgzBtU31uNB5y2wqhrIeepal1HXBvbkUK0nfJMbcdz/XAEIQu2HhTD
    //  	t6LMScPQld4=
    //  	-----END ENCRYPTED PRIVATE KEY-----

    //  Now get the public key part from the private key.
    //  (A public key is actually a subset of the private key.)
    CkPublicKey *pubKey = privKey->GetPublicKey();

    //  Save the public key to a PEM file.
    //  (The public key can be saved in a variety of different formats. See the online reference documentation.)
    //  For ECC keys, the 1st argument (bPreferPkcs1) is ignored and unused.
    bool bPreferPkcs1 = false;
    success = pubKey->SavePemFile(bPreferPkcs1,"qa_output/eccPubKey.pem");

    delete pubKey;

    //  The public key PEM looks like this:

    //  	-----BEGIN PUBLIC KEY-----
    //  	MIIBSzCCAQMGByqGSM49AgEwgfcCAQEwLAYHKoZIzj0BAQIhAP////8AAAABAAAA
    //  	AAAAAAAAAAAA////////////////MFsEIP////8AAAABAAAAAAAAAAAAAAAA////
    //  	///////////8BCBaxjXYqjqT57PrvVV2mIa8ZR0GsMxTsPY7zjw+J9JgSwMVAMSd
    //  	NgiG5wSTamZ44ROdJreBn36QBEEEaxfR8uEsQkf4vOblY6RA8ncDfYEt6zOg9KE5
    //  	RdiYwpZP40Li/hp/m47n60p8D54WK84zV2sxXs7LtkBoN79R9QIhAP////8AAAAA
    //  	//////////+85vqtpxeehPO5ysL8YyVRAgEBA0IABGdOH8uM6SfX3mdV+TR0mWp2
    //  	gfVRPlxWxwhOiowuNByBxmQz7ZR4CJY1XcN2zkUo5pzW73ZhGwgd2XTOvqPqG40=
    //  	-----END PUBLIC KEY-----
    // 

    std::cout << "finished." << "\r\n";
    }

 

© 2000-2016 Chilkat Software, Inc. All Rights Reserved.