2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# file: rsasign.py
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								import wolfssl
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# start Random Number Generator
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								rng = wolfssl.GetRng()
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								if rng == None:
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    print "Couldn't get an RNG"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    exit(-1)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# load RSA private key in DER format
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								key = wolfssl.GetRsaPrivateKey("../certs/client-key.der")
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								if key == None:
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    print "Couldn't load DER private key file"
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    exit(-1)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# Make byte Arrays and fill input
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								signOutput = wolfssl.byteArray(128)   # 128 allows 1024 bit private key
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								signStr    = wolfssl.byteArray(25)    # input can't be larger then key size
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								                                     # 64 for 512 bit 128 for 1024 bit
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								wolfssl.FillSignStr(signStr, "Everybody gets Friday off", 25)
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# Do RSA Sign
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								signedSize = wolfssl.RsaSSL_Sign(signStr, 25, signOutput, 128, key, rng)
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								# Show output
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								print "Signed Size = ", signedSize, " signed array = ", wolfssl.cdata(signOutput, signedSize)
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								# let's verify this worked
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								signVerify = wolfssl.byteArray(signedSize)
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								verifySize = wolfssl.RsaSSL_Verify(signOutput, signedSize, signVerify, signedSize, key)
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2015-01-08 14:47:41 -07:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								print "Verify Size = ", verifySize, " verify array = ", wolfssl.cdata(signVerify, verifySize)
							 | 
						
					
						
							
								
									
										
										
										
											2011-02-05 11:14:47 -08:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 |