· 7 years ago · May 17, 2018, 02:02 PM
1extern crate secp256k1;
2extern crate rand;
3extern crate tiny_keccak;
4extern crate ring;
5extern crate failure;
6
7use ring::aead;
8use ring::rand::{SystemRandom, SecureRandom};
9use tiny_keccak::Keccak;
10use secp256k1::key::{PublicKey, SecretKey};
11use rand::thread_rng;
12use secp256k1::{Secp256k1, ecdh, Message};
13use failure::Error;
14
15struct KeyPair {
16 pubkey: PublicKey,
17 privkey: SecretKey
18}
19fn main() {
20 let a = test();
21 println!("{:?}", a);
22}
23
24fn test() -> Result<i32, Error> {
25 let secp = Secp256k1::new();
26 let (_sk1, _pk1) = secp.generate_keypair(&mut thread_rng()).unwrap();
27 let mykey1 = KeyPair{pubkey: _pk1, privkey: _sk1};
28 let (_sk1, _pk1) = secp.generate_keypair(&mut thread_rng()).unwrap();
29 let mykey2 = KeyPair{pubkey: _pk1, privkey: _sk1};
30 let fuck = PublicKey::from_slice(&secp, &mykey1.pubkey.serialize_uncompressed())?;
31 println!("Fuck: {:?}", fuck);
32 println!("Hello, world! {:?}", mykey1.pubkey);
33
34 let shared1 = ecdh::SharedSecret::new(&secp, &mykey2.pubkey, &mykey1.privkey);
35 let shared2 = ecdh::SharedSecret::new(&secp, &mykey1.pubkey, &mykey2.privkey);
36// println!("Fullrange pubkey: {}", mykey2.pubkey.index)
37 println!("Shared1: {:?}", &shared1[..]);
38 for i in shared1[..].iter() {
39 print!("{:x}", i);
40 }
41 println!();
42 println!("Shared1: {:?}", shared1);
43
44// let testmsg: Vec<u8> = From::from("Elichai");
45 let testmsg = b"Elichai".to_vec();
46 let aes = aead::SealingKey::new(&aead::AES_256_GCM, &shared1[..])?;
47 let mut iv: [u8; 32] = [0; 32];
48 let r = SystemRandom::new();
49 r.fill(&mut iv);
50 let mut in_out = testmsg.clone();
51 let tag_size = aead::AES_256_GCM.tag_len();
52 for _ in 0..tag_size {
53 in_out.push(0);
54 }
55 let additional_data: [u8; 0] = [];
56 let sealSize = aead::seal_in_place(&aes, &iv, &additional_data, &mut in_out, tag_size).unwrap();
57}