'''

import numpy as np
import cv2
import hashlib
import Crypto
from Crypto.PublicKey import RSA
from Crypto import Random

import fp_functions as fp

FILE_NAME = '1000px-Angel_on_bridge_of_angels_in_Rome.JPG'

if __name__ == '__main__':
    image = cv2.imread(FILE_NAME)
    imageHash = fp.hash_file(FILE_NAME)
    print 'Hashing completed!'
    key = fp.gen_RSA_keys(1024)
    signature = fp.sign_hash(key, imageHash)
    watermarkedImage = fp.apply_watermark(signature, image)
    sigLength = fp.read_bits(signature, 0)[1]
    watermark = fp.read_watermark(watermarkedImage, sigLength)
    publicKey = key.publickey()
    if publicKey.verify(imageHash.digest(), watermark):
        cv2.imwrite('watermarkedImage.png', watermarkedImage)
        print 'Watermarked image saved to directory'
        print 'Watermark successfully applied and verified!'
    else:
        print 'Signature is invalid'

import Crypto
from Crypto.PublicKey import RSA
from Crypto import Random

from fp_functions import hash_file
from fp_functions import gen_RSA_keys
from fp_functions import sign_hash
from fp_functions import read_bits
from fp_functions import apply_watermark
from fp_functions import read_watermark

FILE_NAME = 'WadiRum5.JPG'

if __name__ == '__main__':
    image = cv2.imread(FILE_NAME)
    imageHash = hash_file(FILE_NAME)
    key = gen_RSA_keys(1024)
    signature = sign_hash(key, imageHash)
    watermarkedImage = apply_watermark(signature, image)
    cv2.imwrite("WatermarkedImage.png", watermarkedImage)
	
    imageToBeRead = cv2.imread("WatermarkedImage.png")
    sigLength = read_bits(signature, 0)[1]
    watermark = read_watermark(imageToBeRead, sigLength)
    publicKey = key.publickey()
    if publicKey.verify(imageHash.digest(), watermark):
        cv2.imwrite('watermarkedImage.jpg', watermarkedImage)
        print 'Watermarked image saved to directory'
        print 'Watermark successfully applied and verified!'
    else:
        print 'Signature invalid'