Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-crypton-x509-system for
openSUSE:Factory checked in at 2026-06-10 15:59:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-crypton-x509-system (Old)
and /work/SRC/openSUSE:Factory/.ghc-crypton-x509-system.new.2375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-crypton-x509-system"
Wed Jun 10 15:59:02 2026 rev:2 rq:1358353 version:1.6.8
Changes:
--------
---
/work/SRC/openSUSE:Factory/ghc-crypton-x509-system/ghc-crypton-x509-system.changes
2023-11-23 21:43:07.988983030 +0100
+++
/work/SRC/openSUSE:Factory/.ghc-crypton-x509-system.new.2375/ghc-crypton-x509-system.changes
2026-06-10 15:59:55.885571265 +0200
@@ -1,0 +2,8 @@
+Wed Jan 7 05:08:59 UTC 2026 - Peter Simons <[email protected]>
+
+- Update crypton-x509-system to version 1.6.8.
+ Upstream added a new change log file in this release. With no
+ previous version to compare against, the automatic updater cannot
+ reliable determine the relevante entries for this release.
+
+-------------------------------------------------------------------
Old:
----
crypton-x509-system-1.6.7.tar.gz
New:
----
crypton-x509-system-1.6.8.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-crypton-x509-system.spec ++++++
--- /var/tmp/diff_new_pack.Uoku6S/_old 2026-06-10 15:59:58.521680506 +0200
+++ /var/tmp/diff_new_pack.Uoku6S/_new 2026-06-10 15:59:58.521680506 +0200
@@ -1,7 +1,7 @@
#
# spec file for package ghc-crypton-x509-system
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2026 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name crypton-x509-system
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 1.6.7
+Version: 1.6.8
Release: 0
Summary: Handle per-operating-system X.509 accessors and storage
License: BSD-3-Clause
@@ -99,6 +99,7 @@
%license LICENSE
%files devel -f %{name}-devel.files
+%doc ChangeLog.md
%files -n ghc-%{pkg_name}-doc -f ghc-%{pkg_name}-doc.files
%license LICENSE
++++++ crypton-x509-system-1.6.7.tar.gz -> crypton-x509-system-1.6.8.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/ChangeLog.md
new/crypton-x509-system-1.6.8/ChangeLog.md
--- old/crypton-x509-system-1.6.7/ChangeLog.md 1970-01-01 01:00:00.000000000
+0100
+++ new/crypton-x509-system-1.6.8/ChangeLog.md 2001-09-09 03:46:40.000000000
+0200
@@ -0,0 +1,8 @@
+# ChangeLog for crypton-x509-system
+
+## 1.6.8
+
+* Prefer OpenSSL env vars: SSL_CERT_FILE and SSL_CERT_DIR
+ [#26](https://github.com/kazu-yamamoto/crypton-certificate/pull/26)
+* Unix defaultSystemPaths: add new Fedora default cert filepath
+ [#19](https://github.com/kazu-yamamoto/crypton-certificate/pull/19)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/Setup.hs
new/crypton-x509-system-1.6.8/Setup.hs
--- old/crypton-x509-system-1.6.7/Setup.hs 2001-09-09 03:46:40.000000000
+0200
+++ new/crypton-x509-system-1.6.8/Setup.hs 2001-09-09 03:46:40.000000000
+0200
@@ -1,2 +1,3 @@
import Distribution.Simple
+
main = defaultMain
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/System/X509/Common.hs
new/crypton-x509-system-1.6.8/System/X509/Common.hs
--- old/crypton-x509-system-1.6.7/System/X509/Common.hs 1970-01-01
01:00:00.000000000 +0100
+++ new/crypton-x509-system-1.6.8/System/X509/Common.hs 2001-09-09
03:46:40.000000000 +0200
@@ -0,0 +1,26 @@
+module System.X509.Common (
+ maybeSSLCertEnvOr,
+)
+where
+
+import Data.Foldable (asum)
+import Data.Maybe (catMaybes, fromMaybe)
+import Data.Monoid (mconcat)
+import Data.X509.CertificateStore
+import System.Environment (lookupEnv)
+
+getOpenSslEnvs :: IO (Maybe String)
+getOpenSslEnvs =
+ asum
+ <$> traverse
+ lookupEnv
+ [ "SSL_CERT_FILE"
+ , "SSL_CERT_DIR"
+ ]
+
+maybeSSLCertEnvOr :: IO CertificateStore -> IO CertificateStore
+maybeSSLCertEnvOr defaultStore = do
+ overrideCertPaths <- getOpenSslEnvs
+ case overrideCertPaths of
+ Nothing -> defaultStore
+ Just certPath -> fromMaybe mempty <$> (readCertificateStore certPath)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/System/X509/MacOS.hs
new/crypton-x509-system-1.6.8/System/X509/MacOS.hs
--- old/crypton-x509-system-1.6.7/System/X509/MacOS.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/crypton-x509-system-1.6.8/System/X509/MacOS.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,15 +1,16 @@
-module System.X509.MacOS
- ( getSystemCertificateStore
- ) where
+module System.X509.MacOS (
+ getSystemCertificateStore,
+) where
-import Data.PEM (pemParseLBS, PEM(..))
-import System.Process
-import qualified Data.ByteString.Lazy as LBS
import Control.Applicative
+import qualified Data.ByteString.Lazy as LBS
import Data.Either
+import Data.PEM (PEM (..), pemParseLBS)
+import System.Process
import Data.X509
import Data.X509.CertificateStore
+import System.X509.Common (maybeSSLCertEnvOr)
rootCAKeyChain :: FilePath
rootCAKeyChain = "/System/Library/Keychains/SystemRootCertificates.keychain"
@@ -19,11 +20,20 @@
listInKeyChains :: [FilePath] -> IO [SignedCertificate]
listInKeyChains keyChains = do
- (_, Just hout, _, ph) <- createProcess (proc "security"
("find-certificate" : "-pa" : keyChains)) { std_out = CreatePipe }
+ (_, Just hout, _, ph) <-
+ createProcess
+ (proc "security" ("find-certificate" : "-pa" : keyChains))
+ { std_out = CreatePipe
+ }
pems <- either error id . pemParseLBS <$> LBS.hGetContents hout
- let targets = rights $ map (decodeSignedCertificate . pemContent) $ filter
((=="CERTIFICATE") . pemName) pems
+ let targets =
+ rights $
+ map (decodeSignedCertificate . pemContent) $
+ filter ((== "CERTIFICATE") . pemName) pems
_ <- targets `seq` waitForProcess ph
return targets
getSystemCertificateStore :: IO CertificateStore
-getSystemCertificateStore = makeCertificateStore <$> listInKeyChains
[rootCAKeyChain, systemKeyChain]
+getSystemCertificateStore =
+ maybeSSLCertEnvOr
+ (makeCertificateStore <$> listInKeyChains [rootCAKeyChain,
systemKeyChain])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/System/X509/Unix.hs
new/crypton-x509-system-1.6.8/System/X509/Unix.hs
--- old/crypton-x509-system-1.6.7/System/X509/Unix.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/crypton-x509-system-1.6.8/System/X509/Unix.hs 2001-09-09
03:46:40.000000000 +0200
@@ -11,13 +11,13 @@
-- the path can be dynamically override using the environment variable
-- defined by envPathOverride in the module, which by
-- default is SYSTEM_CERTIFICATE_PATH
---
-module System.X509.Unix
- ( getSystemCertificateStore
- ) where
+module System.X509.Unix (
+ getSystemCertificateStore,
+) where
-import System.Environment (getEnv)
import Data.X509.CertificateStore
+import System.Environment (getEnv)
+import System.X509.Common (maybeSSLCertEnvOr)
import Control.Applicative ((<$>))
import qualified Control.Exception as E
@@ -27,20 +27,23 @@
defaultSystemPaths :: [FilePath]
defaultSystemPaths =
- [ "/etc/ssl/certs/" -- linux
- , "/system/etc/security/cacerts/" -- android
- , "/usr/local/share/certs/" -- freebsd
- , "/etc/ssl/cert.pem" -- openbsd
+ [ "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" -- fedora
+ , "/etc/ssl/certs/" -- linux
+ , "/system/etc/security/cacerts/" -- android
+ , "/usr/local/share/certs/" -- freebsd
+ , "/etc/ssl/cert.pem" -- openbsd
]
envPathOverride :: String
envPathOverride = "SYSTEM_CERTIFICATE_PATH"
getSystemCertificateStore :: IO CertificateStore
-getSystemCertificateStore = mconcat . catMaybes <$> (getSystemPaths >>= mapM
readCertificateStore)
+getSystemCertificateStore =
+ maybeSSLCertEnvOr
+ (mconcat . catMaybes <$> (getSystemPaths >>= mapM
readCertificateStore))
getSystemPaths :: IO [FilePath]
-getSystemPaths = E.catch ((:[]) <$> getEnv envPathOverride) inDefault
- where
- inDefault :: E.IOException -> IO [FilePath]
- inDefault _ = return defaultSystemPaths
+getSystemPaths = E.catch ((: []) <$> getEnv envPathOverride) inDefault
+ where
+ inDefault :: E.IOException -> IO [FilePath]
+ inDefault _ = return defaultSystemPaths
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/System/X509/Win32.hs
new/crypton-x509-system-1.6.8/System/X509/Win32.hs
--- old/crypton-x509-system-1.6.7/System/X509/Win32.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/crypton-x509-system-1.6.8/System/X509/Win32.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,25 +1,27 @@
+{-# LANGUAGE CPP #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE CPP #-}
-module System.X509.Win32
- ( getSystemCertificateStore
- ) where
+module System.X509.Win32 (
+ getSystemCertificateStore,
+) where
+
+import Data.Word
import Foreign.Ptr
import Foreign.Storable
-import Data.Word
-import Control.Monad (when)
import Control.Applicative
import Control.Exception (catch)
+import Control.Monad (when)
import qualified Data.ByteString.Internal as B
+import Data.ASN1.Error
import Data.X509
import Data.X509.CertificateStore
-import Data.ASN1.Error
import System.Win32.Types
+import System.X509.Common (maybeSSLCertEnvOr)
type HCertStore = Ptr Word8
type PCCERT_Context = Ptr Word8
@@ -30,7 +32,8 @@
c_CertCloseStore :: HCertStore -> DWORD -> IO ()
foreign import stdcall unsafe "CertEnumCertificatesInStore"
- c_CertEnumCertificatesInStore :: HCertStore -> PCCERT_Context -> IO
PCCERT_Context
+ c_CertEnumCertificatesInStore
+ :: HCertStore -> PCCERT_Context -> IO PCCERT_Context
certOpenSystemStore :: IO HCertStore
certOpenSystemStore = withTString "ROOT" $ \cstr ->
@@ -38,32 +41,35 @@
certFromContext :: PCCERT_Context -> IO (Either String SignedCertificate)
certFromContext cctx = do
- ty <- peek (castPtr cctx :: Ptr DWORD)
- p <- peek (castPtr (cctx `plusPtr` pbCertEncodedPos) :: Ptr (Ptr BYTE))
+ ty <- peek (castPtr cctx :: Ptr DWORD)
+ p <- peek (castPtr (cctx `plusPtr` pbCertEncodedPos) :: Ptr (Ptr BYTE))
len <- peek (castPtr (cctx `plusPtr` cbCertEncodedPos) :: Ptr DWORD)
process ty p len
- where process 1 p len = do
- b <- B.create (fromIntegral len) $ \dst -> B.memcpy dst p
(fromIntegral len)
- return $ decodeSignedObject b
- process ty _ _ =
- return $ Left ("windows certificate store: not supported type: "
++ show ty)
- pbCertEncodedPos = alignment (undefined :: Ptr (Ptr BYTE))
- cbCertEncodedPos = pbCertEncodedPos + sizeOf (undefined :: Ptr (Ptr
BYTE))
+ where
+ process 1 p len = do
+ b <- B.create (fromIntegral len) $ \dst -> B.memcpy dst p
(fromIntegral len)
+ return $ decodeSignedObject b
+ process ty _ _ =
+ return $ Left ("windows certificate store: not supported type: " ++
show ty)
+ pbCertEncodedPos = alignment (undefined :: Ptr (Ptr BYTE))
+ cbCertEncodedPos = pbCertEncodedPos + sizeOf (undefined :: Ptr (Ptr BYTE))
getSystemCertificateStore :: IO CertificateStore
-getSystemCertificateStore = do
+getSystemCertificateStore = maybeSSLCertEnvOr $ do
store <- certOpenSystemStore
when (store == nullPtr) $ error "no store"
certs <- loop store nullPtr
c_CertCloseStore store 0
return (makeCertificateStore certs)
- where loop st ptr = do
- r <- c_CertEnumCertificatesInStore st ptr
- if r == nullPtr
- then return []
- else do
+ where
+ loop st ptr = do
+ r <- c_CertEnumCertificatesInStore st ptr
+ if r == nullPtr
+ then return []
+ else
+ do
ecert <- certFromContext r
case ecert of
- Left _ -> loop st r
+ Left _ -> loop st r
Right cert -> (cert :) <$> (loop st r)
`catch` \(_ :: ASN1Error) -> loop st r
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/System/X509.hs
new/crypton-x509-system-1.6.8/System/X509.hs
--- old/crypton-x509-system-1.6.7/System/X509.hs 2001-09-09
03:46:40.000000000 +0200
+++ new/crypton-x509-system-1.6.8/System/X509.hs 2001-09-09
03:46:40.000000000 +0200
@@ -1,14 +1,14 @@
{-# LANGUAGE CPP #-}
+
-- |
-- Module : System.X509
-- License : BSD-style
-- Maintainer : Vincent Hanquez <[email protected]>
-- Stability : experimental
-- Portability : good
---
-module System.X509
- ( getSystemCertificateStore
- ) where
+module System.X509 (
+ getSystemCertificateStore,
+) where
#if defined(WINDOWS)
import System.X509.Win32
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/crypton-x509-system-1.6.7/crypton-x509-system.cabal
new/crypton-x509-system-1.6.8/crypton-x509-system.cabal
--- old/crypton-x509-system-1.6.7/crypton-x509-system.cabal 2001-09-09
03:46:40.000000000 +0200
+++ new/crypton-x509-system-1.6.8/crypton-x509-system.cabal 2001-09-09
03:46:40.000000000 +0200
@@ -1,43 +1,54 @@
-Name: crypton-x509-system
-version: 1.6.7
-Synopsis: Handle per-operating-system X.509 accessors and storage
-Description: System X.509 handling for accessing operating system
dependents store and other storage methods
-License: BSD3
-License-file: LICENSE
-Copyright: Vincent Hanquez <[email protected]>
-Author: Vincent Hanquez <[email protected]>
-Maintainer: Kazu Yamamoto <[email protected]>
-Build-Type: Simple
-Category: Data
-stability: experimental
-Homepage: https://github.com/kazu-yamamoto/crypton-certificate
-Cabal-Version: >= 1.10
-
-Library
- Default-Language: Haskell2010
- Build-Depends: base >= 3 && < 5
- , bytestring
- , mtl
- , containers
- , directory
- , filepath
- , process
- , pem >= 0.1 && < 0.3
- , crypton-x509 >= 1.6
- , crypton-x509-store >= 1.6.2
- Exposed-modules: System.X509
- System.X509.Unix
- System.X509.MacOS
- ghc-options: -Wall
- if os(windows)
- cpp-options: -DWINDOWS
- Build-Depends: Win32, asn1-encoding
- extra-libraries: Crypt32
- Exposed-modules: System.X509.Win32
- if os(OSX)
- cpp-options: -DMACOSX
+cabal-version: >=1.10
+name: crypton-x509-system
+version: 1.6.8
+license: BSD3
+license-file: LICENSE
+copyright: Vincent Hanquez <[email protected]>
+maintainer: Kazu Yamamoto <[email protected]>
+author: Vincent Hanquez <[email protected]>
+stability: experimental
+homepage: https://github.com/kazu-yamamoto/crypton-certificate
+synopsis: Handle per-operating-system X.509 accessors and storage
+description:
+ System X.509 handling for accessing operating system dependents store and
other storage methods
+
+category: Data
+build-type: Simple
+extra-source-files: ChangeLog.md
source-repository head
- type: git
- location: https://github.com/kazu-yamamoto/crypton-certificate
- subdir: x509-system
+ type: git
+ location: https://github.com/kazu-yamamoto/crypton-certificate
+ subdir: x509-system
+
+library
+ exposed-modules:
+ System.X509
+ System.X509.Common
+ System.X509.Unix
+ System.X509.MacOS
+
+ default-language: Haskell2010
+ ghc-options: -Wall
+ build-depends:
+ base >=3 && <5,
+ bytestring,
+ mtl,
+ containers,
+ directory,
+ filepath,
+ process,
+ pem >=0.1 && <0.3,
+ crypton-x509 >=1.6,
+ crypton-x509-store >=1.6.2
+
+ if os(windows)
+ exposed-modules: System.X509.Win32
+ cpp-options: -DWINDOWS
+ extra-libraries: Crypt32
+ build-depends:
+ Win32,
+ asn1-encoding
+
+ if os(osx)
+ cpp-options: -DMACOSX