diff options
Diffstat (limited to 'src/service/messenger/messenger_api_message.c')
-rw-r--r-- | src/service/messenger/messenger_api_message.c | 253 |
1 files changed, 188 insertions, 65 deletions
diff --git a/src/service/messenger/messenger_api_message.c b/src/service/messenger/messenger_api_message.c index 1f7e8dbf2..3ccbbd378 100644 --- a/src/service/messenger/messenger_api_message.c +++ b/src/service/messenger/messenger_api_message.c | |||
@@ -233,6 +233,9 @@ get_message_body_kind_size (enum GNUNET_MESSENGER_MessageKind kind) | |||
233 | length += member_size (struct GNUNET_MESSENGER_Message, body.file.hash); | 233 | length += member_size (struct GNUNET_MESSENGER_Message, body.file.hash); |
234 | length += member_size (struct GNUNET_MESSENGER_Message, body.file.name); | 234 | length += member_size (struct GNUNET_MESSENGER_Message, body.file.name); |
235 | break; | 235 | break; |
236 | case GNUNET_MESSENGER_KIND_PRIVATE: | ||
237 | length += member_size (struct GNUNET_MESSENGER_Message, body.privacy.key); | ||
238 | break; | ||
236 | case GNUNET_MESSENGER_KIND_DELETE: | 239 | case GNUNET_MESSENGER_KIND_DELETE: |
237 | length += member_size (struct GNUNET_MESSENGER_Message, body.deletion.hash); | 240 | length += member_size (struct GNUNET_MESSENGER_Message, body.deletion.hash); |
238 | length += member_size (struct GNUNET_MESSENGER_Message, | 241 | length += member_size (struct GNUNET_MESSENGER_Message, |
@@ -275,9 +278,6 @@ get_message_body_size (enum GNUNET_MESSENGER_MessageKind kind, | |||
275 | 278 | ||
276 | switch (kind) | 279 | switch (kind) |
277 | { | 280 | { |
278 | case GNUNET_MESSENGER_KIND_INFO: | ||
279 | length += GNUNET_CRYPTO_public_key_get_length (&(body->info.host_key)); | ||
280 | break; | ||
281 | case GNUNET_MESSENGER_KIND_JOIN: | 281 | case GNUNET_MESSENGER_KIND_JOIN: |
282 | length += GNUNET_CRYPTO_public_key_get_length (&(body->join.key)); | 282 | length += GNUNET_CRYPTO_public_key_get_length (&(body->join.key)); |
283 | break; | 283 | break; |
@@ -390,32 +390,32 @@ calc_padded_length (uint16_t length) | |||
390 | #define min(x, y) (x < y? x : y) | 390 | #define min(x, y) (x < y? x : y) |
391 | 391 | ||
392 | #define encode_step_ext(dst, offset, src, size) do { \ | 392 | #define encode_step_ext(dst, offset, src, size) do { \ |
393 | GNUNET_memcpy (dst + offset, src, size); \ | 393 | GNUNET_memcpy (dst + offset, src, size); \ |
394 | offset += size; \ | 394 | offset += size; \ |
395 | } while (0) | 395 | } while (0) |
396 | 396 | ||
397 | #define encode_step(dst, offset, src) do { \ | 397 | #define encode_step(dst, offset, src) do { \ |
398 | encode_step_ext (dst, offset, src, sizeof(*src)); \ | 398 | encode_step_ext (dst, offset, src, sizeof(*src)); \ |
399 | } while (0) | 399 | } while (0) |
400 | 400 | ||
401 | #define encode_step_key(dst, offset, src, length) do { \ | 401 | #define encode_step_key(dst, offset, src, length) do { \ |
402 | ssize_t result = GNUNET_CRYPTO_write_public_key_to_buffer ( \ | 402 | ssize_t result = GNUNET_CRYPTO_write_public_key_to_buffer ( \ |
403 | src, dst + offset, length - offset \ | 403 | src, dst + offset, length - offset \ |
404 | ); \ | 404 | ); \ |
405 | if (result < 0) \ | 405 | if (result < 0) \ |
406 | GNUNET_break (0); \ | 406 | GNUNET_break (0); \ |
407 | else \ | 407 | else \ |
408 | offset += result; \ | 408 | offset += result; \ |
409 | } while (0) | 409 | } while (0) |
410 | 410 | ||
411 | #define encode_step_signature(dst, offset, src, length) do { \ | 411 | #define encode_step_signature(dst, offset, src, length) do { \ |
412 | ssize_t result = GNUNET_CRYPTO_write_signature_to_buffer ( \ | 412 | ssize_t result = GNUNET_CRYPTO_write_signature_to_buffer ( \ |
413 | src, dst + offset, length - offset \ | 413 | src, dst + offset, length - offset \ |
414 | ); \ | 414 | ); \ |
415 | if (result < 0) \ | 415 | if (result < 0) \ |
416 | GNUNET_break (0); \ | 416 | GNUNET_break (0); \ |
417 | else \ | 417 | else \ |
418 | offset += result; \ | 418 | offset += result; \ |
419 | } while (0) | 419 | } while (0) |
420 | 420 | ||
421 | static void | 421 | static void |
@@ -431,7 +431,6 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, | |||
431 | case GNUNET_MESSENGER_KIND_INFO: | 431 | case GNUNET_MESSENGER_KIND_INFO: |
432 | version = GNUNET_htobe32 (body->info.messenger_version); | 432 | version = GNUNET_htobe32 (body->info.messenger_version); |
433 | 433 | ||
434 | encode_step_key (buffer, offset, &(body->info.host_key), length); | ||
435 | encode_step (buffer, offset, &version); | 434 | encode_step (buffer, offset, &version); |
436 | break; | 435 | break; |
437 | case GNUNET_MESSENGER_KIND_JOIN: | 436 | case GNUNET_MESSENGER_KIND_JOIN: |
@@ -479,6 +478,7 @@ encode_message_body (enum GNUNET_MESSENGER_MessageKind kind, | |||
479 | body->file.uri))); | 478 | body->file.uri))); |
480 | break; | 479 | break; |
481 | case GNUNET_MESSENGER_KIND_PRIVATE: | 480 | case GNUNET_MESSENGER_KIND_PRIVATE: |
481 | encode_step (buffer, offset, &(body->privacy.key)); | ||
482 | encode_step_ext (buffer, offset, body->privacy.data, min (length - offset, | 482 | encode_step_ext (buffer, offset, body->privacy.data, min (length - offset, |
483 | body->privacy. | 483 | body->privacy. |
484 | length)); | 484 | length)); |
@@ -564,30 +564,30 @@ encode_short_message (const struct GNUNET_MESSENGER_ShortMessage *message, | |||
564 | 564 | ||
565 | 565 | ||
566 | #define decode_step_ext(src, offset, dst, size) do { \ | 566 | #define decode_step_ext(src, offset, dst, size) do { \ |
567 | GNUNET_memcpy (dst, src + offset, size); \ | 567 | GNUNET_memcpy (dst, src + offset, size); \ |
568 | offset += size; \ | 568 | offset += size; \ |
569 | } while (0) | 569 | } while (0) |
570 | 570 | ||
571 | #define decode_step(src, offset, dst) do { \ | 571 | #define decode_step(src, offset, dst) do { \ |
572 | decode_step_ext (src, offset, dst, sizeof(*dst)); \ | 572 | decode_step_ext (src, offset, dst, sizeof(*dst)); \ |
573 | } while (0) | 573 | } while (0) |
574 | 574 | ||
575 | #define decode_step_malloc(src, offset, dst, size, zero) do { \ | 575 | #define decode_step_malloc(src, offset, dst, size, zero) do { \ |
576 | dst = GNUNET_malloc (size + zero); \ | 576 | dst = GNUNET_malloc (size + zero); \ |
577 | if (zero) dst[size] = 0; \ | 577 | if (zero) dst[size] = 0; \ |
578 | decode_step_ext (src, offset, dst, size); \ | 578 | decode_step_ext (src, offset, dst, size); \ |
579 | } while (0) | 579 | } while (0) |
580 | 580 | ||
581 | #define decode_step_key(src, offset, dst, length) do { \ | 581 | #define decode_step_key(src, offset, dst, length) do { \ |
582 | enum GNUNET_GenericReturnValue result; \ | 582 | enum GNUNET_GenericReturnValue result; \ |
583 | size_t read; \ | 583 | size_t read; \ |
584 | result = GNUNET_CRYPTO_read_public_key_from_buffer ( \ | 584 | result = GNUNET_CRYPTO_read_public_key_from_buffer ( \ |
585 | src + offset, length - offset, dst, &read \ | 585 | src + offset, length - offset, dst, &read \ |
586 | ); \ | 586 | ); \ |
587 | if (GNUNET_SYSERR == result) \ | 587 | if (GNUNET_SYSERR == result) \ |
588 | GNUNET_break (0); \ | 588 | GNUNET_break (0); \ |
589 | else \ | 589 | else \ |
590 | offset += read; \ | 590 | offset += read; \ |
591 | } while (0) | 591 | } while (0) |
592 | 592 | ||
593 | static uint16_t | 593 | static uint16_t |
@@ -615,7 +615,6 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind *kind, | |||
615 | switch (*kind) | 615 | switch (*kind) |
616 | { | 616 | { |
617 | case GNUNET_MESSENGER_KIND_INFO: { | 617 | case GNUNET_MESSENGER_KIND_INFO: { |
618 | decode_step_key (buffer, offset, &(body->info.host_key), length); | ||
619 | decode_step (buffer, offset, &version); | 618 | decode_step (buffer, offset, &version); |
620 | 619 | ||
621 | body->info.messenger_version = GNUNET_be32toh (version); | 620 | body->info.messenger_version = GNUNET_be32toh (version); |
@@ -661,6 +660,8 @@ decode_message_body (enum GNUNET_MESSENGER_MessageKind *kind, | |||
661 | decode_step_malloc (buffer, offset, body->file.uri, length - offset, 1); | 660 | decode_step_malloc (buffer, offset, body->file.uri, length - offset, 1); |
662 | break; | 661 | break; |
663 | case GNUNET_MESSENGER_KIND_PRIVATE: | 662 | case GNUNET_MESSENGER_KIND_PRIVATE: |
663 | decode_step (buffer, offset, &(body->privacy.key)); | ||
664 | |||
664 | body->privacy.length = (length - offset); | 665 | body->privacy.length = (length - offset); |
665 | decode_step_malloc (buffer, offset, body->privacy.data, length - offset, 0); | 666 | decode_step_malloc (buffer, offset, body->privacy.data, length - offset, 0); |
666 | break; | 667 | break; |
@@ -801,9 +802,39 @@ sign_message (struct GNUNET_MESSENGER_Message *message, | |||
801 | uint16_t length, | 802 | uint16_t length, |
802 | char *buffer, | 803 | char *buffer, |
803 | const struct GNUNET_HashCode *hash, | 804 | const struct GNUNET_HashCode *hash, |
804 | const struct GNUNET_MESSENGER_Ego *ego) | 805 | const struct GNUNET_CRYPTO_PrivateKey *key) |
806 | { | ||
807 | GNUNET_assert ((message) && (buffer) && (hash) && (key)); | ||
808 | |||
809 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sign message by member: %s\n", | ||
810 | GNUNET_h2s (hash)); | ||
811 | |||
812 | struct GNUNET_MESSENGER_MessageSignature signature; | ||
813 | |||
814 | signature.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_CHAT_MESSAGE); | ||
815 | signature.purpose.size = htonl (sizeof(signature)); | ||
816 | |||
817 | GNUNET_memcpy (&(signature.hash), hash, sizeof(struct GNUNET_HashCode)); | ||
818 | GNUNET_CRYPTO_sign (key, &signature, &(message->header.signature)); | ||
819 | |||
820 | message->header.signature.type = key->type; | ||
821 | |||
822 | uint16_t offset = 0; | ||
823 | encode_step_signature (buffer, offset, &(message->header.signature), length); | ||
824 | } | ||
825 | |||
826 | |||
827 | void | ||
828 | sign_message_by_peer (struct GNUNET_MESSENGER_Message *message, | ||
829 | uint16_t length, | ||
830 | char *buffer, | ||
831 | const struct GNUNET_HashCode *hash, | ||
832 | const struct GNUNET_CONFIGURATION_Handle *cfg) | ||
805 | { | 833 | { |
806 | GNUNET_assert ((message) && (buffer) && (hash) && (ego)); | 834 | GNUNET_assert ((message) && (buffer) && (hash) && (cfg)); |
835 | |||
836 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sign message by peer: %s\n", | ||
837 | GNUNET_h2s (hash)); | ||
807 | 838 | ||
808 | struct GNUNET_MESSENGER_MessageSignature signature; | 839 | struct GNUNET_MESSENGER_MessageSignature signature; |
809 | 840 | ||
@@ -811,7 +842,11 @@ sign_message (struct GNUNET_MESSENGER_Message *message, | |||
811 | signature.purpose.size = htonl (sizeof(signature)); | 842 | signature.purpose.size = htonl (sizeof(signature)); |
812 | 843 | ||
813 | GNUNET_memcpy (&(signature.hash), hash, sizeof(struct GNUNET_HashCode)); | 844 | GNUNET_memcpy (&(signature.hash), hash, sizeof(struct GNUNET_HashCode)); |
814 | GNUNET_CRYPTO_sign (&(ego->priv), &signature, &(message->header.signature)); | 845 | GNUNET_CRYPTO_sign_by_peer_identity (cfg, &signature.purpose, |
846 | &(message->header.signature. | ||
847 | eddsa_signature)); | ||
848 | |||
849 | message->header.signature.type = htonl (GNUNET_PUBLIC_KEY_TYPE_EDDSA); | ||
815 | 850 | ||
816 | uint16_t offset = 0; | 851 | uint16_t offset = 0; |
817 | encode_step_signature (buffer, offset, &(message->header.signature), length); | 852 | encode_step_signature (buffer, offset, &(message->header.signature), length); |
@@ -825,7 +860,7 @@ verify_message (const struct GNUNET_MESSENGER_Message *message, | |||
825 | { | 860 | { |
826 | GNUNET_assert ((message) && (hash) && (key)); | 861 | GNUNET_assert ((message) && (hash) && (key)); |
827 | 862 | ||
828 | if (ntohl (key->type) != ntohl (message->header.signature.type)) | 863 | if (key->type != message->header.signature.type) |
829 | return GNUNET_SYSERR; | 864 | return GNUNET_SYSERR; |
830 | 865 | ||
831 | struct GNUNET_MESSENGER_MessageSignature signature; | 866 | struct GNUNET_MESSENGER_MessageSignature signature; |
@@ -842,11 +877,38 @@ verify_message (const struct GNUNET_MESSENGER_Message *message, | |||
842 | 877 | ||
843 | 878 | ||
844 | int | 879 | int |
880 | verify_message_by_peer (const struct GNUNET_MESSENGER_Message *message, | ||
881 | const struct GNUNET_HashCode *hash, | ||
882 | const struct GNUNET_PeerIdentity *identity) | ||
883 | { | ||
884 | GNUNET_assert ((message) && (hash) && (identity)); | ||
885 | |||
886 | if (ntohl (GNUNET_PUBLIC_KEY_TYPE_EDDSA) != message->header.signature.type) | ||
887 | return GNUNET_SYSERR; | ||
888 | |||
889 | struct GNUNET_MESSENGER_MessageSignature signature; | ||
890 | |||
891 | signature.purpose.purpose = htonl (GNUNET_SIGNATURE_PURPOSE_CHAT_MESSAGE); | ||
892 | signature.purpose.size = htonl (sizeof(signature)); | ||
893 | |||
894 | GNUNET_memcpy (&(signature.hash), hash, sizeof(struct GNUNET_HashCode)); | ||
895 | |||
896 | return GNUNET_CRYPTO_verify_peer_identity ( | ||
897 | GNUNET_SIGNATURE_PURPOSE_CHAT_MESSAGE, &signature.purpose, | ||
898 | &(message->header.signature. | ||
899 | eddsa_signature), identity); | ||
900 | } | ||
901 | |||
902 | |||
903 | int | ||
845 | encrypt_message (struct GNUNET_MESSENGER_Message *message, | 904 | encrypt_message (struct GNUNET_MESSENGER_Message *message, |
846 | const struct GNUNET_CRYPTO_PublicKey *key) | 905 | const struct GNUNET_CRYPTO_PublicKey *key) |
847 | { | 906 | { |
848 | GNUNET_assert ((message) && (key)); | 907 | GNUNET_assert ((message) && (key)); |
849 | 908 | ||
909 | if (GNUNET_YES == is_service_message (message)) | ||
910 | return GNUNET_NO; | ||
911 | |||
850 | struct GNUNET_MESSENGER_ShortMessage shortened; | 912 | struct GNUNET_MESSENGER_ShortMessage shortened; |
851 | 913 | ||
852 | fold_short_message (message, &shortened); | 914 | fold_short_message (message, &shortened); |
@@ -867,10 +929,10 @@ encrypt_message (struct GNUNET_MESSENGER_Message *message, | |||
867 | encode_short_message (&shortened, encoded_length, message->body.privacy.data); | 929 | encode_short_message (&shortened, encoded_length, message->body.privacy.data); |
868 | 930 | ||
869 | if (GNUNET_OK != GNUNET_CRYPTO_encrypt (message->body.privacy.data, | 931 | if (GNUNET_OK != GNUNET_CRYPTO_encrypt (message->body.privacy.data, |
870 | encoded_length, | 932 | encoded_length, |
871 | key, | 933 | key, |
872 | message->body.privacy.data, | 934 | message->body.privacy.data, |
873 | padded_length)) | 935 | padded_length)) |
874 | { | 936 | { |
875 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Encrypting message failed!\n"); | 937 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Encrypting message failed!\n"); |
876 | 938 | ||
@@ -904,10 +966,10 @@ decrypt_message (struct GNUNET_MESSENGER_Message *message, | |||
904 | ); | 966 | ); |
905 | 967 | ||
906 | if (GNUNET_OK != GNUNET_CRYPTO_decrypt (message->body.privacy.data, | 968 | if (GNUNET_OK != GNUNET_CRYPTO_decrypt (message->body.privacy.data, |
907 | padded_length, | 969 | padded_length, |
908 | key, | 970 | key, |
909 | message->body.privacy.data, | 971 | message->body.privacy.data, |
910 | encoded_length)) | 972 | encoded_length)) |
911 | { | 973 | { |
912 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Decrypting message failed!\n"); | 974 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Decrypting message failed!\n"); |
913 | 975 | ||
@@ -934,15 +996,13 @@ decrypt_message (struct GNUNET_MESSENGER_Message *message, | |||
934 | struct GNUNET_MQ_Envelope* | 996 | struct GNUNET_MQ_Envelope* |
935 | pack_message (struct GNUNET_MESSENGER_Message *message, | 997 | pack_message (struct GNUNET_MESSENGER_Message *message, |
936 | struct GNUNET_HashCode *hash, | 998 | struct GNUNET_HashCode *hash, |
937 | const struct GNUNET_MESSENGER_Ego *ego, | 999 | const GNUNET_MESSENGER_SignFunction sign, |
938 | int mode) | 1000 | int mode, |
1001 | const void *cls) | ||
939 | { | 1002 | { |
940 | GNUNET_assert (message); | 1003 | GNUNET_assert (message); |
941 | 1004 | ||
942 | if (ego) | 1005 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
943 | message->header.signature.type = ego->priv.type; | ||
944 | |||
945 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
946 | "Packing message kind=%u and sender: %s\n", | 1006 | "Packing message kind=%u and sender: %s\n", |
947 | message->header.kind, GNUNET_sh2s (&(message->header.sender_id))); | 1007 | message->header.kind, GNUNET_sh2s (&(message->header.sender_id))); |
948 | 1008 | ||
@@ -974,8 +1034,8 @@ pack_message (struct GNUNET_MESSENGER_Message *message, | |||
974 | { | 1034 | { |
975 | hash_message (message, length, buffer, hash); | 1035 | hash_message (message, length, buffer, hash); |
976 | 1036 | ||
977 | if (ego) | 1037 | if (sign) |
978 | sign_message (message, length, buffer, hash, ego); | 1038 | sign (cls, message, length, buffer, hash); |
979 | } | 1039 | } |
980 | 1040 | ||
981 | if (GNUNET_MESSENGER_PACK_MODE_ENVELOPE != mode) | 1041 | if (GNUNET_MESSENGER_PACK_MODE_ENVELOPE != mode) |
@@ -986,8 +1046,71 @@ pack_message (struct GNUNET_MESSENGER_Message *message, | |||
986 | 1046 | ||
987 | 1047 | ||
988 | int | 1048 | int |
1049 | is_peer_message (const struct GNUNET_MESSENGER_Message *message) | ||
1050 | { | ||
1051 | switch (message->header.kind) | ||
1052 | { | ||
1053 | case GNUNET_MESSENGER_KIND_INFO: | ||
1054 | case GNUNET_MESSENGER_KIND_PEER: | ||
1055 | case GNUNET_MESSENGER_KIND_MISS: | ||
1056 | case GNUNET_MESSENGER_KIND_MERGE: | ||
1057 | return GNUNET_YES; | ||
1058 | default: | ||
1059 | return GNUNET_NO; | ||
1060 | } | ||
1061 | } | ||
1062 | |||
1063 | |||
1064 | int | ||
1065 | is_service_message (const struct GNUNET_MESSENGER_Message *message) | ||
1066 | { | ||
1067 | if (GNUNET_YES == is_peer_message (message)) | ||
1068 | return GNUNET_YES; | ||
1069 | |||
1070 | switch (message->header.kind) | ||
1071 | { | ||
1072 | case GNUNET_MESSENGER_KIND_INFO: | ||
1073 | return GNUNET_YES; // Reserved for connection handling only! | ||
1074 | case GNUNET_MESSENGER_KIND_JOIN: | ||
1075 | return GNUNET_YES; // Reserved for member handling only! | ||
1076 | case GNUNET_MESSENGER_KIND_LEAVE: | ||
1077 | return GNUNET_YES; // Reserved for member handling only! | ||
1078 | case GNUNET_MESSENGER_KIND_NAME: | ||
1079 | return GNUNET_YES; // Reserved for member name handling only! | ||
1080 | case GNUNET_MESSENGER_KIND_KEY: | ||
1081 | return GNUNET_YES; // Reserved for member key handling only! | ||
1082 | case GNUNET_MESSENGER_KIND_PEER: | ||
1083 | return GNUNET_YES; // Reserved for connection handling only! | ||
1084 | case GNUNET_MESSENGER_KIND_ID: | ||
1085 | return GNUNET_YES; // Reserved for member id handling only! | ||
1086 | case GNUNET_MESSENGER_KIND_MISS: | ||
1087 | return GNUNET_YES; // Reserved for connection handling only! | ||
1088 | case GNUNET_MESSENGER_KIND_MERGE: | ||
1089 | return GNUNET_YES; // Reserved for peers only! | ||
1090 | case GNUNET_MESSENGER_KIND_REQUEST: | ||
1091 | return GNUNET_YES; // Requests should not apply individually! (inefficieny) | ||
1092 | case GNUNET_MESSENGER_KIND_INVITE: | ||
1093 | return GNUNET_NO; | ||
1094 | case GNUNET_MESSENGER_KIND_TEXT: | ||
1095 | return GNUNET_NO; | ||
1096 | case GNUNET_MESSENGER_KIND_FILE: | ||
1097 | return GNUNET_NO; | ||
1098 | case GNUNET_MESSENGER_KIND_PRIVATE: | ||
1099 | return GNUNET_YES; // Prevent duplicate encryption breaking all access! | ||
1100 | case GNUNET_MESSENGER_KIND_DELETE: | ||
1101 | return GNUNET_YES; // Deletion should not apply individually! (inefficieny) | ||
1102 | default: | ||
1103 | return GNUNET_SYSERR; | ||
1104 | } | ||
1105 | } | ||
1106 | |||
1107 | |||
1108 | int | ||
989 | filter_message_sending (const struct GNUNET_MESSENGER_Message *message) | 1109 | filter_message_sending (const struct GNUNET_MESSENGER_Message *message) |
990 | { | 1110 | { |
1111 | if (GNUNET_YES == is_peer_message (message)) | ||
1112 | return GNUNET_SYSERR; // Requires signature of peer rather than ego! | ||
1113 | |||
991 | switch (message->header.kind) | 1114 | switch (message->header.kind) |
992 | { | 1115 | { |
993 | case GNUNET_MESSENGER_KIND_INFO: | 1116 | case GNUNET_MESSENGER_KIND_INFO: |
@@ -999,15 +1122,15 @@ filter_message_sending (const struct GNUNET_MESSENGER_Message *message) | |||
999 | case GNUNET_MESSENGER_KIND_NAME: | 1122 | case GNUNET_MESSENGER_KIND_NAME: |
1000 | return GNUNET_YES; | 1123 | return GNUNET_YES; |
1001 | case GNUNET_MESSENGER_KIND_KEY: | 1124 | case GNUNET_MESSENGER_KIND_KEY: |
1002 | return GNUNET_NO; // Use #GNUNET_MESSENGER_update(...) instead! | 1125 | return GNUNET_NO; // Use #GNUNET_MESSENGER_set_key_by_ego(...) instead! |
1003 | case GNUNET_MESSENGER_KIND_PEER: | 1126 | case GNUNET_MESSENGER_KIND_PEER: |
1004 | return GNUNET_NO; // Use #GNUNET_MESSENGER_open_room(...) instead! | 1127 | return GNUNET_SYSERR; // Use #GNUNET_MESSENGER_open_room(...) instead! |
1005 | case GNUNET_MESSENGER_KIND_ID: | 1128 | case GNUNET_MESSENGER_KIND_ID: |
1006 | return GNUNET_SYSERR; // Reserved for member id handling only! | 1129 | return GNUNET_NO; // Reserved for member id handling only! |
1007 | case GNUNET_MESSENGER_KIND_MISS: | 1130 | case GNUNET_MESSENGER_KIND_MISS: |
1008 | return GNUNET_SYSERR; // Reserved for connection handling only! | 1131 | return GNUNET_SYSERR; // Reserved for connection handling only! |
1009 | case GNUNET_MESSENGER_KIND_MERGE: | 1132 | case GNUNET_MESSENGER_KIND_MERGE: |
1010 | return GNUNET_YES; | 1133 | return GNUNET_SYSERR; // Reserved for peers only! |
1011 | case GNUNET_MESSENGER_KIND_REQUEST: | 1134 | case GNUNET_MESSENGER_KIND_REQUEST: |
1012 | return GNUNET_YES; | 1135 | return GNUNET_YES; |
1013 | case GNUNET_MESSENGER_KIND_INVITE: | 1136 | case GNUNET_MESSENGER_KIND_INVITE: |