First Commit
This commit is contained in:
66
externals/cryptopp/dsa.cpp
vendored
Normal file
66
externals/cryptopp/dsa.cpp
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
// dsa.cpp - originally written and placed in the public domain by Wei Dai
|
||||
|
||||
#include "pch.h"
|
||||
|
||||
#ifndef CRYPTOPP_IMPORTS
|
||||
|
||||
#include "dsa.h"
|
||||
#include "asn.h"
|
||||
#include "integer.h"
|
||||
#include "filters.h"
|
||||
#include "nbtheory.h"
|
||||
|
||||
NAMESPACE_BEGIN(CryptoPP)
|
||||
|
||||
size_t DSAConvertSignatureFormat(byte *buffer, size_t bufferSize, DSASignatureFormat toFormat, const byte *signature, size_t signatureLen, DSASignatureFormat fromFormat)
|
||||
{
|
||||
Integer r, s;
|
||||
StringStore store(signature, signatureLen);
|
||||
ArraySink sink(buffer, bufferSize);
|
||||
|
||||
switch (fromFormat)
|
||||
{
|
||||
case DSA_P1363:
|
||||
r.Decode(store, signatureLen/2);
|
||||
s.Decode(store, signatureLen/2);
|
||||
break;
|
||||
case DSA_DER:
|
||||
{
|
||||
BERSequenceDecoder seq(store);
|
||||
r.BERDecode(seq);
|
||||
s.BERDecode(seq);
|
||||
seq.MessageEnd();
|
||||
break;
|
||||
}
|
||||
case DSA_OPENPGP:
|
||||
r.OpenPGPDecode(store);
|
||||
s.OpenPGPDecode(store);
|
||||
break;
|
||||
}
|
||||
|
||||
switch (toFormat)
|
||||
{
|
||||
case DSA_P1363:
|
||||
r.Encode(sink, bufferSize/2);
|
||||
s.Encode(sink, bufferSize/2);
|
||||
break;
|
||||
case DSA_DER:
|
||||
{
|
||||
DERSequenceEncoder seq(sink);
|
||||
r.DEREncode(seq);
|
||||
s.DEREncode(seq);
|
||||
seq.MessageEnd();
|
||||
break;
|
||||
}
|
||||
case DSA_OPENPGP:
|
||||
r.OpenPGPEncode(sink);
|
||||
s.OpenPGPEncode(sink);
|
||||
break;
|
||||
}
|
||||
|
||||
return (size_t)sink.TotalPutLength();
|
||||
}
|
||||
|
||||
NAMESPACE_END
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user