diff options
Diffstat (limited to 'libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.java')
-rw-r--r-- | libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.java | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.java b/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.java new file mode 100644 index 000000000..1b83d55e0 --- /dev/null +++ b/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.java @@ -0,0 +1,69 @@ +package org.spongycastle.jcajce.provider.asymmetric.dstu; + +import java.io.IOException; +import java.security.SignatureException; + +import org.spongycastle.asn1.ASN1OctetString; +import org.spongycastle.asn1.DEROctetString; + +public class SignatureSpiLe + extends SignatureSpi +{ + void reverseBytes(byte[] bytes) + { + byte tmp; + + for (int i = 0; i < bytes.length / 2; i++) + { + tmp = bytes[i]; + bytes[i] = bytes[bytes.length - 1 - i]; + bytes[bytes.length - 1 - i] = tmp; + } + } + + protected byte[] engineSign() + throws SignatureException + { + byte[] signature = ASN1OctetString.getInstance(super.engineSign()).getOctets(); + reverseBytes(signature); + try + { + return (new DEROctetString(signature)).getEncoded(); + } + catch (Exception e) + { + throw new SignatureException(e.toString()); + } + } + + protected boolean engineVerify( + byte[] sigBytes) + throws SignatureException + { + byte[] bytes = null; + + try + { + bytes = ((ASN1OctetString)ASN1OctetString.fromByteArray(sigBytes)).getOctets(); + } + catch (IOException e) + { + throw new SignatureException("error decoding signature bytes."); + } + + reverseBytes(bytes); + + try + { + return super.engineVerify((new DEROctetString(bytes)).getEncoded()); + } + catch (SignatureException e) + { + throw e; + } + catch (Exception e) + { + throw new SignatureException(e.toString()); + } + } +} |