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
// Copyright 2019 Stichting Organism
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//! Keys to the kingdom

//! Schnorr signatures on the 2-tortsion free subgroup of ed25519,
//! as provided by the Ristretto point compression.s


mod public;
pub use public::{
    PUBLIC_KEY_LENGTH, 
    PublicKey
};

mod secret;
pub use secret::{
    SECRET_KEY_LENGTH, 
    SecretKey
};

mod pair;
pub use pair::{
    KEYPAIR_LENGTH, 
    Keypair
};

/// Musig Key
mod multikey;
pub use multikey::MultiKey;


mod extended;
pub use extended::{
    XSecretKey,
    XPublicKey
};




#[cfg(test)]
mod tests {
    use super::*;
    use mohan::dalek::{
        scalar::Scalar,
        ristretto::RistrettoPoint,
        traits::Identity
    };

    #[test]
    fn test_identity_keys() {
        //generate sk
        let sk = SecretKey(Scalar::zero());
        //generate our pk
        let pk = PublicKey::from_secret(&sk);
        
        assert_eq!(pk.into_point(), RistrettoPoint::identity());
    }

}