From 7d8ab33ce828eb7ab70ba4e6cfcbd45e3bd59ee1 Mon Sep 17 00:00:00 2001 From: server Date: Mon, 14 Aug 2023 15:51:31 -0400 Subject: [PATCH] Mon Aug 14 03:51:31 PM EDT 2023 --- bin/CryptoFoleo.h | 3 +- bin/CryptoFoleo.hs | 54 ++++++++++++++++++++++-------------- bin/libCryptoFoleo.so | Bin 44592 -> 44816 bytes src/all.c | 4 ++- src/auth.c | 34 +++++++++++++++++++++++ src/headers.h | 3 +- src/pam | Bin 16400 -> 0 bytes src/pam.c | 62 ------------------------------------------ src/test | Bin 16296 -> 0 bytes src/test2.c | 51 ---------------------------------- 10 files changed, 75 insertions(+), 136 deletions(-) create mode 100644 src/auth.c delete mode 100755 src/pam delete mode 100644 src/pam.c delete mode 100755 src/test delete mode 100644 src/test2.c diff --git a/bin/CryptoFoleo.h b/bin/CryptoFoleo.h index f45039d..c7a6885 100644 --- a/bin/CryptoFoleo.h +++ b/bin/CryptoFoleo.h @@ -43,4 +43,5 @@ uint8_t* foleo_hmac(uint8_t, uint8_t*, uint32_t, uint8_t*, uint32_t); uint8_t* foleo_hmac_hkdf(uint8_t, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t); uint8_t* foleo_hmac_prf(uint8_t, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t); -uint8_t foleo_hash_size(uint8_t); \ No newline at end of file +uint8_t foleo_hash_size(uint8_t); +uint8_t foleo_auth(const char*, const char*); diff --git a/bin/CryptoFoleo.hs b/bin/CryptoFoleo.hs index 401baa0..f5c6bc1 100644 --- a/bin/CryptoFoleo.hs +++ b/bin/CryptoFoleo.hs @@ -3,6 +3,7 @@ module CryptoFoleo dhke, chacha20, poly1305, + chacha20_poly1305, rsa_keygen, rsa_import, @@ -22,7 +23,8 @@ module CryptoFoleo rsa_padding_oaep, rsa_padding_pss, - byteStringToHexString + byteStringToHexString, + fromNumberFixedSize ) where import System.IO as IO @@ -33,7 +35,6 @@ import Data.ByteString as BS import Data.ByteString.Internal import Data.Word import Data.ByteString.Unsafe -import Control.DeepSeq import Control.Monad import qualified Data.ByteString.Internal as BI import qualified Foreign.Marshal.Utils as MU @@ -149,7 +150,7 @@ rsa_keygen n fn = do c_rsa_keygen (fromIntegral n) pubKeyPtr prvKeyPtr pubKey <- BI.create keySize (\ptr -> MU.copyBytes ptr (castPtr pubKeyPtr) keySize) prvKey <- BI.create keySize (\ptr -> MU.copyBytes ptr (castPtr prvKeyPtr) keySize) - fn pubKey prvKey + fn prvKey pubKey rsa_free pubKey rsa_free prvKey @@ -176,31 +177,31 @@ rsa_export keyBS = do rsa_free :: ByteString -> IO() rsa_free blob = useAsCString blob $ \ptr -> c_rsa_free (castPtr ptr) -dhke :: (ByteString, ByteString) -> IO (ByteString) +dhke :: [ByteString] -> IO (ByteString) dhke v = do c_modSize <- c_dhke_modsize let modSize = fromIntegral c_modSize - if ((BS.length(fst v) + BS.length(snd v)) == 0) then do + if Prelude.length v == 0 then do secretPtr <- c_dhke nullPtr nullPtr bsPtr <- BI.create modSize (\ptr -> MU.copyBytes ptr (castPtr secretPtr) modSize) c_free secretPtr return bsPtr - else if (BS.length(snd v) == 0) then do - useAsCString (fst v) $ \secretPtr -> do + else if Prelude.length v == 1 then do + useAsCString (v !! 0) $ \secretPtr -> do sharePtr <- c_dhke (castPtr secretPtr) nullPtr bsPtr <- BI.create modSize (\ptr -> MU.copyBytes ptr (castPtr sharePtr) modSize) c_free sharePtr return bsPtr - else if (BS.length(snd v) > 0) then do - useAsCString (fst v) $ \secretPtr -> do - useAsCString (snd v) $ \sharePtr -> do + else if Prelude.length v == 2 then do + useAsCString (v !! 0) $ \secretPtr -> do + useAsCString (v !! 1) $ \sharePtr -> do keyPtr <- c_dhke (castPtr secretPtr) (castPtr sharePtr) bsPtr <- BI.create modSize (\ptr -> MU.copyBytes ptr (castPtr keyPtr) modSize) c_free keyPtr return bsPtr else return BS.empty -sha256 :: ByteString -> IO (String) +sha256 :: ByteString -> IO (ByteString) sha256 ptBS = do let ptSize :: Word32 ptSize = fromIntegral (BS.length ptBS) @@ -208,7 +209,7 @@ sha256 ptBS = do hPtr <- c_sha256 (castPtr ptPtr) (fromIntegral ptSize) hBS <- BI.create 32 (\ptr -> MU.copyBytes ptr (castPtr hPtr) 32) c_free hPtr - return (byteStringToHexString hBS) + return hBS hmac :: Int -> ByteString -> ByteString -> IO (ByteString) hmac h k m = do @@ -249,13 +250,15 @@ hmac_hkdf hf db sc lb sd = do c_free rPtr return r -chacha20 :: ByteString -> ByteString -> Int -> Int -> IO (ByteString) +chacha20 :: ByteString -> Integer -> Int -> Int -> IO (ByteString) chacha20 key nonce block count = do - if (BS.length key) /= 32 || (BS.length nonce) /= 12 || block < 0 || count < 0 then + let nonceBS :: BS.ByteString + nonceBS = fromNumberFixedSize nonce 12 + if (BS.length key) /= 32 || (BS.length nonceBS) /= 12 || block < 0 || count < 0 then return BS.empty else useAsCString key $ \keyPtr -> do - useAsCString nonce $ \noncePtr -> do + useAsCString nonceBS $ \noncePtr -> do rPtr <- c_chacha20 (castPtr keyPtr) (castPtr noncePtr) (fromIntegral block) (fromIntegral count) r <- BI.create count (\ptr -> MU.copyBytes ptr (castPtr rPtr) count) c_free rPtr @@ -273,20 +276,21 @@ poly1305 k m = do c_free hPtr return h -chacha20_poly1305 :: ByteString -> ByteString -> ByteString -> IO (ByteString) +chacha20_poly1305 :: ByteString -> Integer -> ByteString -> IO (ByteString) chacha20_poly1305 key nonce ctext = do - if (BS.length key) /= 32 || (BS.length nonce) /= 12 then + let nonceBS :: BS.ByteString + nonceBS = fromNumberFixedSize nonce 12 + if (BS.length key) /= 32 || (BS.length nonceBS) /= 12 then return BS.empty else useAsCString key $ \keyPtr -> do - useAsCString nonce $ \noncePtr -> do + useAsCString nonceBS $ \noncePtr -> do useAsCString ctext $ \ctextPtr -> do rPtr <- c_chacha20_poly1305 (castPtr keyPtr) (castPtr noncePtr) (castPtr ctextPtr) (fromIntegral (BS.length ctext)) r <- BI.create 16 (\ptr -> MU.copyBytes ptr (castPtr rPtr) 16) c_free rPtr return r - byteToHexString :: Word8 -> String byteToHexString b = do case (div b 16) of @@ -326,7 +330,6 @@ byteToHexString b = do 14 -> "e" 15 -> "f" _ -> "0" - byteStringToByteList :: ByteString -> [Word8] byteStringToByteList b = BS.unpack b @@ -336,3 +339,14 @@ byteStringToHexString b = Prelude.foldr (\i s -> (byteToHexString i) ++ s) "" (b byteStringToInteger :: ByteString -> Integer byteStringToInteger = foldl' (\acc byte -> acc * 256 + fromIntegral byte) 0 + +fromNumberFixedSize :: Integer -> Int -> BS.ByteString +fromNumberFixedSize n p = do + if n < 0 || p < 0 then BS.empty + else do + let fn :: Integer -> [Word8] -> [Word8] + fn x r = if x == 0 then r else fn (div x 256) ([fromIntegral (mod x 256)] ++ r) + pd :: [Word8] -> [Word8] + pd x = if (Prelude.length x) < p then pd ([0] ++ x) else x + rt = pd (fn n []) + BS.pack $ if (Prelude.length rt) > p then Prelude.drop ((Prelude.length rt) - p) rt else rt \ No newline at end of file diff --git a/bin/libCryptoFoleo.so b/bin/libCryptoFoleo.so index 8b3724f0460aadbd9dc3269d812749d20875dadb..b5387187cbd296f8ef1efb2213afe8a3af57d3ff 100755 GIT binary patch delta 7613 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 WZU06sl|`43YQIHGJtE_F|NjD6z?Ulk delta 6966 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 +#include +#include +#include +#include +#include +#include +#include + +uint8_t foleo_auth(const char *username, const char* password) { + struct spwd spw, *result; + char *buf; + size_t bufsize; + + bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); + if (bufsize == -1) { + bufsize = 16384; // use a default size if sysconf returns indeterminate size + } + + buf = malloc(bufsize); + getspnam_r(username, &spw, buf, bufsize, &result); + if (result == NULL) + { + free(buf); + return 0; + } + + int status = strcmp(crypt(password, spw.sp_pwdp), spw.sp_pwdp) == 0; + free(buf); + return status; +} +#endif diff --git a/src/headers.h b/src/headers.h index f45039d..c7a6885 100644 --- a/src/headers.h +++ b/src/headers.h @@ -43,4 +43,5 @@ uint8_t* foleo_hmac(uint8_t, uint8_t*, uint32_t, uint8_t*, uint32_t); uint8_t* foleo_hmac_hkdf(uint8_t, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t); uint8_t* foleo_hmac_prf(uint8_t, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t, uint8_t*, uint32_t); -uint8_t foleo_hash_size(uint8_t); \ No newline at end of file +uint8_t foleo_hash_size(uint8_t); +uint8_t foleo_auth(const char*, const char*); diff --git a/src/pam b/src/pam deleted file mode 100755 index b603d34b2cba696fe62022fba662d12389376baa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16400 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 C%o>FN diff --git a/src/pam.c b/src/pam.c deleted file mode 100644 index aa39d17..0000000 --- a/src/pam.c +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef __PAM__ -#define __PAM__ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -static int pamconv(int num_msg, const struct pam_message **msg, - struct pam_response **resp, void *appdata_ptr) -{ - char *pass = malloc(strlen(appdata_ptr)+1); - strcpy(pass, appdata_ptr); - - int i; - - *resp = calloc(num_msg, sizeof(struct pam_response)); - - for (i = 0; i < num_msg; ++i) - { - /* Ignore all PAM messages except prompting for hidden input */ - if (msg[i]->msg_style != PAM_PROMPT_ECHO_OFF) - continue; - - /* Assume PAM is only prompting for the password as hidden input */ - resp[i]->resp = pass; - } - - return PAM_SUCCESS; -} - -bool checkAuthentication(const char *user, const char *pass) -{ - /* use own PAM conversation function just responding with the - password passed here */ - struct pam_conv conv = { &pamconv, (void *)pass }; - - pam_handle_t *handle; - int authResult; - - pam_start("shutterd", user, &conv, &handle); - authResult = pam_authenticate(handle, - PAM_SILENT|PAM_DISALLOW_NULL_AUTHTOK); - pam_end(handle, authResult); - - return (authResult == PAM_SUCCESS); -} - - -void main() -{ - printf("%i\n", checkAuthentication("home", "jasopoint")); - -} -#endif diff --git a/src/test b/src/test deleted file mode 100755 index 289a101b78a6a1afcfeba6b6b82cff98eca47df4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16296 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 \n", argv[0]); - return 1; - } - - if (authenticate(argv[1], argv[2])) { - printf("Authenticated!\n"); - } else { - printf("Authentication failed.\n"); - } - - return 0; -} -- 2.39.5