File: subtle.rs

package info (click to toggle)
rust-hybrid-array 0.4.5-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 212 kB
  • sloc: makefile: 2
file content (29 lines) | stat: -rw-r--r-- 756 bytes parent folder | download
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
//! Tests for `subtle` crate integration.

#![cfg(feature = "subtle")]

use hybrid_array::{Array, typenum::U3};
use subtle::{Choice, ConditionallySelectable, ConstantTimeEq};

#[test]
fn constant_time_eq() {
    let a: Array<u8, U3> = Array([0, 0, 0]);
    let b: Array<u8, U3> = Array([1, 2, 3]);

    assert!(bool::from(a.ct_eq(&a)));
    assert!(!bool::from(a.ct_ne(&a)));
    assert!(!bool::from(a.ct_eq(&b)));
    assert!(bool::from(a.ct_ne(&b)));
}

#[test]
fn conditional_select() {
    let a: Array<u8, U3> = Array([0, 0, 0]);
    let b: Array<u8, U3> = Array([1, 2, 3]);

    let c = Array::conditional_select(&a, &b, Choice::from(0));
    assert_eq!(a, c);

    let d = Array::conditional_select(&a, &b, Choice::from(1));
    assert_eq!(b, d);
}