Skip to content
Snippets Groups Projects

Resolve "SMIME Support"

Merged lazarog98 requested to merge 232-smime-support into dev
Compare and Show latest version
5 files
+ 125
23
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -52,7 +52,6 @@ array_with_length *create_list_of_errors() {
linked_list * newerr = malloc(sizeof(linked_list));
newerr->content = malloc(sizeof(unsigned long));
memcpy(newerr->content, &err, sizeof(unsigned long));
newerr->content = (void*) err;
newerr->next = NULL;
if (first)
{
@@ -450,35 +449,59 @@ result * get_fingerprint_from_pem(const char *pem, int md_alg) {
goto deinit;
}
/*switch(md_alg)
{
case 0:
alg = EVP_sha256();
break;
case 1:
alg = EVP_sha1();
break;
default:
alg= EVP_sha256();
res->res = get_fingerprint_from_X509(rec_cert, md_alg);
deinit:
temp = create_list_of_errors();
res->errors = temp->arr;
res->num_errors = temp->size;
free(temp);
BIO_free(rec_cert_bio);
X509_free(rec_cert);
return res;
}
result * get_pkey_from_enc_pem(const char *pem, const char *passwd) {
// https://github.com/openssl/openssl/blob/master/demos/cms/cms_enc.c
BIO *rec_cert_bio = NULL, *out = NULL;
// recipient certificate
array_with_length *temp = NULL;
result *res = new_result();
EVP_PKEY *skey = NULL;
// this trick allows to hardcode a certificate as a string
rec_cert_bio = BIO_new_mem_buf(pem, (int) strlen(pem));
if (!rec_cert_bio) {
printf("Failed reading mykey.pem!\n");
goto deinit;
}
if (!X509_digest(rec_cert, alg, md, &len)) {
printf("Failed at digest!\n");
skey = PEM_read_bio_PrivateKey(rec_cert_bio, NULL, NULL, (void*) passwd);
if (!skey) {
printf("Failed reading pem key\n");
goto deinit;
}
res->res = bin_to_hex(md, len);*/
res->res = get_fingerprint_from_X509(rec_cert, md_alg);
out = BIO_new(BIO_s_mem());
if (!PEM_write_bio_PrivateKey(out, skey, NULL, NULL, 0, NULL, NULL)) {
printf("Failed writing pem key\n");
goto deinit;
}
bio_to_str(out, &(res->res));
deinit:
temp = create_list_of_errors();
res->errors = temp->arr;
res->num_errors = temp->size;
free(temp);
BIO_free(out);
BIO_free(rec_cert_bio);
X509_free(rec_cert);
EVP_PKEY_free(skey);
return res;
}
// EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u);
// X509 *PEM_read_bio_X509(BIO *bp, X509 **x, pem_password_cb *cb, void *u)
// Add function taht takes pkcs8 encrzüpted priv kez pem and utputs unencrzpted pem+fpos_t)for import=
Loading