खोज…


वाक्य - विन्यास

  • EVP_PKEY * EVP_PKEY_new (शून्य);
  • RSA * RSA_new (शून्य);
  • int RSA_generate_key_ex (RSA * rsa, int बिट्स, BIGNUM * e, BN_GENCB * cb);
  • int EVP_PKEY_assign_RSA (EVP_PKEY * pkey, RSA * कुंजी);
  • int PEM_write_PStreetKey (FILE * fp, EVP_PKEY * x, const EVP_CIPHER * enc, unsigned char * kstr, int klen, pem_password_cb / cb, void * u);
  • int PEM_write_bio_PStreetKey (BIO * bp, EVP_PKEY * x, const EVP_CIPHER * enc, अहस्ताक्षरित char * kstr, int klen, pem_password -bb * cb, void * u);
  • EVP_PKEY * PEM_read_PStreetKey (FILE * fp, EVP_PKEY ** x, pem_password_cb * cb, void * u);
  • EVP_PKEY * PEM_read_bio_PStreetKey (BIO * bp, EVP_PKEY ** x, pem_password_cb * cb, void * u);
  • vid EVP_PKEY_free (EVP_PKEY * कुंजी);

RSA कुंजी उत्पन्न करें

RSA कुंजी बनाने के लिए, पहले EVP_PKEY को EVP_PKEY_new साथ आवंटित किया जाना चाहिए:

EVP_PKEY *pkey;
pkey = EVP_PKEY_new();

कुंजी के लिए एक प्रतिपादक भी जरूरी है, जो एक के आवंटन की आवश्यकता होगी BIGNUM साथ BN_new और फिर साथ बताए BN_set_word :

BIGNUM *bn;
bn = BN_new();
BN_set_word(bn, RSA_F4);

कुंजी बनाने के लिए, RSA_new साथ एक नया RSA RSA_new और RSA_generate_key_ex कॉल करें:

RSA *rsa;
rsa = RSA_new();
RSA_generate_key_ex(
    rsa,  /* pointer to the RSA structure */
    2048, /* number of bits for the key - 2048 is a good value */
    bn,   /* exponent allocated earlier */
    NULL, /* callback - can be NULL if progress isn't needed */
);

करने के लिए नई जनरेट कुंजी असाइन करने के लिए EVP_PKEY संरचना, फोन EVP_PKEY_assign_RSA :

EVP_PKEY_assign_RSA(pkey, rsa);

EVP_PKEY संरचना को मुक्त होने पर RSA संरचना स्वचालित रूप से मुक्त हो जाएगी। यह EVP_PKEY_free साथ किया जाता है:

EVP_PKEY_free(pkey);

निजी कुंजी सहेजें

एक EVP_PKEY को कई प्रारूपों में सीधे डिस्क पर सहेजा जा सकता है। PEM_write_PrivateKey का उपयोग PEM प्रारूप में EVP_PKEY को बचाने के लिए किया जाता है:

FILE *f;
f = fopen("key.pem", "wb");
PEM_write_PrivateKey(
    f,                  /* use the FILE* that was opened */
    pkey,               /* EVP_PKEY structure */
    EVP_des_ede3_cbc(), /* default cipher for encrypting the key on disk */
    "replace_me",       /* passphrase required for decrypting the key on disk */
    10,                 /* length of the passphrase string */
    NULL,               /* callback for requesting a password */
    NULL                /* data to pass to the callback */
);

BIO लिए एक निजी कुंजी को बचाने के लिए, PEM_write_bio_PrivateKey उपयोग PEM_write_bio_PrivateKey :

BIO *bio;
bio = BIO_new(BIO_s_mem());
PEM_write_bio_PrivateKey(
    bio,                /* BIO to write the private key to */
    pkey,               /* EVP_PKEY structure */
    EVP_des_ede3_cbc(), /* default cipher for encrypting the key on disk */
    "replace_me",       /* passphrase required for decrypting the key on disk */
    10,                 /* length of the passphrase string */
    NULL,               /* callback for requesting a password */
    NULL                /* data to pass to the callback */
);

निजी कुंजी लोड करें

सीधे डिस्क से एक निजी कुंजी लोड करने के लिए, PEM_read_PrivateKey फ़ंक्शन का उपयोग करें:

FILE *f;
EVP_PKEY *pkey;
f = fopen("key.pem", "rb");
PEM_read_PrivateKey(
    f,     /* use the FILE* that was opened */
    &pkey, /* pointer to EVP_PKEY structure */
    NULL,  /* password callback - can be NULL */
    NULL   /* parameter passed to callback or password if callback is NULL */
);

BIO से निजी कुंजी लोड करने के लिए, PEM_read_bio_PrivateKey उपयोग करें:

BIO *bio;
bio = BIO_new_mem_buf((void *)input, input_len);
PEM_read_bio_PrivateKey(
    bio,   /* BIO to read the private key from */
    &pkey, /* pointer to EVP_PKEY structure */
    NULL,  /* password callback - can be NULL */
    NULL   /* parameter passed to callback or password if callback is NULL */
);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow