diff --git a/sbp.cabal b/sbp.cabal
--- a/sbp.cabal
+++ b/sbp.cabal
@@ -1,5 +1,5 @@
 name:                  sbp
-version:               4.5.0
+version:               4.6.0
 synopsis:              SwiftNav's SBP Library
 homepage:              https://github.com/swift-nav/libsbp
 license:               MIT
@@ -43,6 +43,7 @@
                      , SwiftNav.SBP.Piksi
                      , SwiftNav.SBP.Sbas
                      , SwiftNav.SBP.Settings
+                     , SwiftNav.SBP.Signing
                      , SwiftNav.SBP.SolutionMeta
                      , SwiftNav.SBP.Ssr
                      , SwiftNav.SBP.System
diff --git a/src/SwiftNav/SBP.hs b/src/SwiftNav/SBP.hs
--- a/src/SwiftNav/SBP.hs
+++ b/src/SwiftNav/SBP.hs
@@ -32,6 +32,7 @@
 import SwiftNav.SBP.Piksi as Exports
 import SwiftNav.SBP.Sbas as Exports
 import SwiftNav.SBP.Settings as Exports
+import SwiftNav.SBP.Signing as Exports
 import SwiftNav.SBP.SolutionMeta as Exports
 import SwiftNav.SBP.Ssr as Exports
 import SwiftNav.SBP.System as Exports
diff --git a/src/SwiftNav/SBP/Msg.hs b/src/SwiftNav/SBP/Msg.hs
--- a/src/SwiftNav/SBP/Msg.hs
+++ b/src/SwiftNav/SBP/Msg.hs
@@ -42,6 +42,7 @@
 import SwiftNav.SBP.Piksi
 import SwiftNav.SBP.Sbas
 import SwiftNav.SBP.Settings
+import SwiftNav.SBP.Signing
 import SwiftNav.SBP.SolutionMeta
 import SwiftNav.SBP.Ssr
 import SwiftNav.SBP.System
@@ -93,6 +94,8 @@
    | SBPMsgDgnssStatus MsgDgnssStatus Msg
    | SBPMsgDops MsgDops Msg
    | SBPMsgDopsDepA MsgDopsDepA Msg
+   | SBPMsgEd25519Certificate MsgEd25519Certificate Msg
+   | SBPMsgEd25519Signature MsgEd25519Signature Msg
    | SBPMsgEphemerisBds MsgEphemerisBds Msg
    | SBPMsgEphemerisDepA MsgEphemerisDepA Msg
    | SBPMsgEphemerisDepB MsgEphemerisDepB Msg
