This is an automated email from the ASF dual-hosted git repository.

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git


The following commit(s) were added to refs/heads/master by this push:
     new 1519c2b  Expose the ability to destroy public keys directly
1519c2b is described below

commit 1519c2ba6094bf2aeb9f3b5a15544a7eed662db2
Author: Antoine Toulme <[email protected]>
AuthorDate: Mon Mar 2 11:18:32 2020 -0800

    Expose the ability to destroy public keys directly
---
 .../src/main/java/org/apache/tuweni/crypto/sodium/Box.java   | 12 +++++++++++-
 .../main/java/org/apache/tuweni/crypto/sodium/Signature.java | 12 +++++++++++-
 .../test/java/org/apache/tuweni/crypto/sodium/BoxTest.java   | 11 +++++++++++
 .../java/org/apache/tuweni/crypto/sodium/SignatureTest.java  | 10 ++++++++++
 4 files changed, 43 insertions(+), 2 deletions(-)

diff --git a/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Box.java 
b/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Box.java
index 56a4125..e8fb0d9 100644
--- a/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Box.java
+++ b/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Box.java
@@ -74,7 +74,7 @@ public final class Box implements AutoCloseable {
   /**
    * A Box public key.
    */
-  public static final class PublicKey {
+  public static final class PublicKey implements Destroyable {
     final Allocated value;
 
     private PublicKey(Pointer ptr, int length) {
@@ -181,6 +181,16 @@ public final class Box implements AutoCloseable {
     public byte[] bytesArray() {
       return value.bytesArray();
     }
+
+    @Override
+    public void destroy() {
+      value.destroy();
+    }
+
+    @Override
+    public boolean isDestroyed() {
+      return value.isDestroyed();
+    }
   }
 
   /**
diff --git 
a/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Signature.java 
b/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Signature.java
index 52b456f..a94fb8b 100644
--- a/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Signature.java
+++ b/crypto/src/main/java/org/apache/tuweni/crypto/sodium/Signature.java
@@ -56,7 +56,7 @@ public final class Signature {
   /**
    * A signing public key.
    */
-  public static final class PublicKey {
+  public static final class PublicKey implements Destroyable {
     final Allocated value;
 
     private PublicKey(Pointer ptr, int length) {
@@ -156,6 +156,16 @@ public final class Signature {
     public byte[] bytesArray() {
       return value.bytesArray();
     }
+
+    @Override
+    public void destroy() {
+      value.destroy();
+    }
+
+    @Override
+    public boolean isDestroyed() {
+      return value.isDestroyed();
+    }
   }
 
   /**
diff --git a/crypto/src/test/java/org/apache/tuweni/crypto/sodium/BoxTest.java 
b/crypto/src/test/java/org/apache/tuweni/crypto/sodium/BoxTest.java
index 950e9ae..7dec77a 100644
--- a/crypto/src/test/java/org/apache/tuweni/crypto/sodium/BoxTest.java
+++ b/crypto/src/test/java/org/apache/tuweni/crypto/sodium/BoxTest.java
@@ -15,8 +15,10 @@ package org.apache.tuweni.crypto.sodium;
 import static java.nio.charset.StandardCharsets.UTF_8;
 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 import org.junit.jupiter.api.BeforeAll;
@@ -191,4 +193,13 @@ class BoxTest {
     Box.KeyPair boxKeyPair = Box.KeyPair.forSignatureKeyPair(keyPair);
     assertEquals(boxKeyPair, Box.KeyPair.forSecretKey(boxSecretKey));
   }
+
+  @Test
+  void testDestroyPublicKey() {
+    Box.KeyPair keyPair = Box.KeyPair.random();
+    Box.PublicKey boxPubKey = 
Box.PublicKey.fromBytes(keyPair.publicKey().bytes());
+    boxPubKey.destroy();
+    assertTrue(boxPubKey.isDestroyed());
+    assertFalse(keyPair.publicKey().isDestroyed());
+  }
 }
diff --git 
a/crypto/src/test/java/org/apache/tuweni/crypto/sodium/SignatureTest.java 
b/crypto/src/test/java/org/apache/tuweni/crypto/sodium/SignatureTest.java
index 2245316..c50c601 100644
--- a/crypto/src/test/java/org/apache/tuweni/crypto/sodium/SignatureTest.java
+++ b/crypto/src/test/java/org/apache/tuweni/crypto/sodium/SignatureTest.java
@@ -13,6 +13,7 @@
 package org.apache.tuweni.crypto.sodium;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
@@ -51,4 +52,13 @@ class SignatureTest {
     assertEquals(Bytes.fromHexString("deadbeef"), messageBytes);
   }
 
+  @Test
+  void testDestroyPublicKey() {
+    Signature.KeyPair keyPair = Signature.KeyPair.random();
+    Signature.PublicKey sigPubKey = 
Signature.PublicKey.fromBytes(keyPair.publicKey().bytes());
+    sigPubKey.destroy();
+    assertTrue(sigPubKey.isDestroyed());
+    assertFalse(keyPair.publicKey().isDestroyed());
+  }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to