mirror of
https://github.com/gren-lang/compiler.git
synced 2024-09-11 08:45:42 +03:00
Attempt to extract actual signature. Something is off with the decoder though...
This commit is contained in:
parent
3fdd445667
commit
2e72055031
@ -13,6 +13,11 @@ module Git
|
|||||||
)
|
)
|
||||||
where
|
where
|
||||||
|
|
||||||
|
import Data.Binary.Get qualified as Get
|
||||||
|
import Data.ByteString.Base64 qualified as Base64
|
||||||
|
import Data.ByteString.Char8 qualified as BSBuilder
|
||||||
|
import Data.ByteString.Lazy (ByteString)
|
||||||
|
import Data.ByteString.Lazy.Char8 qualified as BSLazy
|
||||||
import Data.Either qualified as Either
|
import Data.Either qualified as Either
|
||||||
import Data.List qualified as List
|
import Data.List qualified as List
|
||||||
import Data.Maybe qualified as Maybe
|
import Data.Maybe qualified as Maybe
|
||||||
@ -232,9 +237,25 @@ extractSignatureFromCommit git path hash = do
|
|||||||
Exit.ExitFailure _ -> do
|
Exit.ExitFailure _ -> do
|
||||||
return ""
|
return ""
|
||||||
Exit.ExitSuccess ->
|
Exit.ExitSuccess ->
|
||||||
return $
|
let decodedSignatureChunk =
|
||||||
concatMap (dropWhile (\c -> c == ' ')) $
|
Base64.decode $
|
||||||
takeWhile (\line -> not $ List.isInfixOf "-----END SSH SIGNATURE-----" line) $
|
BSBuilder.pack $
|
||||||
drop 1 $
|
concatMap (dropWhile (\c -> c == ' ')) $
|
||||||
dropWhile (\line -> not $ List.isPrefixOf "gpgsig" line) $
|
takeWhile (\line -> not $ List.isInfixOf "-----END SSH SIGNATURE-----" line) $
|
||||||
lines stdout
|
drop 1 $
|
||||||
|
dropWhile (\line -> not $ List.isPrefixOf "gpgsig" line) $
|
||||||
|
lines stdout
|
||||||
|
in case decodedSignatureChunk of
|
||||||
|
Left err ->
|
||||||
|
return err
|
||||||
|
Right decoded ->
|
||||||
|
return $ BSLazy.unpack $ Get.runGet decodeSignatureFromChunk $ BSLazy.fromStrict decoded
|
||||||
|
|
||||||
|
decodeSignatureFromChunk :: Get.Get ByteString
|
||||||
|
decodeSignatureFromChunk = do
|
||||||
|
Get.skip 10
|
||||||
|
_publicKey <- Get.getLazyByteStringNul
|
||||||
|
_namespace <- Get.getLazyByteStringNul
|
||||||
|
_reserved <- Get.getLazyByteStringNul
|
||||||
|
_hash_algorithm <- Get.getLazyByteStringNul
|
||||||
|
Get.getLazyByteStringNul
|
||||||
|
@ -222,7 +222,8 @@ Common gren-common
|
|||||||
time >= 1.9.1,
|
time >= 1.9.1,
|
||||||
utf8-string,
|
utf8-string,
|
||||||
vector,
|
vector,
|
||||||
text >= 2 && < 3
|
text >= 2 && < 3,
|
||||||
|
base64-bytestring >= 1.2 && < 2
|
||||||
|
|
||||||
Executable gren
|
Executable gren
|
||||||
Import:
|
Import:
|
||||||
|
Loading…
Reference in New Issue
Block a user