certificate 0.8.1 → 0.9.0
raw patch · 2 files changed
+19/−5 lines, 2 filesdep +timePVP ok
version bump matches the API change (PVP)
Dependencies added: time
API changes (from Hackage documentation)
Files
- Data/Certificate/X509Cert.hs +17/−4
- certificate.cabal +2/−1
Data/Certificate/X509Cert.hs view
@@ -28,6 +28,8 @@ import Data.List (find) import Data.ASN1.DER import Data.Maybe+import Data.Time.Calendar+import Data.Time.Clock (DiffTime, secondsToDiffTime) import Data.ByteString.Lazy (ByteString) import qualified Data.ByteString.Lazy as L import Control.Monad.State@@ -62,8 +64,7 @@ | PubKeyUnknown OID [Word8] -- ^ unrecognized format deriving (Show,Eq) --- FIXME use a proper standard type for representing time.-type Time = (Int, Int, Int, Int, Int, Int, Bool)+type Time = (Day, DiffTime, Bool) data CertKeyUsage = CertKeyUsageDigitalSignature@@ -223,8 +224,12 @@ parseCertHeaderValidity = do n <- getNextContainer Sequence case n of- [ UTCTime t1, UTCTime t2 ] -> return (t1, t2)+ [ UTCTime t1, UTCTime t2 ] -> return (convertTime t1, convertTime t2) _ -> throwError "bad validity format"+ where convertTime (y,m,d,h,mi,s,u) =+ let day = fromGregorian (fromIntegral y) m d in+ let dtime = secondsToDiffTime (fromIntegral h * 3600 + fromIntegral mi * 60 + fromIntegral s) in+ (day, dtime, u) parseCertHeaderSubjectPK :: ParseASN1 PubKey parseCertHeaderSubjectPK = onNextContainer Sequence $ do@@ -381,7 +386,15 @@ eAlgId = asn1Container Sequence [OID (sigOID $ certSignatureAlg cert), Null] eIssuer = encodeDN $ certIssuerDN cert (t1, t2) = certValidity cert- eValidity = asn1Container Sequence [UTCTime t1, UTCTime t2]+ eValidity = asn1Container Sequence [UTCTime $ unconvertTime t1, UTCTime $ unconvertTime t2] eSubject = encodeDN $ certSubjectDN cert epkinfo = encodePK $ certPubKey cert eexts = [] -- FIXME encode extensions++ unconvertTime (day, difftime, z) =+ let (y, m, d) = toGregorian day in+ let seconds = floor $ toRational difftime in+ let h = seconds `div` 3600 in+ let mi = (seconds `div` 60) `mod` 60 in+ let s = seconds `mod` 60 in+ (fromIntegral y,m,d,h,mi,s,z)
certificate.cabal view
@@ -1,5 +1,5 @@ Name: certificate-Version: 0.8.1+Version: 0.9.0 Description: Certificates and Key reader/writer .@@ -32,6 +32,7 @@ , asn1-data >= 0.5.0 && < 0.6 , base64-bytestring , directory+ , time Exposed-modules: Data.Certificate.X509, Data.Certificate.X509Cert, Data.Certificate.PEM,