python


How use public key with pyOpenSSL for verify a signed message?


I try to use pyOpenSSL for signed a data, I create key pair (private and publique) and certificate.
I'm a beginner with this technology, I use OpenSSl, but if you have suggestions for generate a signed message with private and public key in python, I'm take !
I want to use RSA and DSA algorithm for my tests.
I find m2Crypto, pyCrypto and other. I do not know what is the best for this.
gnupg for python and pyOpenSSl are more recent visibly.
I used function for signed a message with my private key, and I verify the data.
But when I see the function for verify the signature, in parameters I need :
private key, signature, data and digest type.
I do not know where I am wrong in this code, I find some examples, but I do not understand how this can work because the first parameters for the verify function is a X509 object "certificate is a X509 instance corresponding to the private key which generated the signature." and the second is the signature generated with the private key..
This code work perfectly with the private key :
from OpenSSL import crypto
_k = crypto.PKey()
_cert = crypto.X509()
# Create keys
_k.generate_key(crypto.TYPE_RSA, 2048)
# Add argument for create certificate
_cert.gmtime_adj_notBefore(0)
_cert.gmtime_adj_notAfter(0*365*24*60*60) #10 years expiry date
_cert.set_pubkey(_k)
_cert.sign(_k, 'sha256')
# Create key's file
with open("public_key.pem",'w') as f:
f.write(crypto.dump_publickey(crypto.FILETYPE_PEM, _k))
with open("private_key.pem",'w') as f:
f.write(crypto.dump_privatekey(crypto.FILETYPE_PEM, _k))
with open("certificate.pem",'w') as f:
f.write(crypto.dump_certificate(crypto.FILETYPE_PEM, _cert))
#-------------------------------------------------------------------------------
# Open key and load in var
with open("private_key.pem",'r') as f:
priv_key = crypto.load_privatekey(crypto.FILETYPE_PEM, f.read())
with open("public_key.pem",'r') as f:
pub_key = crypto.load_publickey(crypto.FILETYPE_PEM, f.read())
with open("certificate.pem",'r') as f:
cert = crypto.load_certificate(crypto.FILETYPE_PEM, f.read())
# sign message 'hello world' with private key and certificate
sign = crypto.sign(priv_key, "hello world", 'sha256')
print crypto.verify(cert, sign, "hello world", 'sha256')
So, my question is, how use the public key for verify the data ?
If Bob give a public key to alice, How it checks the message with this public key ?
You have a idea ?
Thanks a lot,
Romain

Related Links

scipy does not load currectly in pycharm
Forming Django queryset for one-to-many relation
Flask Site on Azure showing default landing page
How to “POST” ndb.StructuredProperty?
Count the number of occurence per column with Pandas
UnicodeDecodeError after dealing with UnicodeEncodeError
Can't open certain csv files using pandas while being written with pandas - CParserError
Layered Architecture TypeError: 'module' object is not callable
How to scrape the HTML content of a webpage after rendering is completed in Python [duplicate]
parsing in korea's web site of naver
uwsgi http is ambiguous
Minimizing a function in python
pandas pivot table, creating table by taking difference of multiple columns
Python selenium use the same window instead of having 3 pop up?
Install Python 3 alongside Python 2 problematic?
Delete some elements from numpy array

Categories

HOME
numpy
webrtc
fparsec
recyclerview
algorithmic-trading
tumblr
devstack
pygame
keystore
rfid
maxima
equalizer
spring-cloud-config
aspell
uicollectionview
phpbb
python-unicode
apache-karaf
flexlm
eclipselink
ng2-dragula
myob
switching
spring-data-neo4j
datadog
invoke-command
hibernate-cache
node-horseman
gettext
color-scheme
bigcartel
code-composer
nashorn
android-maps-v2
recycle-bin
livefyre
info
selenium-firefoxdriver
emoticons
tomcat5
pax-web
metalsmith
com-interop
achievements
django-south
approval-tests
programming-paradigms
ubercart
musl
sysfs
ctrlp
gmaps4rails
fragment-tab-host
x-ua-compatible
humanizer
alpha-transparency
colt
picat
sgml
healthvault
sim900
angulartics
installshield-2011
ftp4j
manage.py
fraud-prevention
xslkey
prng
htmltextwriter
arbor.js
abnf
code-conversion
pitch
maven-ear-plugin
subtract
ninject-extensions
windows-phone-7-emulator
separation-of-concerns
text-size
serp
printing-web-page
cookieless
ihttphandler
junit3
unreachable-code
swfloader
method-signature

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App