Path: blob/a-new-beginning/SharedDependencies/Sources/cryptopp/dsa.cpp
2 views
// dsa.cpp - originally written and placed in the public domain by Wei Dai12#include "pch.h"34#ifndef CRYPTOPP_IMPORTS56#include "dsa.h"7#include "asn.h"8#include "integer.h"9#include "filters.h"10#include "nbtheory.h"1112NAMESPACE_BEGIN(CryptoPP)1314size_t DSAConvertSignatureFormat(byte *buffer, size_t bufferSize, DSASignatureFormat toFormat, const byte *signature, size_t signatureLen, DSASignatureFormat fromFormat)15{16Integer r, s;17StringStore store(signature, signatureLen);18ArraySink sink(buffer, bufferSize);1920switch (fromFormat)21{22case DSA_P1363:23r.Decode(store, signatureLen/2);24s.Decode(store, signatureLen/2);25break;26case DSA_DER:27{28BERSequenceDecoder seq(store);29r.BERDecode(seq);30s.BERDecode(seq);31seq.MessageEnd();32break;33}34case DSA_OPENPGP:35r.OpenPGPDecode(store);36s.OpenPGPDecode(store);37break;38}3940switch (toFormat)41{42case DSA_P1363:43r.Encode(sink, bufferSize/2);44s.Encode(sink, bufferSize/2);45break;46case DSA_DER:47{48DERSequenceEncoder seq(sink);49r.DEREncode(seq);50s.DEREncode(seq);51seq.MessageEnd();52break;53}54case DSA_OPENPGP:55r.OpenPGPEncode(sink);56s.OpenPGPEncode(sink);57break;58}5960return (size_t)sink.TotalPutLength();61}6263NAMESPACE_END6465#endif666768