projects
/
paraslash.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
96bd269
)
crypt_common.c: Add missing doxygen documentation.
author
Andre Noll
<maan@systemlinux.org>
Mon, 25 Apr 2011 13:23:48 +0000
(15:23 +0200)
committer
Andre Noll
<maan@systemlinux.org>
Wed, 6 Jul 2011 06:41:25 +0000
(08:41 +0200)
crypt_common.c
patch
|
blob
|
history
diff --git
a/crypt_common.c
b/crypt_common.c
index 05d71de4076cee75a6c285acc5bc0334dfe1db17..8fac0dc71ed37a7dff633a2891d4ada1a0c0376b 100644
(file)
--- a/
crypt_common.c
+++ b/
crypt_common.c
@@
-4,7
+4,7
@@
* Licensed under the GPL v2. For licencing details see COPYING.
*/
* Licensed under the GPL v2. For licencing details see COPYING.
*/
-/** \file crypt_common.c Crypto functions independent of
the implementation
. */
+/** \file crypt_common.c Crypto functions independent of
openssl/libgcrypt
. */
#include <regex.h>
#include <stdbool.h>
#include <regex.h>
#include <stdbool.h>
@@
-15,6
+15,7
@@
#include "crypt_backend.h"
#include "crypt.h"
#include "crypt_backend.h"
#include "crypt.h"
+/** If the key begins with this text, we treat it as an ssh key. */
#define KEY_TYPE_TXT "ssh-rsa"
/**
#define KEY_TYPE_TXT "ssh-rsa"
/**
@@
-54,11
+55,19
@@
size_t is_ssh_rsa_key(char *data, size_t size)
static const char Base64[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static const char Pad64 = '=';
static const char Base64[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
static const char Pad64 = '=';
-/*
+
+/**
+ * base64-decode a buffer.
+ *
+ * \param src The buffer to decode.
+ * \param target Result is stored here.
+ * \param targsize Number of bytes of \a target.
+ *
* Skips all whitespace anywhere. Converts characters, four at a time, starting
* at (or after) src from base - 64 numbers into three 8 bit bytes in the
* Skips all whitespace anywhere. Converts characters, four at a time, starting
* at (or after) src from base - 64 numbers into three 8 bit bytes in the
- * target area. it returns the number of data bytes stored at the target, or -E_BASE64
- * on error.
+ * target area.
+ *
+ * \return The number of data bytes stored at the target, -E_BASE64 on errors.
*/
int base64_decode(char const *src, unsigned char *target, size_t targsize)
{
*/
int base64_decode(char const *src, unsigned char *target, size_t targsize)
{
@@
-177,6
+186,17
@@
int base64_decode(char const *src, unsigned char *target, size_t targsize)
return tarindex;
}
return tarindex;
}
+/**
+ * uudecode a buffer.
+ *
+ * \param src The buffer to decode.
+ * \param target Result buffer.
+ * \param targsize The length of \a target in bytes.
+ *
+ * This is just a simple wrapper for base64_decode() which strips whitespace.
+ *
+ * \return The return value of the underlying call to base64_decode().
+ */
int uudecode(const char *src, unsigned char *target, size_t targsize)
{
int len;
int uudecode(const char *src, unsigned char *target, size_t targsize)
{
int len;
@@
-196,9
+216,15
@@
int uudecode(const char *src, unsigned char *target, size_t targsize)
return len;
}
return len;
}
-/*
- * Can not use the inline functions of portable_io.h here because the byte
- * order is different.
+/**
+ * Read a 4-byte number from a buffer in big-endian format.
+ *
+ * \param vp The buffer.
+ *
+ * The byte-order of the buffer is expected to be big-endian, unlike read_u32()
+ * of portable_io.h which expects little endian.
+ *
+ * \return The 32 bit number given by \a vp.
*/
uint32_t read_ssh_u32(const void *vp)
{
*/
uint32_t read_ssh_u32(const void *vp)
{
@@
-213,6
+239,19
@@
uint32_t read_ssh_u32(const void *vp)
return v;
}
return v;
}
+/**
+ * Sanity checks for the header of an ssh key.
+ *
+ * \param blob The buffer.
+ * \param blen The number of bytes of \a blob.
+ *
+ * This performs some checks to make sure we really have an ssh key. It also
+ * computes the offset in bytes of the start of the key values (modulus,
+ * exponent..).
+ *
+ * \return The number of bytes to skip until the start of the first encoded
+ * number (usually 11).
+ */
int check_ssh_key_header(const unsigned char *blob, int blen)
{
const unsigned char *p = blob, *end = blob + blen;
int check_ssh_key_header(const unsigned char *blob, int blen)
{
const unsigned char *p = blob, *end = blob + blen;
@@
-234,6
+273,18
@@
int check_ssh_key_header(const unsigned char *blob, int blen)
return 4 + rlen;
}
return 4 + rlen;
}
+/**
+ * Check existence and permissions of a key file.
+ *
+ * \param file The path of the key file.
+ * \param private_key Whether this is a private key.
+ *
+ * This checks whether the file exists. If it is a private key, we additionally
+ * check that the permissions are restrictive enough. It is considered an error
+ * if we own the file and it is readable for others.
+ *
+ * \return Standard.
+ */
int check_key_file(const char *file, bool private_key)
{
struct stat st;
int check_key_file(const char *file, bool private_key)
{
struct stat st;