File
Blob: src/workerd/api/crypto/dh.h
| 1 | #pragma once |
| 2 | |
| 3 | #include <workerd/jsg/jsg.h> |
| 4 | |
| 5 | #include <openssl/base.h> |
| 6 | |
| 7 | #include <kj/common.h> |
| 8 | |
| 9 | namespace workerd::api { |
| 10 | |
| 11 | class DiffieHellman final { |
| 12 | public: |
| 13 | DiffieHellman(kj::StringPtr group); |
| 14 | DiffieHellman(kj::OneOf<kj::Array<kj::byte>, int>& sizeOrKey, |
| 15 | kj::OneOf<kj::Array<kj::byte>, int>& generator); |
| 16 | DiffieHellman(DiffieHellman&&) = default; |
| 17 | DiffieHellman& operator=(DiffieHellman&&) = default; |
| 18 | KJ_DISALLOW_COPY(DiffieHellman); |
| 19 | |
| 20 | void setPrivateKey(kj::ArrayPtr<kj::byte> key); |
| 21 | void setPublicKey(kj::ArrayPtr<kj::byte> key); |
| 22 | |
| 23 | jsg::JsUint8Array getPublicKey(jsg::Lock& js) KJ_WARN_UNUSED_RESULT; |
| 24 | jsg::JsUint8Array getPrivateKey(jsg::Lock& js) KJ_WARN_UNUSED_RESULT; |
| 25 | jsg::JsUint8Array getGenerator(jsg::Lock& js) KJ_WARN_UNUSED_RESULT; |
| 26 | jsg::JsUint8Array getPrime(jsg::Lock& js) KJ_WARN_UNUSED_RESULT; |
| 27 | jsg::JsUint8Array computeSecret(jsg::Lock& js, kj::ArrayPtr<kj::byte> key) KJ_WARN_UNUSED_RESULT; |
| 28 | jsg::JsUint8Array generateKeys(jsg::Lock& js) KJ_WARN_UNUSED_RESULT; |
| 29 | |
| 30 | kj::Maybe<int> check() KJ_WARN_UNUSED_RESULT; |
| 31 | |
| 32 | private: |
| 33 | kj::Own<DH> dh; |
| 34 | }; |
| 35 | |
| 36 | } // namespace workerd::api |