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

ModelForm has no model class specified when use model forms
python scipy load mat file error
How can i make a time counter using QTime()
How do I convert this string to an array with all the proper formatting? [duplicate]
Iterate through a static image folder in django
Python Sklearn import error for scaler, pdalda file error?
PyYAML YAML load_all to Objects (nicely)
ttf_lookup_cache attribute not found in FontManager when using plot()
How to sort keys of dict by values?
a data structure with key as a cluster of words and value as a single word or string
Disable python warnings only for specific module via commandline
Error running GAE tutorial code - Guestbook
How to create a running total- Python [closed]
Unbuffered Python Subrocess PIPE
Django runserver syntax error
How to parse the string into list of tuples

Categories

HOME
cakephp-3.x
sas
vhdl
json-ld
cocos2d-x-3.0
concourse
value
user
file-io
spring-cloud-contract
packer
nuxt.js
postmessage
jquery-terminal
opera-mini
jsonserializer
rails-activerecord
countif
go-cd
restfb
fabric
scalajs-react
pptp
xilinx-ise
thinking-sphinx
dd-wrt
pitest
skygear
canvasjs
geomesa
lego
npm-publish
concrete5-5.7
fltk
s3cmd
tic-tac-toe
intellilock
ddms
wsadmin
cgo
web-development-server
constants
bids
floor
ogre3d
photography
paas
sqlexception
shinyjs
sqldatareader
sql-server-administration
rmongodb
uwp-maps
search-regex
asymptote
sonarqube5.3
jenkins-scriptler
ninject.web.mvc
app.xaml
viper-architecture
gray-code
pgm
django-1.6
proximity
cocoascript
temp-tables
eclipse-classpath
planetary.js
indexing-service
mimosa
layered
onselect
backbone-relational
shortcuts
client-library
process-monitor
snapjs
marmalade-edk
code-conversion
static-variables
rose-db-object
concurrent-programming
viewdidload
objectbrowser
zookeeper
galaxy-tab
dcpu-16
gethashcode
pureftpd
quick-search
trampolines
google-instant
graniteds
configurable
visual-studio-dbpro
dotproject





Mobile Apps Dev
Database Users
javascript
java
csharp
php
android


MS Developer
developer works
python
ios
c
html
jquery


RDBMS discuss