File size: 4,637 Bytes
785022a
089bad2
49d4a4b
d9650af
785022a
d9650af
785022a
089bad2
a656504
 
d9650af
 
 
 
 
785022a
 
d9650af
 
 
 
842bf1d
9fde426
 
785022a
9fde426
 
 
 
 
 
0425e00
9fde426
 
 
089bad2
 
 
 
9fde426
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
089bad2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d9650af
089bad2
0425e00
a656504
33a841b
49d4a4b
089bad2
3dece81
49d4a4b
 
785022a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import gradio as gr
import chatchain
import crypt
import os
rec_list = []
pa=os.environ['PASS']

main_chain='https://huggingface.co/datasets/Omnibus/chat-at/raw/main/chat/'


def checkp(inp):
    if inp == pa:
        return gr.update(visible=False), gr.update(visible=True)
    elif inp != pa:
        return gr.update(visible=True), gr.update(visible=False)

with gr.Blocks() as app:
    with gr.Row(visible=True) as invalid:
        pass_box = gr.Textbox()
        pass_btn = gr.Button()
        
    with gr.Group(visible=False) as valida: 
        gr.Column()
        with gr.Column():
            with gr.Row():
                with gr.Tab("Messages"):
                    with gr.Accordion("Key"):
                        input_key = gr.Image(label="Key",type="filepath")
                            
                    with gr.Row():
                        with gr.Column():
                            sender=gr.Textbox(label = "Sender", interactive = False)
                            rec=gr.Dropdown(label="Recipient", choices=[f for f in rec_list], allow_custom_value=True)
                            send_mes=gr.Textbox(label="Message", lines=6)
                            send_mes_btn=gr.Button()
                        with gr.Column():
                            block_text = gr.Textbox(label = "System", interactive = False)
                            response_json=gr.JSON()
                            rec_mes = gr.Textbox(lines=6)
            
            
                        
                with gr.Tab("BC"):
                    with gr.Row():
                        with gr.Tab("Gen Wal"):
                            gen_wal_btn=gr.Button()
                            seed = gr.Textbox(label='Seed Phrase')
                            img1=gr.Pil(label='Private Key')
                            out1 = gr.Textbox(label='Private Key',max_lines=4)
                            img2=gr.Pil(label='Public Key')
                            out2 = gr.Textbox(label='Public Key',max_lines=4)
                            img3=gr.Pil(label='Address')
                            out3 = gr.Textbox(label='Address')
                        with gr.Tab("Encrypt"):
                            rsa_to_enc = gr.Textbox(label="txt to encrypt")
                            pub_key_in = gr.Image(label="Public Key", type="filepath")
                            priv_key_in1 = gr.Image(label="Private Key(sig)", type="filepath")
                            rsa_enc_btn = gr.Button("RSA Encrypt")
                            rsa_enc_mes = gr.Textbox(label="encoded", max_lines=4)
                            qr_enc_mes = gr.Image(type="filepath")
                        with gr.Tab("Decrypt"):
                            mes_in = gr.Image(label="Message", type="filepath")
                            priv_key_in = gr.Image(label="Private Key", type="filepath")
                            rsa_dec_btn = gr.Button("RSA Decrypt")
                            rsa_dec_mes = gr.Textbox(label="decoded")  
        gr.Column()
    def test_fn(im):
        return (im)


    def update_rec_list():
        f_ist = (api.list_repo_files(repo_id=f'{repo}/{name}', repo_type="dataset"))
        rec_list =[]
        for i,ea in enumerate(f_ist):
            if "balance/" in ea:
                try:
                    if not "__Source__" in ea:
                        rec_list.append(ea.split("/",1)[1].split(".",1)[0])
                except Exception:
                    pass
        return rec_list, gr.Dropdown.update(label="Recipient", choices=[f for f in rec_list])
    rec_list, rec_drop = update_rec_list()


        
    def create_new_chain(address):
        address = str(address.strip("b").strip("'"))
        mychain_rec = chatchain.MyChainRec(chain_load=main_chain,create=address)
        response = {'chain': mychain_rec.chain,
                'length': len(mychain_rec.chain)}
        
        message = f"Blockchain loaded from: {main_chain}{address}.json"
        #send_list,send_drop = update_send_list()
        rec_list, rec_drop = update_rec_list()
    
        return response,message,rec_drop       
    input_key.change(crypt.address,input_key,sender)
    
    pass_btn.click(checkp,pass_box,[invalid,valida])

    gen_wal_btn.click(crypt.generate_keys,None,[out2,out1,img3,out3,img1,img2]).then(create_new_chain,out1,[response_json,block_text,rec]).then(test_fn,[img1],[input_key])
    rsa_enc_btn.click(crypt.encrypt_text,[rsa_to_enc,pub_key_in,priv_key_in1,out3],[rsa_enc_mes,qr_enc_mes])
    rsa_dec_btn.click(crypt.decrypt_text,[mes_in,priv_key_in],rsa_dec_mes)                

app.launch()