m2crypto, base64, quoted-printable, xml

Milan Petrasek milan.petrasek at gmail.com
Thu Dec 2 09:51:24 EST 2010


Hi,

I have encrypted signed smime message with xml file.

Messages are constructed:
1) xml file is embedded to MIME message as attacment
(Content-Disposition: attachment;).
2) over whole content MIME message is signed by PKCS#7 and encoded Base64.
3) This message is encrypted by public key.

I use M2crypto to decrypt:

from M2Crypto import BIO, SMIME, X509
import os
output = open("c://decrypted.txt", 'w')
s = SMIME.SMIME()
s.load_key('test.pem', 'test.pem')
p7, data = SMIME.smime_load_pkcs7('input.txt')
out = s.decrypt(p7)
output.write(out)
output.close()

this part works properly. I try to verify the signed data, but without
success. File decrypted.txt contains base64 encoded data. (

I tried to decode through

from M2Crypto import BIO, SMIME, X509
import base64
import os
input = open("C://decrypted.txt", 'r')
output= open("C://decoded.txt", 'w')
base64.decode(input,output)
output.close
input.close

Decoded.txt contains quoted printable data, but if I try decode these data:

import os
import quopri
input = open("c://decoded.txt", 'r')
output= open("c://output.xml", 'w')
quopri.decode(input, output)
output.close
input.close

I obtain invalid and incomplete data. Data contains for example
"s ? čplitting" instead of "splitting".

Do you have any idea, what do I do wrong?

Thanks you very much

Best regards

Milan
-------------- next part --------------
0€	*†H†÷
 €0€1
0	+ 0€	*†H†÷
 €$€‚èContent-Type: application/octet-stream; name=60000000809820.XML

Content-Transfer-Encoding: quoted-printable

Content-Disposition: attachment; filename=60000000809820.XML



<?xml version=3D"1.0" encoding=3D"UTF-8"?>

<ISOTEDATA xmlns=3D"http://www.ote-cr.cz/schema/market/data" answer-require=

d=3D"0" date-time=3D"2010-11-20T17:28:00" dtd-release=3D"1" dtd-version=3D"=

1" id=3D"60000000809820" message-code=3D"933"><SenderIdentification coding-=

scheme=3D"14" id=3D"8591824000007"></SenderIdentification><ReceiverIdentifi=

cation coding-scheme=3D"14" id=3D"8591824345009"></ReceiverIdentification><=

Trade acceptance=3D"N" id=3D"84953" market=3D"VDT" trade-day=3D"2010-11-20"=

 trade-order=3D"1" trade-type=3D"P" version=3D"0"><TimeData datetime=3D"201=

0-11-19T15:18:40" datetime-type=3D"DTC"></TimeData><ProfileData profile-rol=

e=3D"P72"><Data period=3D"20" unit=3D"CZK" value=3D"1290.00"></Data><Data p=

eriod=3D"21" unit=3D"CZK" value=3D"1190.00"></Data><Data period=3D"23" unit=

=3‚èD"CZK" value=3D"1090.00"></Data><Data period=3D"24" unit=3D"CZK" value=3D=

"790.00"></Data></ProfileData><ProfileData profile-role=3D"C72"><Data perio=

d=3D"20" splitting=3D"A" unit=3D"MWH" value=3D"10.00"></Data><Data period=

=3D"21" splitting=3D"A" unit=3D"MWH" value=3D"30.00"></Data><Data period=3D=

"23" splitting=3D"A" unit=3D"MWH" value=3D"20.00"></Data><Data period=3D"24=

" splitting=3D"A" unit=3D"MWH" value=3D"25.00"></Data></ProfileData><Commen=

t></Comment></Trade><Trade acceptance=3D"N" id=3D"85018" market=3D"VDT" tra=

de-day=3D"2010-11-20" trade-order=3D"16" trade-type=3D"P" version=3D"0"><Ti=

meData datetime=3D"2010-11-20T18:28:00" datetime-type=3D"DTR"></TimeData><T=

imeData datetime=3D"2010-11-20T10:38:22" datetime-type=3D"DTC"></TimeData><=

ProfileData profile-role=3D"P72"><Data period=3D"21" unit=3D"CZK" value=3D"=

1367.00"></Data><Data period=3D"22" unit=3D"CZK" value=3D"1262.00"></Data><=

/ProfileData><ProfileData profile-role=3D"C72"><Data period=3D"21" s‚èplittin=

g=3D"A" unit=3D"MWH" value=3D"10.00"></Data><Data period=3D"22" splitting=

=3D"A" unit=3D"MWH" value=3D"10.00"></Data></ProfileData><Comment></Comment=

></Trade><Trade acceptance=3D"N" id=3D"85048" market=3D"VDT" trade-day=3D"2=

010-11-20" trade-order=3D"16" trade-type=3D"N" version=3D"0"><TimeData date=

time=3D"2010-11-20T17:29:00" datetime-type=3D"DTR"></TimeData><TimeData dat=

etime=3D"2010-11-20T16:39:21" datetime-type=3D"DTC"></TimeData><ProfileData=

 profile-role=3D"P71"><Data period=3D"20" unit=3D"CZK" value=3D"510.00"></D=

ata></ProfileData><ProfileData profile-role=3D"C71"><Data period=3D"20" spl=

itting=3D"A" unit=3D"MWH" value=3D"10.00"></Data></ProfileData><Comment></C=

omment></Trade><Trade acceptance=3D"N" id=3D"85049" market=3D"VDT" trade-da=

y=3D"2010-11-20" trade-order=3D"17" trade-type=3D"N" version=3D"0"><TimeDat=

a datetime=3D"2010-11-20T18:29:00" datetime-type=3D"DTR"></TimeData><TimeDa=

ta datetime=3D"2010-11-20T16:39:43" datetime-type=3D"DTC‚è"></TimeData><Profi=

leData profile-role=3D"P71"><Data period=3D"21" unit=3D"CZK" value=3D"480.0=

0"></Data><Data period=3D"22" unit=3D"CZK" value=3D"470.00"></Data></Profil=

eData><ProfileData profile-role=3D"C71"><Data period=3D"21" splitting=3D"A"=

 unit=3D"MWH" value=3D"10.00"></Data><Data period=3D"22" splitting=3D"A" un=

it=3D"MWH" value=3D"10.00"></Data></ProfileData><Comment></Comment></Trade>=

<Trade acceptance=3D"N" id=3D"85050" market=3D"VDT" trade-day=3D"2010-11-20=

" trade-order=3D"18" trade-type=3D"N" version=3D"0"><TimeData datetime=3D"2=

010-11-20T20:29:00" datetime-type=3D"DTR"></TimeData><TimeData datetime=3D"=

2010-11-20T16:40:26" datetime-type=3D"DTC"></TimeData><ProfileData profile-=

role=3D"P71"><Data period=3D"23" unit=3D"CZK" value=3D"450.00"></Data><Data=

 period=3D"24" unit=3D"CZK" value=3D"420.00"></Data></ProfileData><ProfileD=

ata profile-role=3D"C71"><Data period=3D"23" splitting=3D"A" unit=3D"MWH" v=

alue=3D"10.00"></Data><Data period=3D"24" ‚èsplitting=3D"A" unit=3D"MWH" valu=

e=3D"10.00"></Data></ProfileData><Comment></Comment></Trade><Trade acceptan=

ce=3D"N" id=3D"85052" market=3D"VDT" trade-day=3D"2010-11-20" trade-order=

=3D"26" trade-type=3D"P" version=3D"0"><TimeData datetime=3D"2010-11-20T20:=

28:00" datetime-type=3D"DTR"></TimeData><TimeData datetime=3D"2010-11-20T16=

:41:46" datetime-type=3D"DTC"></TimeData><ProfileData profile-role=3D"P72">=

<Data period=3D"23" unit=3D"CZK" value=3D"1260.00"></Data><Data period=3D"2=

4" unit=3D"CZK" value=3D"1260.00"></Data></ProfileData><ProfileData profile=

-role=3D"C72"><Data period=3D"23" splitting=3D"A" unit=3D"MWH" value=3D"10.=

00"></Data><Data period=3D"24" splitting=3D"A" unit=3D"MWH" value=3D"10.00"=

></Data></ProfileData><Comment></Comment></Trade><ds:Signature xmlns:ds=3D"=

http://www.w3.org/2000/09/xmldsig#">

<ds:SignedInfo>

<ds:CanonicalizationMethod Algorithm=3D"http://www.w3.org/TR/2001/REC-xml-c=

14n-20010315"></ds:CanonicalizationMethod>

<ds:Signa‚ètureMethod Algorithm=3D"http://www.w3.org/2000/09/xmldsig#rsa-sha1=

"></ds:SignatureMethod>

<ds:Reference URI=3D"">

<ds:Transforms>

<ds:Transform Algorithm=3D"http://www.w3.org/2000/09/xmldsig#enveloped-sign=

ature"></ds:Transform>

</ds:Transforms>

<ds:DigestMethod Algorithm=3D"http://www.w3.org/2000/09/xmldsig#sha1"></ds:=

DigestMethod>

<ds:DigestValue>8YHs/sxfgB3k0UzVK008AA4GHO4=3D</ds:DigestValue>

</ds:Reference>

</ds:SignedInfo>

<ds:SignatureValue>

zf+U2XLnE14YWQdeJ0apGPQBVviiQ1JJqCKZGFWcQ1ljwgG61f9JnALZsBYZP+6G2p9aAsyto2+=

D

at78MnNiuENXwzBnKdCMUU9wOYsnVdKXnfCCUQzJeP7yQgaev4QL8fSXpaziI52AH1caXPM4e7V=

3

bcpQKXBwUrZq+hhJfyFSLm/R31APWqlujPk9gwSSiDWZ6aFLFob4jKj1FWQBTQzi0fnC/N50dA7=

7

C4V/X5XsbqlRxA4G83GneryrOEa0l1UXggFGlFQ5xNFwAMFOHnAz55HXQ9llRnm4safqvl4HNAX=

x

mZIqoiF7caWYe2WfGsQ+Soy3MCwltlemK4/FHQ=3D=3D

</ds:SignatureValue>

<ds:KeyInfo>

<ds:X509Data>

<ds:X509Certificate>

MIIDyTCCArGgAwIBAgIKL7h+8AAFAAAV8DANBgkqhkiG9w0BAQUFADBCMQswCQYDVQQGEwJDWjE=

P

MA0GA1‚èUEChMGTG9naWNhMRIwEAYDVQQLEwlQS0kgR3JvdXAxDjAMBgNVBAMTBU9URUNBMB4XDTE=

w

MDIxNjEzNDM0MloXDTEyMDIxNjEzNTM0MlowZTEkMCIGCSqGSIb3DQEJARYVY3NvdGVAY3NvdGU=

u

b3RlLWNyLmN6MQswCQYDVQQGEwJDWjESMBAGA1UEChMJT1RFLCBhLnMuMQwwCgYDVQQLEwNQS0k=

x

DjAMBgNVBAMTBUNTT1RFMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9mo6AupquHb=

e

Q26caDIOgOIchGVpv7DV0QjqqixFNPSkg+POqDSB8txUKjcRmV0HKWT1o46SzpIVaUod1eaESTR=

o

KiEp10v7EFC+InYBRk7HzHoBau1kyYaGHrECdeOddFN1LhFsZXcdWQLGE5AWW9A5hmyksQK8aoJ=

o

ZNWXYzBSrNIHRQpQi7x3rEg80o/UhezBbU1KZXhg0LSCzayzixjzw++TR6l3YwdkO2wHUpBzKwd=

U

46rWPMdN3NcWbocrVDUWkyLnNHWlO6olKVWV+751ZjszjjgNI+E+Wc2kxRUqKJRR9Ren5PYLvPP=

v

+oCnZaxvkKQDd30fyPSnyvVoxQIDAQABo4GdMIGaMB0GA1UdDgQWBBThBbCUiVlEPsXoCMOg7cd=

f

/wOyAjB5BgNVHSMEcjBwgBT08Vf3iDofXlR27DvrxE+H5diP0aFGpEQwQjELMAkGA1UEBhMCQ1o=

x

DzANBgNVBAoTBkxvZ2ljYTESMBAGA1UECxMJUEtJIEdyb3VwMQ4wDAYDVQQDEwVPVEVDQYIQeYN=

C

Xj6Lf6NNexTEztftfDANBgkqhkiG9w0BAQUFAAOCAQEAgq5DSjn0uZsjIBpaff+Y/gGgXAhpD7L=

b

IbPEJTIxc6vb4uSSssht5SapXKfyek2bG0‚uYuDkv3Cubv1Gf77qrOcyNsmMzbpXpYMCRiJ2oZ9FZ=

4

+NuQK68jK5MAT8GH3GiJ/ikphTTknSpLm/9JRjnjX9pbGbKpIFPYiRBzdQI28Y7wqOuzvRPcknI=

X

LGWh+QYymRTGHQDaJts5mOzgsl2WbvdFMgt3wocAp35HyK9QHH9NrnT0+x+VxvW8sTJ5zQYQyhq=

5

mXmQwgKSAJUnM3y2NHEjOiYwNf2iwoAwHgM8/GNymaLLHbgeaK7GoTqiBsmuUKcFSGC9lRJhGZq=

L

EufT1A=3D=3D

</ds:X509Certificate>

</ds:X509Data>

<ds:KeyValue>

<ds:RSAKeyValue>

<ds:Modulus>

9mo6AupquHbeQ26caDIOgOIchGVpv7DV0QjqqixFNPSkg+POqDSB8txUKjcRmV0HKWT1o46SzpI=

V

aUod1eaESTRoKiEp10v7EFC+InYBRk7HzHoBau1kyYaGHrECdeOddFN1LhFsZXcdWQLGE5AWW9A=

5

hmyksQK8aoJoZNWXYzBSrNIHRQpQi7x3rEg80o/UhezBbU1KZXhg0LSCzayzixjzw++TR6l3Ywd=

k

O2wHUpBzKwdU46rWPMdN3NcWbocrVDUWkyLnNHWlO6olKVWV+751ZjszjjgNI+E+Wc2kxRUqKJR=

R

9Ren5PYLvPPv+oCnZaxvkKQDd30fyPSnyvVoxQ=3D=3D

</ds:Modulus>

<ds:Exponent>AQAB</ds:Exponent>

</ds:RSAKeyValue>

</ds:KeyValue>

</ds:KeyInfo>

</ds:Signature></ISOTEDATA>       €0‚É0‚± 
/¸~ð   ð0
	*†H†÷
 0B1
0	UCZ10
U
Logica10U
	PKI Group10
UOTECA0

100216134342Z
120216135342Z0e1$0"	*†H†÷
	csote at csote.ote-cr.cz1
0	UCZ10U
	OTE, a.s.1
0
U
PKI10
UCSOTE0‚"0
	*†H†÷
 ‚ 0‚
‚ öj:êj¸vÞCnœh2€â
„ei¿°ÕÑêª,E4ô¤ƒãΨ4�òÜT*7™])dõ£Ž’Î’iJ
Õæ„I4h*!)×KûP¾"vFNÇÌzjídɆ†
±uã�tSu.lew
YÆ�[Ð9†l¤±¼j‚hdÕ—c0R¬ÒE
P‹¼w¬H<Ò�Ô…ìÁmMJex`д‚ͬ³‹óÃï“G©wcd;lR�s+TãªÖ<ÇMÜ×n‡+T5“"ç4u¥;ª%)U•û¾uf;3Ž8
#á>YͤÅ*(”Qõ§äö
¼óïú€§e¬o�¤w}Èô§ÊõhÅ £��0�š0
U
á°”‰YD>ÅèàíÇ_ÿ²0yU
#r0p€ôñW÷ˆ:^Tvì;ëÄO‡åØ�Ñ¡F¤D0B1
0	UCZ10
U
Logica10U
	PKI Group10
UOTECA‚yƒB^>‹£M{ÄÎ×í|0
	*†H†÷
 ‚ ‚®CJ9ô¹›# Z}ÿ˜þ \i²Û!³Ä%21s«Ûâä’²Èmå&©\§òzM›F.K÷
æïÔgûîªÎs#l˜ÌÛ¥zX0$b'jôVxøÛ�+¯#+“ OÁ‡Üh‰þ))…4ä�*K›ÿIF9ã_Ú[²© S؉su6ñŽð¨ë³½Ü’r,e¡ù2™Æ
 Ú&Û9˜ìà²]–n÷E2
w‡ §~GȯP
M®tôû•Æõ¼±2yÍʹ™y�Â’ •'3|¶4q#:&05ý¢Â€0
<ücr™¢Ë
¸
h®Æ¡:¢É®P§H`½•aš‹çÓÔ  1‚Ö0‚Ò0P0B1
0	UCZ10
U
Logica10U
	PKI Group10
UOTECA
/¸~ð   ð0	+  ]0	*†H†÷
	1
	*†H†÷
0
	*†H†÷
	1
101120162809Z0#	*†H†÷
	1¶ýz¶gOäoió�éÑ´80
	*†H†÷
 ‚ 6‡·JCëeàȇ‰ò^§‰K“y,›ðí]ôœÏh*0<É Bï%Êâˆd´À+vâ-é$š0”UuõC8*^Ó¤Ö�Np1BO#šzå¯/Í:Y±¢÷^©7B£E÷?´²,Vᜑ¸—pü6œ¡ÃèL¯ü	g
Lg�Ÿà
øÂÞ�˜3/;zN–‹ŽÃˆâ­—z,”ÅÌ�$
[“©X„¥ÝWžêtˆ	x±¸BTÖÌè„ptvÈ¥vŸÞ•Ç®ãý=
±Áº´¦,
r]Ú.Vön‡!Lg÷0;É…˜yXYi¡÷µÔLwo“-h1Wؾò®þ±¼ü:~¹      


More information about the Python-list mailing list