packages feed

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 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,