@@ -325,6 +328,8 @@
           | _msgSBPType == msgDgnssStatus = SBPMsgDgnssStatus (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgDops = SBPMsgDops (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgDopsDepA = SBPMsgDopsDepA (decode (fromStrict (unBytes _msgSBPPayload))) m
+          | _msgSBPType == msgEd25519Certificate = SBPMsgEd25519Certificate (decode (fromStrict (unBytes _msgSBPPayload))) m
+          | _msgSBPType == msgEd25519Signature = SBPMsgEd25519Signature (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgEphemerisBds = SBPMsgEphemerisBds (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgEphemerisDepA = SBPMsgEphemerisDepA (decode (fromStrict (unBytes _msgSBPPayload))) m
           | _msgSBPType == msgEphemerisDepB = SBPMsgEphemerisDepB (decode (fromStrict (unBytes _msgSBPPayload))) m
@@ -549,6 +554,8 @@
       encoder (SBPMsgDgnssStatus _ m) = put m
       encoder (SBPMsgDops _ m) = put m
       encoder (SBPMsgDopsDepA _ m) = put m
+      encoder (SBPMsgEd25519Certificate _ m) = put m
+      encoder (SBPMsgEd25519Signature _ m) = put m
       encoder (SBPMsgEphemerisBds _ m) = put m
       encoder (SBPMsgEphemerisDepA _ m) = put m
       encoder (SBPMsgEphemerisDepB _ m) = put m
@@ -777,6 +784,8 @@
         | msgType == msgDgnssStatus = SBPMsgDgnssStatus <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgDops = SBPMsgDops <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgDopsDepA = SBPMsgDopsDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
+        | msgType == msgEd25519Certificate = SBPMsgEd25519Certificate <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
+        | msgType == msgEd25519Signature = SBPMsgEd25519Signature <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgEphemerisBds = SBPMsgEphemerisBds <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgEphemerisDepA = SBPMsgEphemerisDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
         | msgType == msgEphemerisDepB = SBPMsgEphemerisDepB <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj
@@ -1006,6 +1015,8 @@
   toJSON (SBPMsgDgnssStatus n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgDops n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgDopsDepA n m) = toJSON n <<>> toJSON m
+  toJSON (SBPMsgEd25519Certificate n m) = toJSON n <<>> toJSON m
+  toJSON (SBPMsgEd25519Signature n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgEphemerisBds n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgEphemerisDepA n m) = toJSON n <<>> toJSON m
   toJSON (SBPMsgEphemerisDepB n m) = toJSON n <<>> toJSON m
@@ -1229,6 +1240,8 @@
   msg f (SBPMsgDgnssStatus n m) = SBPMsgDgnssStatus n <$> f m
   msg f (SBPMsgDops n m) = SBPMsgDops n <$> f m
   msg f (SBPMsgDopsDepA n m) = SBPMsgDopsDepA n <$> f m
+  msg f (SBPMsgEd25519Certificate n m) = SBPMsgEd25519Certificate n <$> f m
+  msg f (SBPMsgEd25519Signature n m) = SBPMsgEd25519Signature n <$> f m
   msg f (SBPMsgEphemerisBds n m) = SBPMsgEphemerisBds n <$> f m
   msg f (SBPMsgEphemerisDepA n m) = SBPMsgEphemerisDepA n <$> f m
   msg f (SBPMsgEphemerisDepB n m) = SBPMsgEphemerisDepB n <$> f m
diff --git a/src/SwiftNav/SBP/Navigation.hs b/src/SwiftNav/SBP/Navigation.hs
--- a/src/SwiftNav/SBP/Navigation.hs
+++ b/src/SwiftNav/SBP/Navigation.hs
@@ -2370,9 +2370,9 @@
   { _msgReferenceFrameParam_ssr_iod    :: !Word8
     -- ^ SSR IOD parameter.
   , _msgReferenceFrameParam_sn         :: !Text
-    -- ^ Name of source coordinate-system using the EPSG identification code.
+    -- ^ Name of source coordinate-system.
   , _msgReferenceFrameParam_tn         :: !Text
-    -- ^ Name of target coordinate-system using the EPSG identification code.
+    -- ^ Name of target coordinate-system.
   , _msgReferenceFrameParam_sin        :: !Word8
     -- ^ System Identification Number.
   , _msgReferenceFrameParam_utn        :: !Word16
diff --git a/src/SwiftNav/SBP/Signing.hs b/src/SwiftNav/SBP/Signing.hs
new file mode 100644
--- /dev/null
+++ b/src/SwiftNav/SBP/Signing.hs
@@ -0,0 +1,75 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# LANGUAGE NoImplicitPrelude           #-}
+{-# LANGUAGE TemplateHaskell             #-}
+{-# LANGUAGE RecordWildCards             #-}
+
+-- |
+-- Module:      SwiftNav.SBP.Signing
+-- Copyright:   Copyright (C) 2015-2021 Swift Navigation, Inc.
+-- License:     MIT
+-- Contact:     https://support.swiftnav.com
+-- Stability:   experimental
+-- Portability: portable
+--
+-- \< Messages relating to signatures \>
+
+module SwiftNav.SBP.Signing
+  ( module SwiftNav.SBP.Signing
+  ) where
+
+import BasicPrelude
+import Control.Lens
+import Control.Monad.Loops
+import Data.Binary
+import Data.Binary.Get
+import Data.Binary.IEEE754
+import Data.Binary.Put
+import Data.ByteString.Lazy    hiding (ByteString)
+import Data.Int
+import Data.Word
+import SwiftNav.SBP.TH
+import SwiftNav.SBP.Types
+import SwiftNav.SBP.Gnss
+
+{-# ANN module ("HLint: ignore Use camelCase"::String) #-}
+{-# ANN module ("HLint: ignore Redundant do"::String) #-}
+{-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-}
+
+
+msgEd25519Signature :: Word16
+msgEd25519Signature = 0x0C01
+
+data MsgEd25519Signature = MsgEd25519Signature
+  { _msgEd25519Signature_stub :: ![Word8]
+  } deriving ( Show, Read, Eq )
+
+instance Binary MsgEd25519Signature where
+  get = do
+    _msgEd25519Signature_stub <- whileM (not <$> isEmpty) getWord8
+    pure MsgEd25519Signature {..}
+
+  put MsgEd25519Signature {..} = do
+    mapM_ putWord8 _msgEd25519Signature_stub
+
+$(makeSBP 'msgEd25519Signature ''MsgEd25519Signature)
+$(makeJSON "_msgEd25519Signature_" ''MsgEd25519Signature)
+$(makeLenses ''MsgEd25519Signature)
+
+msgEd25519Certificate :: Word16
+msgEd25519Certificate = 0x0C02
+
+data MsgEd25519Certificate = MsgEd25519Certificate
+  { _msgEd25519Certificate_stub :: ![Word8]
+  } deriving ( Show, Read, Eq )
+
+instance Binary MsgEd25519Certificate where
+  get = do
+    _msgEd25519Certificate_stub <- whileM (not <$> isEmpty) getWord8
+    pure MsgEd25519Certificate {..}
+
+  put MsgEd25519Certificate {..} = do
+    mapM_ putWord8 _msgEd25519Certificate_stub
+
+$(makeSBP 'msgEd25519Certificate ''MsgEd25519Certificate)
+$(makeJSON "_msgEd25519Certificate_" ''MsgEd25519Certificate)
+$(makeLenses ''MsgEd25519Certificate)
