--- steghide-0.5.1/src/AuData.h +++ steghide-0.5.1/src/AuData.h @@ -26,22 +26,22 @@ // AuMuLawAudioData typedef AudioDataImpl AuMuLawAudioData ; -inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { return (io->read8()) ; } -inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) const { io->write8(v) ; } +template<> inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { return (io->read8()) ; } +template<> inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) const { io->write8(v) ; } // AuPCM8AudioData typedef AudioDataImpl AuPCM8AudioData ; -inline SBYTE AuPCM8AudioData::readValue (BinaryIO* io) const { return ((SBYTE) io->read8()) ; } -inline void AuPCM8AudioData::writeValue (BinaryIO* io, SBYTE v) const { io->write8((BYTE) v) ; } +template<> inline SBYTE AuPCM8AudioData::readValue (BinaryIO* io) const { return ((SBYTE) io->read8()) ; } +template<> inline void AuPCM8AudioData::writeValue (BinaryIO* io, SBYTE v) const { io->write8((BYTE) v) ; } // AuPCM16AudioData typedef AudioDataImpl AuPCM16AudioData ; -inline SWORD16 AuPCM16AudioData::readValue (BinaryIO* io) const { return ((SWORD16) io->read16_be()) ; } -inline void AuPCM16AudioData::writeValue (BinaryIO* io, SWORD16 v) const { io->write16_be((UWORD16) v) ; } +template<> inline SWORD16 AuPCM16AudioData::readValue (BinaryIO* io) const { return ((SWORD16) io->read16_be()) ; } +template<> inline void AuPCM16AudioData::writeValue (BinaryIO* io, SWORD16 v) const { io->write16_be((UWORD16) v) ; } // AuPCM32AudioData typedef AudioDataImpl AuPCM32AudioData ; -inline SWORD32 AuPCM32AudioData::readValue (BinaryIO* io) const { return ((SWORD32) io->read32_be()) ; } -inline void AuPCM32AudioData::writeValue (BinaryIO* io, SWORD32 v) const { io->write32_be((UWORD32) v) ; } +template<> inline SWORD32 AuPCM32AudioData::readValue (BinaryIO* io) const { return ((SWORD32) io->read32_be()) ; } +template<> inline void AuPCM32AudioData::writeValue (BinaryIO* io, SWORD32 v) const { io->write32_be((UWORD32) v) ; } #endif // ndef SH_AUDATA_H --- steghide-0.5.1/src/AuSampleValues.cc +++ steghide-0.5.1/src/AuSampleValues.cc @@ -21,17 +21,17 @@ #include "AuSampleValues.h" // AuMuLawSampleValue -const BYTE AuMuLawSampleValue::MinValue = 0 ; -const BYTE AuMuLawSampleValue::MaxValue = BYTE_MAX ; +template<> const BYTE AuMuLawSampleValue::MinValue = 0 ; +template<> const BYTE AuMuLawSampleValue::MaxValue = BYTE_MAX ; // AuPCM8SampleValue -const SBYTE AuPCM8SampleValue::MinValue = SBYTE_MIN ; -const SBYTE AuPCM8SampleValue::MaxValue = SBYTE_MAX ; +template<> const SBYTE AuPCM8SampleValue::MinValue = SBYTE_MIN ; +template<> const SBYTE AuPCM8SampleValue::MaxValue = SBYTE_MAX ; // AuPCM16SampleValue -const SWORD16 AuPCM16SampleValue::MinValue = SWORD16_MIN ; -const SWORD16 AuPCM16SampleValue::MaxValue = SWORD16_MAX ; +template<> const SWORD16 AuPCM16SampleValue::MinValue = SWORD16_MIN ; +template<> const SWORD16 AuPCM16SampleValue::MaxValue = SWORD16_MAX ; // AuPCM32SampleValue -const SWORD32 AuPCM32SampleValue::MinValue = SWORD32_MIN ; -const SWORD32 AuPCM32SampleValue::MaxValue = SWORD32_MAX ; +template<> const SWORD32 AuPCM32SampleValue::MinValue = SWORD32_MIN ; +template<> const SWORD32 AuPCM32SampleValue::MaxValue = SWORD32_MAX ; --- steghide-0.5.1/src/Graph.cc +++ steghide-0.5.1/src/Graph.cc @@ -18,6 +18,7 @@ * */ +#include #include #include #include ' once for each item that has to be signed (when exporting) or authenticated (when importing). Now, we spawn it once for all and then follow a request/reply protocol. This reduces the wall-clock time of: guix archive --export -r $(guix build coreutils -d) from 30s to 2s. * guix/scripts/authenticate.scm (sign-with-key): Return the signature instead of displaying it. Raise a &formatted-message instead of calling 'leave'. (validate-signature): Likewise. (read-command): New procedure. (define-enumerate-type, reply-code): New macros. (guix-authenticate)[send-reply]: New procedure. Change to read commands from current-input-port. * nix/libstore/local-store.cc (runAuthenticationProgram): Remove. (authenticationAgent, readInteger, readAuthenticateReply): New functions. (signHash, verifySignature): Rewrite in terms of the agent. * tests/store.scm ("import not signed"): Remove 'pk' call. ("import signed by unauthorized key"): Check the error message of C. * tests/guix-authenticate.sh: Rewrite using the new protocol. fixlet Ludovic Courtès 2020-09-11daemon: Simplify interface with 'guix authenticate'....There's no reason at this point to mimic the calling convention of the 'openssl' command. * nix/libstore/local-store.cc (LocalStore::exportPath): Add only "sign" and HASH to ARGS. Remove 'tmpDir' and 'hashFile'. (LocalStore::importPath): Add only "verify" and SIGNATURE to * guix/scripts/authenticate.scm (guix-authenticate): Adjust accordingly; remove the OpenSSL-style clauses. (read-hash-data): Remove. (sign-with-key): Replace 'port' with 'sha256' and adjust accordingly. (validate-signature): Export SIGNATURE to be a canonical sexp. * tests/guix-authenticate.sh: Adjust tests accordingly. Ludovic Courtès