diff options
author | Sage Weil <sage@newdream.net> | 2010-02-02 16:07:07 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2010-02-10 15:04:46 -0800 |
commit | 8b6e4f2d8b21c25225b1ce8d53a2e03b92cc8522 (patch) | |
tree | a89355726cc37f064629232360574531eec8dc4a /fs/ceph/crypto.h | |
parent | c7e337d6490d6f2f5e66ddf1b04d00b0dbd10108 (diff) | |
download | op-kernel-dev-8b6e4f2d8b21c25225b1ce8d53a2e03b92cc8522.zip op-kernel-dev-8b6e4f2d8b21c25225b1ce8d53a2e03b92cc8522.tar.gz |
ceph: aes crypto and base64 encode/decode helpers
Helpers to encrypt/decrypt AES and base64.
Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/crypto.h')
-rw-r--r-- | fs/ceph/crypto.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/fs/ceph/crypto.h b/fs/ceph/crypto.h new file mode 100644 index 0000000..40b502e --- /dev/null +++ b/fs/ceph/crypto.h @@ -0,0 +1,48 @@ +#ifndef _FS_CEPH_CRYPTO_H +#define _FS_CEPH_CRYPTO_H + +#include "types.h" +#include "buffer.h" + +/* + * cryptographic secret + */ +struct ceph_crypto_key { + int type; + struct ceph_timespec created; + int len; + void *key; +}; + +static inline void ceph_crypto_key_destroy(struct ceph_crypto_key *key) +{ + kfree(key->key); +} + +extern int ceph_crypto_key_encode(struct ceph_crypto_key *key, + void **p, void *end); +extern int ceph_crypto_key_decode(struct ceph_crypto_key *key, + void **p, void *end); +extern int ceph_crypto_key_unarmor(struct ceph_crypto_key *key, const char *in); + +/* crypto.c */ +extern int ceph_decrypt(struct ceph_crypto_key *secret, + void *dst, size_t *dst_len, + const void *src, size_t src_len); +extern int ceph_encrypt(struct ceph_crypto_key *secret, + void *dst, size_t *dst_len, + const void *src, size_t src_len); +extern int ceph_decrypt2(struct ceph_crypto_key *secret, + void *dst1, size_t *dst1_len, + void *dst2, size_t *dst2_len, + const void *src, size_t src_len); +extern int ceph_encrypt2(struct ceph_crypto_key *secret, + void *dst, size_t *dst_len, + const void *src1, size_t src1_len, + const void *src2, size_t src2_len); + +/* armor.c */ +extern int ceph_armor(char *dst, const void *src, const void *end); +extern int ceph_unarmor(void *dst, const char *src, const char *end); + +#endif |