diff options
Diffstat (limited to 'src/service/messenger/messenger_api_message.c')
-rw-r--r-- | src/service/messenger/messenger_api_message.c | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/src/service/messenger/messenger_api_message.c b/src/service/messenger/messenger_api_message.c index c7762d925..181431189 100644 --- a/src/service/messenger/messenger_api_message.c +++ b/src/service/messenger/messenger_api_message.c | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include "messenger_api_message.h" | 26 | #include "messenger_api_message.h" |
27 | 27 | ||
28 | #include "gnunet_common.h" | ||
28 | #include "gnunet_messenger_service.h" | 29 | #include "gnunet_messenger_service.h" |
29 | #include "gnunet_signatures.h" | 30 | #include "gnunet_signatures.h" |
30 | 31 | ||
@@ -1085,6 +1086,39 @@ decrypt_message (struct GNUNET_MESSENGER_Message *message, | |||
1085 | } | 1086 | } |
1086 | 1087 | ||
1087 | 1088 | ||
1089 | struct GNUNET_MESSENGER_Message* | ||
1090 | transcribe_message (const struct GNUNET_MESSENGER_Message *message, | ||
1091 | const struct GNUNET_CRYPTO_PublicKey *key) | ||
1092 | { | ||
1093 | GNUNET_assert ((message) && (key)); | ||
1094 | |||
1095 | struct GNUNET_MESSENGER_Message *transcript = create_message( | ||
1096 | GNUNET_MESSENGER_KIND_TRANSCRIPT); | ||
1097 | |||
1098 | if (!transcript) | ||
1099 | { | ||
1100 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Transcribing message failed!\n"); | ||
1101 | return NULL; | ||
1102 | } | ||
1103 | |||
1104 | GNUNET_memcpy(&(transcript->body.transcript.key), key, sizeof(transcript->body.transcript.key)); | ||
1105 | |||
1106 | struct GNUNET_MESSENGER_ShortMessage shortened; | ||
1107 | |||
1108 | fold_short_message (message, &shortened); | ||
1109 | |||
1110 | const uint16_t data_length = get_short_message_size ( | ||
1111 | &shortened, GNUNET_YES); | ||
1112 | |||
1113 | transcript->body.transcript.data = GNUNET_malloc (data_length); | ||
1114 | transcript->body.transcript.length = data_length; | ||
1115 | |||
1116 | encode_short_message (&shortened, data_length, transcript->body.transcript.data); | ||
1117 | |||
1118 | return transcript; | ||
1119 | } | ||
1120 | |||
1121 | |||
1088 | struct GNUNET_MQ_Envelope* | 1122 | struct GNUNET_MQ_Envelope* |
1089 | pack_message (struct GNUNET_MESSENGER_Message *message, | 1123 | pack_message (struct GNUNET_MESSENGER_Message *message, |
1090 | struct GNUNET_HashCode *hash, | 1124 | struct GNUNET_HashCode *hash, |
@@ -1197,7 +1231,7 @@ is_service_message (const struct GNUNET_MESSENGER_Message *message) | |||
1197 | case GNUNET_MESSENGER_KIND_TICKET: | 1231 | case GNUNET_MESSENGER_KIND_TICKET: |
1198 | return GNUNET_NO; | 1232 | return GNUNET_NO; |
1199 | case GNUNET_MESSENGER_KIND_TRANSCRIPT: | 1233 | case GNUNET_MESSENGER_KIND_TRANSCRIPT: |
1200 | return GNUNET_YES; // Allow access to self encrypted messages! | 1234 | return GNUNET_NO; |
1201 | case GNUNET_MESSENGER_KIND_TAG: | 1235 | case GNUNET_MESSENGER_KIND_TAG: |
1202 | return GNUNET_NO; | 1236 | return GNUNET_NO; |
1203 | default: | 1237 | default: |