unsigned char *sig = NULL;
unsigned char *passphrase = NULL;
unsigned int len=0;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX md_ctx;
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *md_ctx;
+#endif
EVP_PKEY *pkey;
BIO *in;
len = EVP_PKEY_size(pkey);
sig = (unsigned char*)xmalloc((len+1)*sizeof(char));
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_SignInit(&md_ctx, EVP_sha1());
EVP_SignUpdate(&md_ctx, m, strlen(m));
if (EVP_SignFinal (&md_ctx, sig, &len, pkey)) {
+#else
+ EVP_SignInit(md_ctx, EVP_sha1());
+ EVP_SignUpdate(md_ctx, m, strlen(m));
+ if (EVP_SignFinal(md_ctx, sig, &len, pkey)) {
+#endif
char *tmp;
sig[len] = '\0';
tmp = oauth_encode_base64(len,sig);
OPENSSL_free(sig);
EVP_PKEY_free(pkey);
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX_free(md_ctx);
+#endif
return tmp;
}
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX_free(md_ctx);
+#endif
return xstrdup("liboauth/OpenSSL: rsa-sha1 signing failed");
}
int oauth_verify_rsa_sha1 (const char *m, const char *c, const char *s) {
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX md_ctx;
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *md_ctx;
+#endif
EVP_PKEY *pkey;
BIO *in;
X509 *cert = NULL;
b64d= (unsigned char*) xmalloc(sizeof(char)*strlen(s));
slen = oauth_decode_base64(b64d, s);
-
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_VerifyInit(&md_ctx, EVP_sha1());
EVP_VerifyUpdate(&md_ctx, m, strlen(m));
err = EVP_VerifyFinal(&md_ctx, b64d, slen, pkey);
EVP_MD_CTX_cleanup(&md_ctx);
+#else // OpenSSL 1.1.1
+ EVP_VerifyInit(md_ctx, EVP_sha1());
+ EVP_VerifyUpdate(md_ctx, m, strlen(m));
+ err = EVP_VerifyFinal(md_ctx, b64d, slen, pkey);
+ EVP_MD_CTX_free(md_ctx);
+#endif
EVP_PKEY_free(pkey);
xfree(b64d);
return (err);
*/
char *oauth_body_hash_file(char *filename) {
unsigned char fb[BUFSIZ];
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX ctx;
- size_t len=0;
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *ctx;
+#endif
+ size_t len=0;
unsigned char *md;
FILE *F= fopen(filename, "r");
if (!F) return NULL;
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_MD_CTX_init(&ctx);
EVP_DigestInit(&ctx,EVP_sha1());
while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) {
EVP_DigestUpdate(&ctx, fb, len);
}
+#else // OpenSSL 1.1.1
+ ctx = EVP_MD_CTX_new();
+ EVP_DigestInit(ctx,EVP_sha1());
+ while (!feof(F) && (len=fread(fb,sizeof(char),BUFSIZ, F))>0) {
+ EVP_DigestUpdate(ctx, fb, len);
+ }
+#endif
fclose(F);
len=0;
md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
EVP_MD_CTX_cleanup(&ctx);
+#else // OpenSSL 1.1.1
+ EVP_DigestFinal(ctx, md,(unsigned int*) &len);
+ EVP_MD_CTX_free(ctx);
+#endif
return oauth_body_hash_encode(len, md);
}
char *oauth_body_hash_data(size_t length, const char *data) {
- EVP_MD_CTX ctx;
size_t len=0;
unsigned char *md;
md=(unsigned char*) xcalloc(EVP_MD_size(EVP_sha1()),sizeof(unsigned char));
+#if OPENSSL_VERSION_NUMBER < 0x10100000L // OpenSSL 1.0.2
+ EVP_MD_CTX ctx;
EVP_MD_CTX_init(&ctx);
EVP_DigestInit(&ctx,EVP_sha1());
EVP_DigestUpdate(&ctx, data, length);
EVP_DigestFinal(&ctx, md,(unsigned int*) &len);
EVP_MD_CTX_cleanup(&ctx);
+#else // OpenSSL 1.1.1
+ EVP_MD_CTX *ctx;
+ ctx = EVP_MD_CTX_new();
+ EVP_DigestInit(ctx,EVP_sha1());
+ EVP_DigestUpdate(ctx, data, length);
+ EVP_DigestFinal(ctx, md,(unsigned int*) &len);
+ EVP_MD_CTX_free(ctx);
+#endif
return oauth_body_hash_encode(len, md);
}