equal
deleted
inserted
replaced
20 #include "com_nokia_mj_impl_security_midp_authentication_AuthenticationModule.h" |
20 #include "com_nokia_mj_impl_security_midp_authentication_AuthenticationModule.h" |
21 #include "midpauthenticationmodule.h" |
21 #include "midpauthenticationmodule.h" |
22 #include "midpauthenticationmoduleimpl.h" |
22 #include "midpauthenticationmoduleimpl.h" |
23 #include "storagehandler.h" |
23 #include "storagehandler.h" |
24 #include "securityutils.h" |
24 #include "securityutils.h" |
|
25 #include "telutils.h" |
25 #include "javacertstorehandler.h" |
26 #include "javacertstorehandler.h" |
26 #include "securitycommsmessagedefs.h" |
27 #include "securitycommsmessagedefs.h" |
27 #include "javastorage.h" |
28 #include "javastorage.h" |
28 #include "javastoragenames.h" |
29 #include "javastoragenames.h" |
29 #include "logger.h" |
30 #include "logger.h" |
36 #include <openssl/x509_vfy.h> |
37 #include <openssl/x509_vfy.h> |
37 #include <openssl/asn1.h> |
38 #include <openssl/asn1.h> |
38 #include <openssl/err.h> |
39 #include <openssl/err.h> |
39 #include <openssl/rsa.h> |
40 #include <openssl/rsa.h> |
40 #include <openssl/sha.h> |
41 #include <openssl/sha.h> |
41 #include <sys/time.h> |
|
42 #include <string.h> |
42 #include <string.h> |
|
43 #include <errno.h> |
43 |
44 |
44 using namespace java::security; |
45 using namespace java::security; |
45 using namespace java::storage; |
46 using namespace java::storage; |
46 using namespace java::util; |
47 using namespace java::util; |
47 using namespace std; |
48 using namespace std; |
249 { |
250 { |
250 jstring hash = env->NewStringUTF(jar_hash_value); |
251 jstring hash = env->NewStringUTF(jar_hash_value); |
251 delete[] jar_hash_value; |
252 delete[] jar_hash_value; |
252 jar_hash_value = NULL; |
253 jar_hash_value = NULL; |
253 return hash; |
254 return hash; |
|
255 } |
|
256 else |
|
257 { |
|
258 if (errno == ENOENT) |
|
259 { |
|
260 SecurityUtils::throw_exception(env, "JAR_NOT_FOUND"); |
|
261 } |
254 } |
262 } |
255 return NULL; |
263 return NULL; |
256 } |
264 } |
257 |
265 |
258 JNIEXPORT jobject JNICALL Java_com_nokia_mj_impl_security_midp_authentication_AuthenticationModule__1parseCertificate |
266 JNIEXPORT jobject JNICALL Java_com_nokia_mj_impl_security_midp_authentication_AuthenticationModule__1parseCertificate |
453 { |
461 { |
454 ret_code = getErrCode(ERR_get_error()); |
462 ret_code = getErrCode(ERR_get_error()); |
455 break; |
463 break; |
456 } |
464 } |
457 |
465 |
458 struct timeval tv; |
466 X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, TelUtils::getSecureTime()); |
459 int i = gettimeofday(&tv, NULL); |
|
460 X509_STORE_CTX_set_time(x509_ctx, X509_V_FLAG_USE_CHECK_TIME, tv.tv_sec); |
|
461 // set the callback for validation - needed for the critical extension |
467 // set the callback for validation - needed for the critical extension |
462 // used by developer certificates |
468 // used by developer certificates |
463 X509_STORE_CTX_set_verify_cb(x509_ctx, verify_callback); |
469 X509_STORE_CTX_set_verify_cb(x509_ctx, verify_callback); |
464 |
470 |
465 // verify certificate |
471 // verify certificate |
473 EXTENDED_KEY_USAGE *extKeyUsage; |
479 EXTENDED_KEY_USAGE *extKeyUsage; |
474 if ((extKeyUsage=(EXTENDED_KEY_USAGE*)X509_get_ext_d2i(end_entity_cert, NID_ext_key_usage, NULL, NULL)) != NULL) |
480 if ((extKeyUsage=(EXTENDED_KEY_USAGE*)X509_get_ext_d2i(end_entity_cert, NID_ext_key_usage, NULL, NULL)) != NULL) |
475 { |
481 { |
476 bool extKeyUsageKnown = false; |
482 bool extKeyUsageKnown = false; |
477 char EXT_KEY_USAGE_OID[80]; |
483 char EXT_KEY_USAGE_OID[80]; |
478 for (i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++) |
484 for (int i = 0; i < sk_ASN1_OBJECT_num(extKeyUsage); i++) |
479 { |
485 { |
480 ASN1_OBJECT *usage = sk_ASN1_OBJECT_value(extKeyUsage,i); |
486 ASN1_OBJECT *usage = sk_ASN1_OBJECT_value(extKeyUsage,i); |
481 OBJ_obj2txt(EXT_KEY_USAGE_OID, |
487 OBJ_obj2txt(EXT_KEY_USAGE_OID, |
482 sizeof(EXT_KEY_USAGE_OID), |
488 sizeof(EXT_KEY_USAGE_OID), |
483 usage, |
489 usage, |