|
|
@@ -0,0 +1,72 @@ |
|
|
|
/*- |
|
|
|
* Copyright 2016 Vsevolod Stakhov |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* You may obtain a copy of the License at |
|
|
|
* |
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
|
|
* |
|
|
|
* Unless required by applicable law or agreed to in writing, software |
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
|
|
* See the License for the specific language governing permissions and |
|
|
|
* limitations under the License. |
|
|
|
*/ |
|
|
|
#ifndef SRC_LIBCRYPTOBOX_KEYPAIR_H_ |
|
|
|
#define SRC_LIBCRYPTOBOX_KEYPAIR_H_ |
|
|
|
|
|
|
|
#include "config.h" |
|
|
|
#include "cryptobox.h" |
|
|
|
#include "ucl.h" |
|
|
|
|
|
|
|
/** |
|
|
|
* Keypair type |
|
|
|
*/ |
|
|
|
enum rspamd_cryptobox_keypair_type { |
|
|
|
RSPAMD_KEYPAIR_KEX = 0, |
|
|
|
RSPAMD_KEYPAIR_SIGN |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* Algorithm used for keypair |
|
|
|
*/ |
|
|
|
enum rspamd_cryptobox_keypair_algorithm { |
|
|
|
RSPAMD_KEYPAIR_NIST = 0, |
|
|
|
RSPAMD_KEYPAIR_25519 |
|
|
|
}; |
|
|
|
|
|
|
|
/** |
|
|
|
* Opaque structure for the full (public + private) keypair |
|
|
|
*/ |
|
|
|
struct rspamd_cryptobox_keypair; |
|
|
|
/** |
|
|
|
* Opaque structure for public only keypair |
|
|
|
*/ |
|
|
|
struct rspamd_cryptobox_keypair_public; |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates new full keypair |
|
|
|
* @param type type of the keypair |
|
|
|
* @param alg algorithm for the keypair |
|
|
|
* @return fresh keypair generated |
|
|
|
*/ |
|
|
|
struct rspamd_cryptobox_keypair* rspamd_keypair_new ( |
|
|
|
enum rspamd_cryptobox_keypair_type type, |
|
|
|
enum rspamd_cryptobox_keypair_algorithm alg); |
|
|
|
|
|
|
|
/** |
|
|
|
* Increase refcount for the specific keypair |
|
|
|
* @param kp |
|
|
|
* @return |
|
|
|
*/ |
|
|
|
struct rspamd_cryptobox_keypair* rspamd_keypair_ref ( |
|
|
|
struct rspamd_cryptobox_keypair *kp); |
|
|
|
|
|
|
|
/** |
|
|
|
* Decrease refcount for the specific keypair (or destroy when refcount == 0) |
|
|
|
* @param kp |
|
|
|
*/ |
|
|
|
void rspamd_keypair_unref (struct rspamd_cryptobox_keypair *kp); |
|
|
|
|
|
|
|
#endif /* SRC_LIBCRYPTOBOX_KEYPAIR_H_ */ |