aboutsummaryrefslogtreecommitdiff
path: root/openssl/src
diff options
context:
space:
mode:
Diffstat (limited to 'openssl/src')
-rw-r--r--openssl/src/crypto/pkey.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/openssl/src/crypto/pkey.rs b/openssl/src/crypto/pkey.rs
index 33433b0c..e93757a1 100644
--- a/openssl/src/crypto/pkey.rs
+++ b/openssl/src/crypto/pkey.rs
@@ -352,6 +352,12 @@ impl PKey {
}
}
+impl PartialEq<PKey> for PKey {
+ fn eq(&self, other: &PKey) -> bool {
+ unsafe { ffi::EVP_PKEY_cmp(self.evp, other.evp) == 1 }
+ }
+}
+
impl Drop for PKey {
fn drop(&mut self) {
unsafe {
@@ -373,6 +379,7 @@ mod tests {
k0.gen(512);
k1.load_pub(&k0.save_pub());
assert_eq!(k0.save_pub(), k1.save_pub());
+ assert!(k0 == k1);
assert_eq!(k0.size(), k1.size());
assert!(k0.can(super::Role::Encrypt));
assert!(k0.can(super::Role::Decrypt));
@@ -391,6 +398,7 @@ mod tests {
k0.gen(512);
k1.load_priv(&k0.save_priv());
assert_eq!(k0.save_priv(), k1.save_priv());
+ assert!(k0 == k1);
assert_eq!(k0.size(), k1.size());
assert!(k0.can(super::Role::Encrypt));
assert!(k0.can(super::Role::Decrypt));
@@ -461,4 +469,26 @@ mod tests {
assert!(k1.verify_with_hash(&msg, &sig, MD5));
assert!(!k1.verify_with_hash(&msg, &sig, SHA1));
}
+
+ #[test]
+ fn test_eq() {
+ let mut k0 = super::PKey::new();
+ let mut p0 = super::PKey::new();
+ let mut k1 = super::PKey::new();
+ let mut p1 = super::PKey::new();
+ k0.gen(512);
+ k1.gen(512);
+ p0.load_pub(&k0.save_pub());
+ p1.load_pub(&k1.save_pub());
+
+ assert!(k0 == k0);
+ assert!(k1 == k1);
+ assert!(p0 == p0);
+ assert!(p1 == p1);
+
+ assert!(k0 != k1);
+ assert!(p0 != p1);
+ assert!(k0 != p1);
+ assert!(p0 != k1);
+ }
}