aboutsummaryrefslogtreecommitdiffstats
path: root/library/sodium-plus/lib/keytypes/x25519sk.js
diff options
context:
space:
mode:
Diffstat (limited to 'library/sodium-plus/lib/keytypes/x25519sk.js')
-rw-r--r--library/sodium-plus/lib/keytypes/x25519sk.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/library/sodium-plus/lib/keytypes/x25519sk.js b/library/sodium-plus/lib/keytypes/x25519sk.js
new file mode 100644
index 000000000..8b8016f83
--- /dev/null
+++ b/library/sodium-plus/lib/keytypes/x25519sk.js
@@ -0,0 +1,29 @@
+const CryptographyKey = require('../cryptography-key');
+
+class X25519SecretKey extends CryptographyKey {
+ constructor(buf) {
+ if (buf.length !== 32) {
+ throw new Error('X25519 secret keys must be 32 bytes long');
+ }
+ super(buf);
+ this.keyType = 'x25519';
+ this.publicKey = false;
+ }
+
+ /**
+ * @return {X25519SecretKey}
+ */
+ static from() {
+ return new X25519SecretKey(Buffer.from(...arguments));
+ }
+
+ isX25519Key() {
+ return true;
+ }
+
+ isPublicKey() {
+ return false;
+ }
+}
+
+module.exports = X25519SecretKey;