コード例 #1
0
ファイル: message.py プロジェクト: jcnelson/syndicatemail
def prepare_message_attachment_metadata( privkey_str, _attachments, msg_ts, msg_id ):

   attachment_paths = {}
   attachment_signatures = {}
   
   if _attachments is None:
      return attachment_paths, attachment_signatures
   
   for attachment_name, attachment_data in _attachments.items():
      apath = attachment_path( msg_ts, msg_id, attachment_name )
      attachment_paths[ attachment_name ] = apath
      

   for attachment_name, attachment_data in _attachments.items():
      attachment_sig = base64.b64encode( keys.sign_data( privkey_str, attachment_data ) )
      attachment_signatures[ attachment_name ] = attachment_sig   
      
   return attachment_paths, attachment_signatures
コード例 #2
0
ファイル: network.py プロジェクト: jcnelson/syndicatemail
# -------------------------------------
def post_message(sender_privkey_pem, encrypted_incoming_message, use_http=False):
    # called by the endpoint
    # start to inform the recipient's server that they have a new message
    # EncryptedIncomingMessage = collections.namedtuple( "EncryptedIncomingMessage", ["incoming_message_ciphertext", "sender_addr", "receiver_addr", "signature"] )
    # serialize this
    try:
        data = storage.tuple_to_json(encrypted_incoming_message)
        data = base64.b64encode(data)
    except Exception, e:
        log.exception(e)
        log.error("Failed to serialize")
        return False

    sig = keys.sign_data(sender_privkey_pem, data)

    sig_b64 = base64.b64encode(sig)

    forms = {
        "sender": encrypted_incoming_message.sender_addr,
        "receiver": encrypted_incoming_message.receiver_addr,
        "signature": sig_b64,
        "message": data,
    }

    try:
        parsed_receiver_addr = contact.parse_addr(encrypted_incoming_message.receiver_addr)
    except Exception, e:
        log.exception(e)
        log.error("Failed to parse '%s'" % encrypted_incoming_message.receiver_addr)