import email.message
import email.encoders
+from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.nonmultipart import MIMENonMultipart
A string version of the mime message, possibly encrypted and signed.
"""
- # quoted printable encoding lets most ascii characters look normal
- # before the mime message is decoded.
- char_set = email.charset.Charset("utf-8")
- char_set.body_encoding = email.charset.QP
+ if (encrypt_to_key != None):
- # MIMEText doesn't allow setting the text encoding
- # so we use MIMENonMultipart.
- plaintext_mime = MIMENonMultipart('text', 'plain')
- plaintext_mime.set_payload(plaintext, charset=char_set)
+ # quoted printable encoding lets most ascii characters look normal
+ # before the mime message is decoded.
+ char_set = email.charset.Charset("utf-8")
+ char_set.body_encoding = email.charset.QP
- if (encrypt_to_key != None):
+ # MIMEText doesn't allow setting the text encoding
+ # so we use MIMENonMultipart.
+ plaintext_mime = MIMENonMultipart('text', 'plain')
+ plaintext_mime.set_payload(plaintext, charset=char_set)
encrypted_text = encrypt_sign_message(plaintext_mime.as_string(),
encrypt_to_key,
gpgme_ctx)
- gpg_payload = encrypted_text
- else:
- signed_text = sign_message(plaintext_mime.as_string(), gpgme_ctx)
- gpg_payload = signed_text
+ control_mime = MIMEApplication("Version: 1",
+ _subtype='pgp-encrypted',
+ _encoder=email.encoders.encode_7or8bit)
+ control_mime['Content-Description'] = 'PGP/MIME version identification'
+ control_mime.set_charset('us-ascii')
- control_mime = MIMEApplication("Version: 1",
- _subtype='pgp-encrypted',
- _encoder=email.encoders.encode_7or8bit)
- control_mime['Content-Description'] = 'PGP/MIME version identification'
- control_mime.set_charset('us-ascii')
+ encoded_mime = MIMEApplication(encrypted_text,
+ _subtype='octet-stream; name="encrypted.asc"',
+ _encoder=email.encoders.encode_7or8bit)
+ encoded_mime['Content-Description'] = 'OpenPGP encrypted message'
+ encoded_mime['Content-Disposition'] = 'inline; filename="encrypted.asc"'
+ encoded_mime.set_charset('us-ascii')
- encoded_mime = MIMEApplication(gpg_payload,
- _subtype='octet-stream; name="encrypted.asc"',
- _encoder=email.encoders.encode_7or8bit)
- encoded_mime['Content-Description'] = 'OpenPGP encrypted message'
- encoded_mime['Content-Disposition'] = 'inline; filename="encrypted.asc"'
- encoded_mime.set_charset('us-ascii')
-
- message_mime = MIMEMultipart(_subtype="encrypted", protocol="application/pgp-encrypted")
- message_mime.attach(control_mime)
- message_mime.attach(encoded_mime)
- message_mime['Content-Disposition'] = 'inline'
+ message_mime = MIMEMultipart(_subtype="encrypted", protocol="application/pgp-encrypted")
+ message_mime.attach(control_mime)
+ message_mime.attach(encoded_mime)
+ message_mime['Content-Disposition'] = 'inline'
+ else:
+ message_mime = MIMEText(plaintext)
message_mime['To'] = email_to
message_mime['Subject'] = email_subject
return encrypted_txt
-def sign_message (plaintext, gpgme_ctx):
- """Signs plaintext
-
- This signs a message.
-
- Args:
- plaintext: text to sign
- gpgme_ctx: the gpgme context
-
- Returns:
- An armored signature as a string of text
- """
-
- # the plaintext should be mime encoded in an ascii-compatible form
- plaintext_bytes = io.BytesIO(plaintext.encode('ascii'))
- signed_bytes = io.BytesIO()
-
- gpgme_ctx.sign(plaintext_bytes, signed_bytes, gpgme.SIG_MODE_NORMAL)
-
- signed_txt = signed_bytes.getvalue().decode('ascii')
- return signed_txt
-
-
def error (error_msg):
"""Write an error message to stdout
NUM_TESTS=1
#TEST_TYPES="gpg-flatten flatten plain"
-TEST_TYPES="gpg-flatten"
+TEST_TYPES="gpg-flatten flatten"
function _main {
--- /dev/null
+From: No One <noone@localhost>
+To: No One <noone@localhost>
+Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
+
+
+DO YOU READ ME CAPTAIN??!!1 o_O
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+hi, i didn't encrypt this part. is that a mistake?
+
+bye!
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iJwEAQECAAYFAlWthWEACgkQsT5tL2pPbuhyWgQApzhIt4EM4FrqCibNI7ZS1V73
+yhml95bw5PXq2fB7wU2I4pkM30T2kpMxdtfHdPXHQSzvuo27IhrUOH7CUtvj0f23
+CllwAGoUmwmdXOLeVvgjwyPzSVAdWLO8/231fS1M8J42v8GV6w78hmq+/Cck2oQE
+p4/91AVSikY7bwMrGpU=
+=Tavv
+-----END PGP SIGNATURE-----
--- /dev/null
+From: No One <noone@localhost>
+To: No One <noone@localhost>
+Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
+
+DO YOU READ ME CAPTAIN??!!1 o_O
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+hi, i didn't encrypt this part. is that a mistake?
+
+bye!
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iJwEAQECAAYFAlWthWEACgkQsT5tL2pPbuhyWgQApzhIt4EM4FrqCibNI7ZS1V73
+yhml95bw5PXq2fB7wU2I4pkM30T2kpMxdtfHdPXHQSzvuo27IhrUOH7CUtvj0f23
+CllwAGoUmwmdXOLeVvgjwyPzSVAdWLO8/231fS1M8J42v8GV6w78hmq+/Cck2oQE
+p4/91AVSikY7bwMrGpU=
+=Tavv
+-----END PGP SIGNATURE-----
+
+-----BEGIN PGP MESSAGE-----
+Version: GnuPG v1
+
+hIwDWouAYlp2iv8BBADAXsI9Y/miNCVnseKDNZVil3VK3SUbJ4DYoVDVcymcStUw
++bmk3XSk5hqap3CfSKdSvdnxSmaKzYOdpv03kiRtK2gjnakcKxk4pGz85UM5t8ZZ
+3estj/Ca40kvSHZAYelgC1W8JshDOyOrS93acfUgJxKQMdxhGRjVAW1YbQWFyNLA
+3QEJJeg6obNktEbhXCSlupZFAKJQgdAPDOWYgNeFnTkS4MttM+G0ABx/o8JjeIl5
+wYDucFBDHXSuld9RBzQ1QLOUhB8BOkCq6XFgwaaTKTBT7SQ19n0G8RpZmJ/BX5Ok
+msi9nlRm9z6Irjtx9bDudzUfpCzO/YeYBN1J/1o3pw8f/otzOMfRHBStkdo0V9i5
+9JS77QRkSnM4hVrZuvfplYa5iRftdYehLMaMk7k9gOY+B5WEMdgV9ZWRrWOXmqTK
+NyB1fIWgKNEqCgZnBFPS6Es6kUXUNnFvsvFMPg5WXx+HBJ3YqhNzsdVegagxjE9F
+wi7qHlcHbRGFv7Zz+BsiPQ3M3tQgwBAd1c/d/6CIdZDArvsTZiSdkszpfeziVj2p
+ZKhWUBUIpqP59MMlftD19EFTtJm8mpc/gBH074nEwzXdLFKg08Vb5fH2zMRo37w4
+HZzUHFJaj8VMIjQPRXqD6ELclHJbO7ASTyh8S+v9Iv+t4PpJXn8odwAm08bd//e9
+Ch/H9RAlS/22W4KlpZdIvwz7JmwVE9T4Xq1e22Df
+=Sn5u
+-----END PGP MESSAGE-----
+
--- /dev/null
+Hello, I am Edward, the friendly GnuPG bot. I received your message and decrypted it. Here's a copy of your message:
+
+
+
+Your signature could not be verified.
+
+I'm sorry, I was not able to find your public key. Did you remember to attach it?
+
+- Edward, the friendly GnuPG bot
+The Free Software Foundation created me.
+
+Can you donate to support their work?
+https://www.fsf.org/donate
--- /dev/null
+
+
+Your signature could not be verified.
+
+I'm sorry, I was not able to find your public key. Did you remember to attach it?
+
+- Edward, the friendly GnuPG bot
+The Free Software Foundation created me.
+
+Can you donate to support their work?
+https://www.fsf.org/donate
From: No One <noone@localhost>
+MIME-Version: 1.0
To: No One <noone@localhost>
Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
+Content-Type: multipart/encrypted;
+ protocol="application/pgp-encrypted";
+ boundary="x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW"
+This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
+Content-Type: application/pgp-encrypted
+Content-Description: PGP/MIME version identification
-DO YOU READ ME CAPTAIN??!!1 o_O
+Version: 1
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
+Content-Type: application/octet-stream; name="encrypted.asc"
+Content-Description: OpenPGP encrypted message
+Content-Disposition: inline; filename="encrypted.asc"
-hi, i didn't encrypt this part. is that a mistake?
+-----BEGIN PGP MESSAGE-----
+Version: GnuPG v1
-bye!
+owGbwMvMwMS40S5XP8s/7wXjabskhtCNIq9LMjKLFYAoUaEktbhEITe1uDgxPVVP
+oTK/VKE4I780J0UhL79EoTg1VQGsNL+0pKC0RI+rYw4LAyMTAxsrE8gUBi5OAZjR
+/w2Z/2kxf6n7XqaQ+m96/xz+I86XLqnd65y+W+eg1e5LLfMVTRkOlJ6c/dnwpkOu
+heLnxuezYx5w5hdY6XEXzNBgCC5xzstINbyVWxBTl7jknH/XCTvO5mPSB84mnLCO
+W+jQYpDzRdOt6i2TxFmek1V+8/8uNzmwf3UI0wI+pe6Eox/sle+f/OXjAQA=
+=AT2s
+-----END PGP MESSAGE-----
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW--
-iJwEAQECAAYFAlWthWEACgkQsT5tL2pPbuhyWgQApzhIt4EM4FrqCibNI7ZS1V73
-yhml95bw5PXq2fB7wU2I4pkM30T2kpMxdtfHdPXHQSzvuo27IhrUOH7CUtvj0f23
-CllwAGoUmwmdXOLeVvgjwyPzSVAdWLO8/231fS1M8J42v8GV6w78hmq+/Cck2oQE
-p4/91AVSikY7bwMrGpU=
-=Tavv
------END PGP SIGNATURE-----
-Your signature could not be verified.
-
-I'm sorry, I was not able to find your public key. Did you remember to attach it?
+Your signature was verified.
- Edward, the friendly GnuPG bot
The Free Software Foundation created me.
From: No One <noone@localhost>
-To: No One <noone@localhost>
+MIME-Version: 1.0
+To: No One <edward-ja@localhost>
Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
+Content-Type: multipart/encrypted;
+ protocol="application/pgp-encrypted";
+ boundary="x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW"
-DO YOU READ ME CAPTAIN??!!1 o_O
+This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
+Content-Type: application/pgp-encrypted
+Content-Description: PGP/MIME version identification
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
+Version: 1
-hi, i didn't encrypt this part. is that a mistake?
-
-bye!
-
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1
-
-iJwEAQECAAYFAlWthWEACgkQsT5tL2pPbuhyWgQApzhIt4EM4FrqCibNI7ZS1V73
-yhml95bw5PXq2fB7wU2I4pkM30T2kpMxdtfHdPXHQSzvuo27IhrUOH7CUtvj0f23
-CllwAGoUmwmdXOLeVvgjwyPzSVAdWLO8/231fS1M8J42v8GV6w78hmq+/Cck2oQE
-p4/91AVSikY7bwMrGpU=
-=Tavv
------END PGP SIGNATURE-----
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
+Content-Type: application/octet-stream; name="encrypted.asc"
+Content-Description: OpenPGP encrypted message
+Content-Disposition: inline; filename="encrypted.asc"
-----BEGIN PGP MESSAGE-----
Version: GnuPG v1
-hIwDWouAYlp2iv8BBADAXsI9Y/miNCVnseKDNZVil3VK3SUbJ4DYoVDVcymcStUw
-+bmk3XSk5hqap3CfSKdSvdnxSmaKzYOdpv03kiRtK2gjnakcKxk4pGz85UM5t8ZZ
-3estj/Ca40kvSHZAYelgC1W8JshDOyOrS93acfUgJxKQMdxhGRjVAW1YbQWFyNLA
-3QEJJeg6obNktEbhXCSlupZFAKJQgdAPDOWYgNeFnTkS4MttM+G0ABx/o8JjeIl5
-wYDucFBDHXSuld9RBzQ1QLOUhB8BOkCq6XFgwaaTKTBT7SQ19n0G8RpZmJ/BX5Ok
-msi9nlRm9z6Irjtx9bDudzUfpCzO/YeYBN1J/1o3pw8f/otzOMfRHBStkdo0V9i5
-9JS77QRkSnM4hVrZuvfplYa5iRftdYehLMaMk7k9gOY+B5WEMdgV9ZWRrWOXmqTK
-NyB1fIWgKNEqCgZnBFPS6Es6kUXUNnFvsvFMPg5WXx+HBJ3YqhNzsdVegagxjE9F
-wi7qHlcHbRGFv7Zz+BsiPQ3M3tQgwBAd1c/d/6CIdZDArvsTZiSdkszpfeziVj2p
-ZKhWUBUIpqP59MMlftD19EFTtJm8mpc/gBH074nEwzXdLFKg08Vb5fH2zMRo37w4
-HZzUHFJaj8VMIjQPRXqD6ELclHJbO7ASTyh8S+v9Iv+t4PpJXn8odwAm08bd//e9
-Ch/H9RAlS/22W4KlpZdIvwz7JmwVE9T4Xq1e22Df
-=Sn5u
+hIwDWouAYlp2iv8BBAC+TPb/Fdoye+wORbVhPNslOQo829IK2nhRYkVcxouDoRQP
+M+q6vI0RMqwobFCqsyK6LIutS3JAqHIB7tsl//MN3hHUcIiF4ZgsyPpX+wazLMCp
+XFapg0WsuJjnBi5h0ugkpg/B4HuyiPYYIoH1wxCwp449MZzGHLmIMG02JlmiQtLp
+AV50UCk6OUoclVbJhpz6vttUxPPihTuVSTHGVJA25S3yF5Z2TTTosA5hwcEEN8/R
+fZ/cgYE88ewXcuo9/vYnXnQUGOzbEtFJ9g2wdnEpf0XzKgm60KcZCNXbDfHF9X9X
+BrimYlfjjaQ+vL7LEfEinhxZLbdu/yA5ej/colSP7IkefUVOE1J8mW2zmO5vNoRT
+mYj0T66+grP7ILPy+T68eY7pWaCoUWNqTQULyAfAyYpEmb6SBw/qtq0ZWVgAuIwM
++sA5vVgKDeb6+Rntesjs7YwIqKzp0LP/u/Dn+jp6D+3njltrkp/zhMUX2PL97CH7
+v9kZbwcxFFqjOvdtFn4bbHa+F1CjS6MakGDG8H609VtdL7vee7goaM9+PUCNYFur
+DOsEW0ML8a5gLNFzIScZTxsNwretctsJWu3TkVD+wY1UcqD/h4yIuKF7ZuJOGcW0
+CkxJ6U9OZsFgPzGqpLY3+Q/zb1Z0Tipex0FuKTw6gCpK9gieJKw04ZUFb7MuYPrj
+xSCY7ruJiHRz5Vby8a2uQMisjs8ajXtkzinfRRQe7vQd8WJGKBs5pUe+7kLgBhx+
+xI5oHuAQ3SkmdMjhFSQ7idgl+MV+7TVLBx96qdxfUhSw65uW2TySPkBpM1JDxU6A
+4hDENnhdBM6/o6JDbClGjVLCN1vgvBAZ8ToOShXOZ1AulZu2sazolhwzvEMzkQyH
+gURIeMRulCLM1ufflHaKzDFBOP24gK1Zl+B7g5BDvg==
+=Hetx
-----END PGP MESSAGE-----
+--x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW--
+
-Hello, I am Edward, the friendly GnuPG bot. I received your message and decrypted it. Here's a copy of your message:
+こんにちは! 私はGnuPGボットのEdwardです。あなたから送られたメールの暗号を解きました。確認のため、内容を返信します:
+> thanks for the message!
+>
+> > Über Spaß.
+> >
+> > qual è il suono di una mano sola?
+> >
+> > こんにちは、お元気ですか?
+> >
+>
+> test.
+>
+> -andrew
+>
+>
+- GnuPGボットのEdward
-Your signature could not be verified.
-
-I'm sorry, I was not able to find your public key. Did you remember to attach it?
-
-- Edward, the friendly GnuPG bot
-The Free Software Foundation created me.
-
-Can you donate to support their work?
-https://www.fsf.org/donate
+Free Software Foundationが私を制作しました。 Free Software Foundationに寄付しませんか。| https://www.fsf.org/donate
+++ /dev/null
-From: No One <noone@localhost>
-MIME-Version: 1.0
-To: No One <noone@localhost>
-Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
-Content-Type: multipart/encrypted;
- protocol="application/pgp-encrypted";
- boundary="x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW"
-
-This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
---x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
-Content-Type: application/pgp-encrypted
-Content-Description: PGP/MIME version identification
-
-Version: 1
-
---x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
-Content-Type: application/octet-stream; name="encrypted.asc"
-Content-Description: OpenPGP encrypted message
-Content-Disposition: inline; filename="encrypted.asc"
-
------BEGIN PGP MESSAGE-----
-Version: GnuPG v1
-
-owGbwMvMwMS40S5XP8s/7wXjabskhtCNIq9LMjKLFYAoUaEktbhEITe1uDgxPVVP
-oTK/VKE4I780J0UhL79EoTg1VQGsNL+0pKC0RI+rYw4LAyMTAxsrE8gUBi5OAZjR
-/w2Z/2kxf6n7XqaQ+m96/xz+I86XLqnd65y+W+eg1e5LLfMVTRkOlJ6c/dnwpkOu
-heLnxuezYx5w5hdY6XEXzNBgCC5xzstINbyVWxBTl7jknH/XCTvO5mPSB84mnLCO
-W+jQYpDzRdOt6i2TxFmek1V+8/8uNzmwf3UI0wI+pe6Eox/sle+f/OXjAQA=
-=AT2s
------END PGP MESSAGE-----
-
---x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW--
-
+++ /dev/null
-
-
-Your signature was verified.
-
-- Edward, the friendly GnuPG bot
-The Free Software Foundation created me.
-
-Can you donate to support their work?
-https://www.fsf.org/donate
+++ /dev/null
-From: No One <noone@localhost>
-MIME-Version: 1.0
-To: No One <edward-ja@localhost>
-Subject: =?UTF-8?B?44GT44KT44Gr44Gh44Gv44CB44GK5YWD5rCX44Gn44GZ44GL77yf?=
-Content-Type: multipart/encrypted;
- protocol="application/pgp-encrypted";
- boundary="x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW"
-
-This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
---x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
-Content-Type: application/pgp-encrypted
-Content-Description: PGP/MIME version identification
-
-Version: 1
-
---x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW
-Content-Type: application/octet-stream; name="encrypted.asc"
-Content-Description: OpenPGP encrypted message
-Content-Disposition: inline; filename="encrypted.asc"
-
------BEGIN PGP MESSAGE-----
-Version: GnuPG v1
-
-hIwDWouAYlp2iv8BBAC+TPb/Fdoye+wORbVhPNslOQo829IK2nhRYkVcxouDoRQP
-M+q6vI0RMqwobFCqsyK6LIutS3JAqHIB7tsl//MN3hHUcIiF4ZgsyPpX+wazLMCp
-XFapg0WsuJjnBi5h0ugkpg/B4HuyiPYYIoH1wxCwp449MZzGHLmIMG02JlmiQtLp
-AV50UCk6OUoclVbJhpz6vttUxPPihTuVSTHGVJA25S3yF5Z2TTTosA5hwcEEN8/R
-fZ/cgYE88ewXcuo9/vYnXnQUGOzbEtFJ9g2wdnEpf0XzKgm60KcZCNXbDfHF9X9X
-BrimYlfjjaQ+vL7LEfEinhxZLbdu/yA5ej/colSP7IkefUVOE1J8mW2zmO5vNoRT
-mYj0T66+grP7ILPy+T68eY7pWaCoUWNqTQULyAfAyYpEmb6SBw/qtq0ZWVgAuIwM
-+sA5vVgKDeb6+Rntesjs7YwIqKzp0LP/u/Dn+jp6D+3njltrkp/zhMUX2PL97CH7
-v9kZbwcxFFqjOvdtFn4bbHa+F1CjS6MakGDG8H609VtdL7vee7goaM9+PUCNYFur
-DOsEW0ML8a5gLNFzIScZTxsNwretctsJWu3TkVD+wY1UcqD/h4yIuKF7ZuJOGcW0
-CkxJ6U9OZsFgPzGqpLY3+Q/zb1Z0Tipex0FuKTw6gCpK9gieJKw04ZUFb7MuYPrj
-xSCY7ruJiHRz5Vby8a2uQMisjs8ajXtkzinfRRQe7vQd8WJGKBs5pUe+7kLgBhx+
-xI5oHuAQ3SkmdMjhFSQ7idgl+MV+7TVLBx96qdxfUhSw65uW2TySPkBpM1JDxU6A
-4hDENnhdBM6/o6JDbClGjVLCN1vgvBAZ8ToOShXOZ1AulZu2sazolhwzvEMzkQyH
-gURIeMRulCLM1ufflHaKzDFBOP24gK1Zl+B7g5BDvg==
-=Hetx
------END PGP MESSAGE-----
-
---x2iAciceo0NrKsl4uFVFGTgJ6k0ocg8FW--
-
+++ /dev/null
-こんにちは! 私はGnuPGボットのEdwardです。あなたから送られたメールの暗号を解きました。確認のため、内容を返信します:
-
-> thanks for the message!
->
-> > Über Spaß.
-> >
-> > qual è il suono di una mano sola?
-> >
-> > こんにちは、お元気ですか?
-> >
->
-> test.
->
-> -andrew
->
->
-
-- GnuPGボットのEdward
-
-Free Software Foundationが私を制作しました。 Free Software Foundationに寄付しませんか。| https://www.fsf.org/donate