From 394a272b53384052bf7b8e3afc922243de897cfe Mon Sep 17 00:00:00 2001 From: heck Date: Mon, 20 Jun 2022 20:48:11 +0200 Subject: [PATCH] Add API method "provision(url)" (as described in the signedpkg header-file) --- src/codegen/pEp.yml2 | 1 + src/cxx/basic_api.cc | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/codegen/pEp.yml2 b/src/codegen/pEp.yml2 index 7ec2584..13f4965 100644 --- a/src/codegen/pEp.yml2 +++ b/src/codegen/pEp.yml2 @@ -275,6 +275,7 @@ namespace pEp { basic void config_passphrase(string passphrase); basic void config_passphrase_for_new_keys(bool enable, string passphrase); basic bytearray export_key(string fpr); + basic void provision(string url); }; struct message { diff --git a/src/cxx/basic_api.cc b/src/cxx/basic_api.cc index 4f9960c..41729e1 100644 --- a/src/cxx/basic_api.cc +++ b/src/cxx/basic_api.cc @@ -1,7 +1,11 @@ +#include #include #include #include #include +#include +#include + #ifndef ANDROID #include @@ -539,5 +543,24 @@ JNIEXPORT jbyteArray JNICALL Java_foundation_pEp_jniadapter_Engine__1export_1key return from_string(env, buff); } +JNIEXPORT void JNICALL Java_foundation_pEp_jniadapter_Engine__1provision(JNIEnv *env, + jobject obj, + jbyteArray url) +{ + const char *_url = to_string(env, url); + + std::cout << "PROVISION: " << _url << std::endl; + + pEp::UpdateClient::product p { "provisioning data", std::string(_url) }; + pEp::UpdateClient::PublicKey update_key; + pEp::UpdateClient::load_key("update_key.der"); + CryptoPP::ed25519PublicKey deployment_key; + SignedPackage::LoadPublicKey("deployment_key-pub.der", deployment_key); + CryptoPP::RSA::PrivateKey provisioning_key; + SignedPackage::LoadPrivateKey("provisioning_key.der", provisioning_key); + SignedPackage::provision_user(p, update_key, deployment_key, provisioning_key); + +} + } // extern "C"