31
31
static void parse(const char *msg)
33
OTRMessageType mtype = otrl_proto_message_type(msg);
33
OtrlMessageType mtype = otrl_proto_message_type(msg);
34
38
KeyExchMsg keyexch;
42
case OTRL_MSGTYPE_QUERY:
39
43
printf("OTR Query:\n\t%s\n\n", msg);
45
case OTRL_MSGTYPE_DH_COMMIT:
46
cmsg = parse_commit(msg);
48
printf("Invalid D-H Commit Message\n\n");
51
printf("D-H Commit Message:\n");
52
dump_data(stdout, "\tEncrypted Key", cmsg->enckey,
54
dump_data(stdout, "\tHashed Key", cmsg->hashkey,
59
case OTRL_MSGTYPE_DH_KEY:
60
kmsg = parse_key(msg);
62
printf("Invalid D-H Key Message\n\n");
65
printf("D-H Key Message:\n");
66
dump_mpi(stdout, "\tD-H Key", kmsg->y);
70
case OTRL_MSGTYPE_REVEALSIG:
71
rmsg = parse_revealsig(msg);
73
printf("Invalid Reveal Signature Message\n\n");
76
printf("Reveal Signature Message:\n");
77
dump_data(stdout, "\tKey", rmsg->key, rmsg->keylen);
78
dump_data(stdout, "\tEncrypted Signature",
79
rmsg->encsig, rmsg->encsiglen);
80
dump_data(stdout, "\tMAC", rmsg->mac, 20);
84
case OTRL_MSGTYPE_SIGNATURE:
85
smsg = parse_signature(msg);
87
printf("Invalid Signature Message\n\n");
90
printf("Signature Message:\n");
91
dump_data(stdout, "\tEncrypted Signature",
92
smsg->encsig, smsg->encsiglen);
93
dump_data(stdout, "\tMAC", smsg->mac, 20);
97
case OTRL_MSGTYPE_V1_KEYEXCH:
42
98
keyexch = parse_keyexch(msg);
44
100
printf("Invalid Key Exchange Message\n\n");
58
114
free_keyexch(keyexch);
116
case OTRL_MSGTYPE_DATA:
61
117
datamsg = parse_datamsg(msg);
63
119
printf("Invalid Data Message\n\n");
66
122
printf("Data Message:\n");
123
if (datamsg->flags >= 0) {
124
dump_int(stdout, "\tFlags", datamsg->flags);
67
126
dump_int(stdout, "\tSender keyid", datamsg->sender_keyid);
68
127
dump_int(stdout, "\tRcpt keyid", datamsg->rcpt_keyid);
69
128
dump_mpi(stdout, "\tDH y", datamsg->y);
77
136
unsigned int i = 0;
78
137
printf("\tRevealed MAC keys:\n");
82
141
sprintf(title, "\t\tKey %u", ++i);
83
142
dump_data(stdout, title, mks, 20);
89
148
free_datamsg(datamsg);
150
case OTRL_MSGTYPE_ERROR:
92
151
printf("OTR Error:\n\t%s\n\n", msg);
94
case OTR_TAGGEDPLAINTEXT:
153
case OTRL_MSGTYPE_TAGGEDPLAINTEXT:
95
154
printf("Tagged plaintext message:\n\t%s\n\n", msg);
156
case OTRL_MSGTYPE_NOTOTR:
98
157
printf("Not an OTR message:\n\t%s\n\n", msg);
159
case OTRL_MSGTYPE_UNKNOWN:
101
160
printf("Unrecognized OTR message:\n\t%s\n\n", msg);