CK_RV init_token_data(CK_SLOT_ID slot_id) { CK_RV rc; memset((char *)nv_token_data, 0, sizeof(nv_token_data)); // the normal USER pin is not set when the token is initialized // memcpy(nv_token_data->user_pin_sha, "00000000000000000000", SHA1_HASH_SIZE); memcpy(nv_token_data->so_pin_sha, default_so_pin_sha, SHA1_HASH_SIZE); memset(user_pin_md5, 0x0, MD5_HASH_SIZE); memcpy(so_pin_md5, default_so_pin_md5, MD5_HASH_SIZE); memcpy(nv_token_data->next_token_object_name, "00000000", 8); // generate the master key used for signing the Operation State information // ` memset(nv_token_data->token_info.label, ' ', sizeof(nv_token_data->token_info.label)); memcpy(nv_token_data->token_info.label, label, strlen((char *)label)); nv_token_data->tweak_vector.allow_weak_des = TRUE; nv_token_data->tweak_vector.check_des_parity = FALSE; nv_token_data->tweak_vector.allow_key_mods = TRUE; nv_token_data->tweak_vector.netscape_mods = TRUE; init_tokenInfo(); if (token_specific.t_init_token_data) { rc = token_specific.t_init_token_data(slot_id); if (rc != CKR_OK) return rc; } else { // // FIXME: erase the token object index file (and all token objects) // rc = generate_master_key(master_key); if (rc != CKR_OK) { TRACE_DEVEL("generate_master_key failed.\n"); return CKR_FUNCTION_FAILED; } rc = save_masterkey_so(); if (rc != CKR_OK) { TRACE_DEVEL("save_masterkey_so failed.\n"); return rc; } } rc = save_token_data(slot_id); return rc; }
CK_RV init_token_data( void ) { CK_RV rc; memset( (char *)nv_token_data, 0, sizeof(nv_token_data) ); // the normal USER pin is not set when the token is initialized // memcpy( nv_token_data->user_pin_sha, "00000000000000000000", SHA1_HASH_SIZE ); memcpy( nv_token_data->so_pin_sha, default_so_pin_sha, SHA1_HASH_SIZE ); memset( user_pin_md5, 0x0, MD5_HASH_SIZE ); memcpy( so_pin_md5, default_so_pin_md5, MD5_HASH_SIZE ); memcpy( nv_token_data->next_token_object_name, "00000000", 8 ); // generate the master key used for signing the Operation State information // ` memset( nv_token_data->token_info.label, ' ', sizeof(nv_token_data->token_info.label) ); memcpy( nv_token_data->token_info.label, label, strlen((char *)label) ); nv_token_data->tweak_vector.allow_weak_des = TRUE; nv_token_data->tweak_vector.check_des_parity = FALSE; nv_token_data->tweak_vector.allow_key_mods = TRUE; nv_token_data->tweak_vector.netscape_mods = TRUE; init_tokenInfo(); // // FIXME: erase the token object index file (and all token objects) // #if 0 rc = rng_generate( master_key, 3 * DES_KEY_SIZE ); if (rc != CKR_OK){ OCK_LOG_ERR(ERR_FUNCTION_FAILED); return CKR_FUNCTION_FAILED; } rc = save_masterkey_so(); if (rc != CKR_OK){ OCK_LOG_ERR(ERR_FUNCTION_FAILED); return CKR_FUNCTION_FAILED; } #endif rc = save_token_data(); if (rc != CKR_OK) OCK_LOG_ERR(ERR_FUNCTION_FAILED); return rc; }