/** \ingroup Core_Errors \brief print this error \param err Error to print */ void ops_print_error(ops_error_t *err) { printf("%s:%d: ",err->file,err->line); if(err->errcode==OPS_E_SYSTEM_ERROR) printf("system error %d returned from %s()\n",err->sys_errno, err->comment); else printf("%s, %s\n",ops_errcode(err->errcode),err->comment); }
ops_parse_cb_return_t callback_general(const ops_parser_content_t *content_,ops_parse_cb_info_t *cbinfo) { int debug=0; const ops_parser_content_union_t* content=&content_->content; OPS_USED(cbinfo); // ops_print_packet(content_); switch(content_->tag) { case OPS_PARSER_PTAG: case OPS_PTAG_CT_COMPRESSED: // ignore break; case OPS_PARSER_PACKET_END: // print raw packet if (debug) { unsigned i=0; fprintf(stderr,"***\n***Raw Packet:\n"); for (i=0 ; i < content_->content.packet.length ; i++) { fprintf(stderr,"0x%02x ", content_->content.packet.raw[i]); if (!((i+1) % 16)) fprintf(stderr, "\n"); else if (!((i+1) % 8)) fprintf(stderr, " "); } fprintf(stderr, "\n"); } break; case OPS_PARSER_ERROR: printf("parse error: %s\n", content->error.error); break; case OPS_PARSER_ERRCODE: printf("parse error: %s\n", ops_errcode(content->errcode.errcode)); break; default: fprintf(stderr,"Unexpected packet tag=%d (0x%x)\n",content_->tag, content_->tag); assert(0); } return OPS_RELEASE_MEMORY; }
static ops_parse_cb_return_t decrypt_cb(const ops_parser_content_t *content_, ops_parse_cb_info_t *cbinfo) { const ops_parser_content_union_t *content=&content_->content; decrypt_arg_t *arg=ops_parse_cb_get_arg(cbinfo); OPS_USED(cbinfo); switch(content_->tag) { case OPS_PARSER_PTAG: case OPS_PTAG_CT_USER_ID: case OPS_PTAG_CT_SIGNATURE: case OPS_PTAG_CT_SIGNATURE_HEADER: case OPS_PTAG_CT_SIGNATURE_FOOTER: case OPS_PTAG_CT_TRUST: break; case OPS_PARSER_CMD_GET_SK_PASSPHRASE: *content->secret_key_passphrase.passphrase=arg->pphrase; return OPS_KEEP_MEMORY; case OPS_PARSER_ERRCODE: switch(content->errcode.errcode) { case OPS_E_P_MPI_FORMAT_ERROR: /* Generally this means a bad passphrase */ fprintf(stderr,"Bad passphrase!\n"); goto done; case OPS_E_P_PACKET_CONSUMED: /* And this is because of an error we've accepted */ goto done; default: fprintf(stderr,"parse error: %s\n", ops_errcode(content->errcode.errcode)); assert(0); break; } break; case OPS_PARSER_ERROR: printf("parse error: %s\n",content->error.error); assert(0); break; case OPS_PTAG_CT_SECRET_KEY: arg->skey=malloc(sizeof *arg->skey); *arg->skey=content->secret_key; return OPS_KEEP_MEMORY; case OPS_PARSER_PACKET_END: // nothing to do break; default: fprintf(stderr,"Unexpected tag %d (0x%x)\n",content_->tag, content_->tag); assert(0); } done: return OPS_RELEASE_MEMORY; }