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

How can I get EBS volume type with python boto?
Why is my program skipping to the last line of inputs? (Python 3)
pyspark import user defined module or .py files
Is there a way to get better antialiasing with scipy zoom
Scraping g2a[dot]com with BeautifulSoup
Can't find a specific link using Beautiful Soup in Python
Issue when trying to install scipy in virtualenv on rpi
Python List Comprehension how-to
Django returns 404 after using restframework into existing project
How to add the second line of labels in matplotlib plot
Join dataframes - one with multiindex columns and the other without
How to set up multiple frames
Create a python programm standalone on windows 7 [duplicate]
Execute python script on remote server from another script
Passing a variable between two methods in Python?
What is the best way to add custom methods into generated protoc classes for Python?

Categories

HOME
xbox-live
swift
ember.js
app-inventor
nuxeo
jbehave
wxwidgets
label
ubuntu-12.04
bibtex
mainframe
shader
currency
cortex-a
onsen-ui2
xlsx
public-key-encryption
movies
pycrypto
distance
marathon
excel-2010
sensu
os161
avplayeritem
yosys
shopping-cart
jenkins-job-dsl
rhandsontable
web-frontend
pentaho-report-designer
chrome-native-messaging
fileinfo
forum
clockwork
m2e
spreedly
data-extraction
nodeclipse
mms
npm-publish
meta-raspberrypi
installshield-2012
tic-tac-toe
polyfills
service-fabric-stateful
fastq
encapsulation
prototypejs
startapp
tuleap
production-environment
istorage
jenkins-jira-trigger
mouseclick-event
livescribe
goquery
applepayjs
cdk
addin-express
rsqlite
inject
debugdiag
uiprogressview
nofollow
linkageerror
uwp-maps
amazon-kcl
post-processing
brackets-shell
fabric-twitter
uptodate
adodb
musl
jai
chaining
viewflipper
utf-32
left-recursion
ultrawingrid
and-operator
grunt-express
snmp4j
libssh2
factors
arangodb-php
java.util.date
convex-polygon
dig
surveyor-gem
google-closure-library
device-emulation
phpsh
gjs
gtk2hs
adobe-contribute
hibernate3-maven-plugin
aio
cots

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