b0VIM 7.2Me7dekzxubuntu-amd64/media/psf/Home/Projects/feisty/dcrypt/src/dx509.ccutf-8 3210#"! Utp)D)0gNjad )vuk' i T : " [ Z '  M  | = ^I#"J}sV('yuP"!|N)k;:  BIO *key_info_bio = BIO_new(BIO_s_mem()); Local pub_str; //Setup a key info subobject //Public Key Info cont. info->Set(public_key_algo, String::New(buf)); buf[wrote] = '\0'; BIO_read(bio, buf, sizeof(buf)-1); int wrote = i2a_ASN1_OBJECT(bio, ci->key->algor->algorithm); //Public Key info info->Set(valid_to_symbol, String::New(buf)); BIO_read(bio, buf, sizeof(buf)-1); ASN1_TIME_print(bio, X509_get_notAfter(x)); //Not before info->Set(valid_from_symbol, String::New(buf)); BIO_read(bio, buf, sizeof(buf)-1); ASN1_TIME_print(bio, X509_get_notBefore(x)); //valid from info->Set(serial_symbol, String::New(buf)); BIO_read(bio, buf, sizeof(buf)-1); } BIO_printf(bio, "%02x%s", bs->data[i], ((i+1 == bs->length)? "": ":")); for (int i = 0; i< bs->length; i++) { ASN1_INTEGER *bs = X509_get_serialNumber(x); //Serial info->Set(version_symbol, Integer::New(l)); l = X509_get_version(x)+1; long l; //Version X509_CINF *ci = x->cert_info; memset(buf, 0, sizeof(buf)); BIO* bio = BIO_new(BIO_s_mem()); char buf [256]; OPENSSL_free(details); info->Set(issuer_symbol, String::New(details)); details = X509_NAME_oneline(X509_get_issuer_name(x), 0, 0); //issuer name info->Set(subject_symbol, String::New(details)); char *details = X509_NAME_oneline(X509_get_subject_name(x), 0, 0); //subject name Local info = Object::New(); Persistent public_key_algo = NODE_PSYMBOL("public_key_algo"); Persistent pubkey_pem_symbol = NODE_PSYMBOL("public_key_pem"); Persistent pubkey_symbol = NODE_PSYMBOL("public_key"); Persistent signature_symbol = NODE_PSYMBOL("signature"); Persistent signature_algo_symbol = NODE_PSYMBOL("signature_algorithm"); Persistent ext_key_usage_symbol = NODE_PSYMBOL("ext_key_usage"); Persistent version_symbol = NODE_PSYMBOL("version"); Persistent name_symbol = NODE_PSYMBOL("name"); Persistent fingerprint_symbol = NODE_PSYMBOL("fingerprint"); Persistent valid_to_symbol = NODE_PSYMBOL("valid_to"); Persistent valid_from_symbol = NODE_PSYMBOL("valid_from"); Persistent issuer_symbol = NODE_PSYMBOL("is pkey = X509_get_pubkey(x); EVP_PKEY *pkey; X509* x = dx509->x509_; int ok = dx509->load_cert(cert_buf, cert_len, 1, &dx509->x509_); //load_cert is loading into the dx509 private x509, but is also returning the same object it should only do the former //Clean me up assert(cert_len = written); ssize_t written = DecodeWrite(cert_buf, cert_len, args[0], BINARY); char* cert_buf = new char[cert_len]; ssize_t cert_len = DecodeBytes(args[0], BINARY); ASSERT_IS_STRING_OR_BUFFER(args[0]); DX509 *dx509 = ObjectWrap::Unwrap(args.This()); HandleScope scope;Handle DX509::parseCert(const Arguments &args) {} return args.This(); x->Wrap(args.This()); DX509 *x = new DX509(); HandleScope scope;Handle DX509::New(const Arguments &args) {} target->Set(String::NewSymbol("X509"), constructor->GetFunction()); Local proto = constructor->PrototypeTemplate(); NODE_SET_PROTOTYPE_METHOD(constructor, "createCert", createCert); NODE_SET_PROTOTYPE_METHOD(constructor, "parse", parseCert); constructor->SetClassName(String::NewSymbol("X509")); constructor->InstanceTemplate()->SetInternalFieldCount(1); constructor = Persistent::New(FunctionTemplate::New(DX509::New)); HandleScope scope;void DX509::Initialize(Handle target) {Persistent DX509::constructor;#include "dx509.h"ad{?jzvubA=)lji+   z A @ .  o c P 0 l h H 4 w k Q P  d 7   vrdJq&}nj\MA?)} }}}}}}}}}}}}}}}}} return 1;}}}}}}} return 1; *pkeyp} return 1; *pkeyp = pk; *x509p = x; } return -1; if (!X509_sign(x, pk, EVP_sha1())) { X509_set_issuer_name(x, name); X509_NAME_add_entry_by_txt(name,"C", MBSTRING_ASC, (const unsigned char*)"UK", -1, -1, 0); // X509_NAME_add_entry_by_txt(name, "C", MBSTRING_ASC, "AU", -1, -1, 0); name = X509_get_subject_name(x); X509_set_pubkey(x, pk); X509_gmtime_adj(X509_get_notAfter(x), (long)60*60*24*days); X509_gmtime_adj(X509_get_notBefore(x), 0); ASN1_INTEGER_set(X509_get_serialNumber(x), 1); X509_set_version(x, 2); rsa = NULL; } return -1; if (!EVP_PKEY_assign_RSA(pk, rsa)) { rsa=RSA_generate_key(bits, RSA_F4, NULL, NULL); } x = *x509p; } else { } return -1; if ((x=X509_new()) == NULL) { if ((x509p == NULL) || (*x509p == NULL)) { //Setup or use given x509 } pk = *pkeyp; } else { } return -1; if ((pk = EVP_PKEY_new()) == NULL) { if ((pkeyp == NULL) || (*pkeyp == NULL)) { //Use the key we're given, if we aren't given one then allocate X509_NAME *name = NULL; RSA *rsa; EVP_PKEY *pk; X509 *x;int DX509::make_cert(X509 **x509p, int type, long bits, EVP_PKEY **pkeyp, int days) {} return scope.Close(x509_str); if (pkey != NULL) EVP_PKEY_free(pkey); dx509->x509_ = x; if (bp != NULL) BIO_free(bp); } free(x509_buf); x509_str = String::New(x509_buf); x509_buf[bptr->length-1] = 0; memcpy(x509_buf, bptr->data, bptr->length-1); char *x509_buf = (char *) malloc(bptr->length+1); BIO_get_mem_ptr(bp, &bptr); BUF_MEM *bptr; if (ok) { Local x509_str = String::New(""); ok =PEM_write_bio_X509(bp, x); BIO *bp = BIO_new(BIO_s_mem()); int ok = dx509->make_cert(&x, 0, 1024, &pkey, 365); EVP_PKEY *pkey = NULL; X509 *x = NULL; DX509 *dx509 = ObjectWrap::Unwrap(args.This()); HandleScope scope;Handle DX509::createCert(const Arguments &args) {} *pbuflen = i; if (*pbuflen < (i = (size_t)BN_num_bytes(b))) return 0; if (!b) size_t i;int DX509::update_buf_len(const BIGNUM *b, size_t *pbuflen) {} X509_free(x509_); fprintf(stderr, "Destructor called\n");DX509::~DX509() {} //x509_ = X509_new();DX509::DX509() : ObjectWrap() {} return 1; x509_ = x; } BIO_free(bp); if (bp != NULL) { } // ERR_print_errors(stderr); if (x == NULL) { } x = PEM_read_bio_X509_AUX(bp, NULL, NULL, NULL); } else if (format == 1) { x = d2i_X509_bio(bp, NULL); if (format == 0) {ad  0V.G< w q O ` A @ '  L '   Y I 7  X W F = +  eKx[U \Gr5/QE2 N7 G X509 *x = NULL; BIO *bp = BIO_new_mem_buf(cert, cert_len);X509* DX509::load_cert(char *cert, int cert_len, int format) {} return scope.Close(info); if (bio != NULL) BIO_free(bio); delete [] cert_buf; EVP_PKEY_free(pkey); //X509_free(x); // delete [] buf; } BIO_free(key_bio); delete [] pub_buf; info->Set(pubkey_pem_symbol, String::New(pub_buf)); pub_buf[bptr->length-1] = 0; memcpy(pub_buf, bptr->data, bptr->length-1); char *pub_buf = (char *)malloc(bptr->length +1); BIO_get_mem_ptr(key_bio, &bptr); BUF_MEM *bptr; if (ok) { int ok = PEM_write_bio_PUBKEY(key_bio, pkey); BIO *key_bio = BIO_new(BIO_s_mem()); //Pub key in pem format } info->Set(ext_key_usage_symbol, ext_key_usage); sk_ASN1_OBJECT_pop_free(eku, ASN1_OBJECT_free); } ext_key_usage->Set(Integer::New(i), String::New(buf)); OBJ_obj2txt(buf, sizeof(buf) - 1, sk_ASN1_OBJECT_value(eku, i), 1); memset(buf, 0, sizeof(buf)); for (int i = 0; i < sk_ASN1_OBJECT_num(eku); i++) { Local ext_key_usage = Array::New(); if (eku != NULL) { x509_, NID_ext_key_usage, NULL, NULL); STACK_OF(ASN1_OBJECT) *eku = (STACK_OF(ASN1_OBJECT) *)X509_get_ext_d2i( //Extensions } fprintf(stderr, "Digest bad\n"); } else { info->Set(fingerprint_symbol, String::New(fingerprint)); } fingerprint[0] = '\0'; } else { fingerprint[(3*(n-1))+2] = '\0'; if (n > 0) { } fingerprint[(3*j)+2] = ':'; fingerprint[(3*j)+1] = hex[(md[j] & 0x0f)]; fingerprint[3*j] = hex[(md[j] & 0xf0) >> 4]; for (j=0; jSet(signature_symbol, String::New(sig_buf)); BIO_read(sig_bio, sig_buf, sizeof(sig_buf)-1); char sig_buf [n1*3]; } BIO_printf(sig_bio, "%02x%s", s[i], ((i+1) == n1) ? "":":"); for (int i=0; idata; unsigned int n ASN1_STRING *sigh = x5->signatur ASN1_STRING *sigh = x->signature; BIO *sig_bio = BIO_new(BIO_s_mem()); //Signature info->Set(signature_algo_symbol, String::New(buf)); buf[wrote] = '\0'; BIO_read(bio, buf, sizeof(buf)-1); wrote = i2a_ASN1_OBJECT(bio, ci->signature->algorithm); //Signature Algorithm info->Set(pubkey_symbol, pub_str); if (key_info_bio != NULL) BIO_free(key_info_bio); } pub_str = String::New(""); } else { EC_KEY_free(ec_key); pub_str = String::New(""); EC_KEY *ec_key = EVP_PKEY_get1_EC_KEY(pkey); } else if (pkey->type == EVP_PKEY_EC) { RSA_free(rsa); OPENSSL_free(m); pub_str = String::New(key_info_buf); BIO_read(key_info_bio, key_info_buf, sizeof(key_info_buf)-1); char key_info_buf[buf_len*4]; } BIO_printf(key_info_bio, "%02x%s", m[i],((i+1) == n) ? "":":"); for (int i=0; in,&m[0]); int n; unsigned char *m = (unsigned char *) OPENSSL_malloc(buf_len+10); // dx509->update_buf_len(rsa->e, &buf_len); dx509->update_buf_len(rsa->n, &buf_len); size_t buf_len = 0; int mod_len = BN_num_bits(rsa->n); RSA *rsa = EVP_PKEY_get1_RSA(pkey); } else if (pkey->type == EVP_PKEY_RSA) { DSA_free(dsa); pub_str = String::New(""); DSA *dsa = EVP_PKEY_get1_DSA(pkey); if (pkey->type == EVP_PKEY_DSA) {adDl+Z < o '  w v f ( h g [ Q 4   Q K $ ml]. tDC/kL3 BIO *key_info_bio = BIO_new(BIO_s_mem()); Local pub_str; //Setup a key info subobject //Public Key Info cont. info->Set(public_key_algo, String::New(buf)); buf[wrote] = '\0'; BIO_read(bio, buf, sizeof(buf)-1); int wrote = i2a_ASN1_OBJECT(bio, ci->key->algor->algorithm); //Public Key info info->Set(valid_to_symbol, String::New(buf)); BIO_read(bio, buf, sizeof(buf)-1); ASN1_TIME_print(bio, X509_get_notAfter(x)); //Not before info->Set(valid_from_symbol, String::New(buf)); BIO_read(bio, buf, sizeof(buf)-1); ASN1_TIME_print(bio, X509_get_notBefore(x)); //valid from info->Set(serial_symbol, String::New(hex)); char *hex = BN_bn2hex(bignum); BIGNUM *bignum = ASN1_INTEGER_to_BN(asn1_i, NULL); ASN1_INTEGER *asn1_i = X509_get_serialNumber(x); //BIO_read(bio, buf, sizeof(buf)-1); //} // BIO_printf(bio, "%02x%s", bs->data[i], ((i+1 == bs->length)? "": ":")); //for (int i = 0; i< bs->length; i++) { //ASN1_INTEGER *bs = X509_get_serialNumber(x); //Serial info->Set(version_symbol, Integer::New(l)); l = X509_get_version(x)+1; long l; //Version X509_CINF *ci = x->cert_info; memset(buf, 0, sizeof(buf)); BIO* bio = BIO_new(BIO_s_mem()); char buf [256]; OPENSSL_free(details); info->Set(issuer_symbol, String::New(details)); details = X509_NAME_oneline(X509_get_issuer_name(x), 0, 0); //issuer name info->Set(subject_symbol, String::New(details)); char *details = X509_NAME_oneline(X509_get_subject_name(x), 0, 0); //subject name Local info = Object::New(); Persistent public_key_algo = NODE_PSYMBOL("public_key_algo"); Persistent pubkey_pem_symbol = NODE_PSYMBOL("public_key_pem"); Persistent pubkey_symbol = NODE_PSYMBOL("public_key"); Persistent signature_symbol = NODE_PSYMBOL("signature"); Persistent signature_algo_symbol = NODE_PSYMBOL("signature_algorithm"); Persistent ext_key_usage_symbol = NODE_PSYMBOL("ext_key_usage"); Persistent version_symbol = NODE_PSYMBOL("version"); Persistent name_symbol = NODE_PSYMBOL("name"); Persistent fingerprint_symbol = NODE_PSYMBOL("fingerprint"); Persistent valid_to_symbol = NODE_PSYMBOL("valid_to"); Persistent valid_from_symbol = NODE_PSYMBOL("valid_from"); Persistent issuer_symbol = NODE_PSYMBOL("issuer"); Persistent subject_symbol = NODE_PSYMBOL("subject"); Persistent serial_symbol = NODE_PSYMBOL("serial"); //node symbolsadVNZV?d> k I C B 1 m i g X  h E P L K 1 e 4  {Y=;:vk[WV } x = *x509p; } else { x = X509_new(); if ((x509p == NULL) || (*x509p == NULL)) { X509* x; BIO *bp = BIO_new_mem_buf(cert, cert_len);int DX509::load_cert(char *cert, int cert_len, int format, X509** x509p) {} return scope.Close(info); if (bio != NULL) BIO_free(bio); delete [] cert_buf; EVP_PKEY_free(pkey); } BIO_free(key_bio); delete [] pub_buf; info->Set(pubkey_pem_symbol, String::New(pub_buf)); pub_buf[bptr->length-1] = 0; memcpy(pub_buf, bptr->data, bptr->length-1); char *pub_buf = (char *)malloc(bptr->length +1); BIO_get_mem_ptr(key_bio, &bptr); BUF_MEM *bptr; if (ok) { ok = PEM_write_bio_PUBKEY(key_bio, pkey); BIO *key_bio = BIO_new(BIO_s_mem()); //Pub key in pem format } info->Set(ext_key_usage_symbol, ext_key_usage); sk_ASN1_OBJECT_pop_free(eku, ASN1_OBJECT_free); } ext_key_usage->Set(Integer::New(i), String::New(buf)); OBJ_obj2txt(buf, sizeof(buf) - 1, sk_ASN1_OBJECT_value(eku, i), 1); memset(buf, 0, sizeof(buf)); for (int i = 0; i < sk_ASN1_OBJECT_num(eku); i++) { Local ext_key_usage = Array::New(); if (eku != NULL) { x, NID_ext_key_usage, NULL, NULL); STACK_OF(ASN1_OBJECT) *eku = (STACK_OF(ASN1_OBJECT) *)X509_get_ext_d2i( //Extensions } fprintf(stderr, "Digest bad\n"); } else { info->Set(fingerprint_symbol, String::New(fingerprint)); } fingerprint[0] = '\0'; } else { fingerprint[(3*(n-1))+2] = '\0'; if (n > 0) { } fingerprint[(3*j)+2] = ':'; fingerprint[(3*j)+1] = hex[(md[j] & 0x0f)]; fingerprint[3*j] = hex[(md[j] & 0xf0) >> 4]; for (j=0; jSet(signature_symbol, String::New(sig_buf)); BIO_read(sig_bio, sig_buf, sizeof(sig_buf)-1); char sig_buf [n1*3]; } BIO_printf(sig_bio, "%02x%s", s[i], ((i+1) == n1) ? "":":"); for (int i=0; idata; unsigned int n1 = sigh->length; unsigned char *s;