function uploadSignedString(string _fingerprint, bytes20 _fingerprintBytes20, string _signedString) public payable {

        
        
        
        
        
        
        
        
        

        
        if (msg.value < priceForVerificationInWei) {
            revert();
            
        }

        
        if (signedStringUploadedOnUnixTime[msg.sender] != 0) {
            revert();
            
        }

        
        if (bytes(_fingerprint).length != 40) {
            revert();
            
        }

        
        if (addressAttached[_fingerprintBytes20] != 0) {
            revert();
            
        }

        
        
        unverifiedFingerprint[msg.sender] = _fingerprint;

        signedString[msg.sender] = verification[msg.sender].signedString = _signedString;

        
        signedStringUploadedOnUnixTime[msg.sender] = block.timestamp;

        SignedStringUploaded(msg.sender, _fingerprint, _signedString);

    }