void setup_test_rsa_keyptrs() { /* * set up key pointers */ assert(pub_keyring.nkeys); alpha_pub_keydata=ops_keyring_find_key_by_userid(&pub_keyring, alpha_user_id); bravo_pub_keydata=ops_keyring_find_key_by_userid(&pub_keyring, bravo_user_id); assert(alpha_pub_keydata); assert(bravo_pub_keydata); alpha_sec_keydata=ops_keyring_find_key_by_userid(&sec_keyring, alpha_user_id); bravo_sec_keydata=ops_keyring_find_key_by_userid(&sec_keyring, bravo_user_id); assert(alpha_sec_keydata); assert(bravo_sec_keydata); alpha_pkey=ops_get_public_key_from_data(alpha_pub_keydata); alpha_skey=ops_get_secret_key_from_data(alpha_sec_keydata); bravo_pkey=ops_get_public_key_from_data(bravo_pub_keydata); bravo_skey=ops_decrypt_secret_key_from_data(bravo_sec_keydata, bravo_passphrase); assert(alpha_pkey); assert(alpha_skey); assert(bravo_pkey); assert(bravo_skey); //not yet set because of passphrase }
void setup_test_dsa_keyptrs() { /* * set up key pointers */ assert(pub_keyring.nkeys); alphadsa_pub_keydata=ops_keyring_find_key_by_userid(&pub_keyring, alphadsa_user_id); bravodsa_pub_keydata=ops_keyring_find_key_by_userid(&pub_keyring, bravodsa_user_id); printf("%s\n", alphadsa_user_id); assert(alphadsa_pub_keydata); assert(bravodsa_pub_keydata); alphadsa_sec_keydata=ops_keyring_find_key_by_userid(&sec_keyring, alphadsa_user_id); bravodsa_sec_keydata=ops_keyring_find_key_by_userid(&sec_keyring, bravodsa_user_id); assert(alphadsa_sec_keydata); assert(bravodsa_sec_keydata); alphadsa_pkey=ops_get_public_key_from_data(alphadsa_pub_keydata); alphadsa_skey=ops_get_secret_key_from_data(alphadsa_sec_keydata); bravodsa_pkey=ops_get_public_key_from_data(bravodsa_pub_keydata); bravodsa_skey=ops_decrypt_secret_key_from_data(bravodsa_sec_keydata, bravodsa_passphrase); assert(alphadsa_pkey); assert(alphadsa_skey); assert(bravodsa_pkey); assert(bravodsa_skey); }
ops_parse_cb_return_t callback_cmd_get_secret_key(const ops_parser_content_t *content_,ops_parse_cb_info_t *cbinfo) { ops_parser_content_union_t* content=(ops_parser_content_union_t *)&content_->content; const ops_secret_key_t *secret; ops_parser_content_t pc; OPS_USED(cbinfo); // ops_print_packet(content_); switch(content_->tag) { case OPS_PARSER_CMD_GET_SECRET_KEY: cbinfo->cryptinfo.keydata=ops_keyring_find_key_by_id(cbinfo->cryptinfo.keyring,content->get_secret_key.pk_session_key->key_id); if (!cbinfo->cryptinfo.keydata || !ops_is_key_secret(cbinfo->cryptinfo.keydata)) return 0; /* now get the key from the data */ secret=ops_get_secret_key_from_data(cbinfo->cryptinfo.keydata); int tag_to_use = OPS_PARSER_CMD_GET_SK_PASSPHRASE ; int nbtries = 0 ; while( (!secret) && nbtries++ < 3) { if (!cbinfo->cryptinfo.passphrase) { memset(&pc,'\0',sizeof pc); pc.content.secret_key_passphrase.passphrase=&cbinfo->cryptinfo.passphrase; CB(cbinfo,tag_to_use,&pc); if (!cbinfo->cryptinfo.passphrase) { fprintf(stderr,"can't get passphrase\n"); assert(0); } } /* then it must be encrypted */ secret=ops_decrypt_secret_key_from_data(cbinfo->cryptinfo.keydata,cbinfo->cryptinfo.passphrase); free(cbinfo->cryptinfo.passphrase) ; cbinfo->cryptinfo.passphrase = NULL ; tag_to_use = OPS_PARSER_CMD_GET_SK_PASSPHRASE_PREV_WAS_BAD ; } if(!secret) return 0 ; *content->get_secret_key.secret_key=secret; break; default: // return callback_general(content_,cbinfo); break; } return OPS_RELEASE_MEMORY; }