// 
// Decompiled by Procyon v0.6.0
// 

package com.google.crypto.tink.subtle;

import java.security.interfaces.ECPublicKey;
import java.security.interfaces.ECPrivateKey;
import java.security.GeneralSecurityException;
import java.security.interfaces.RSAPublicKey;
import java.security.interfaces.RSAPrivateCrtKey;
import com.google.protobuf.ByteString;

public final class SelfKeyTestValidators
{
    private static final ByteString TEST_MESSAGE;
    
    private SelfKeyTestValidators() {
    }
    
    public static final void validateRsaSsaPss(final RSAPrivateCrtKey privateKey, final RSAPublicKey publicKey, final Enums.HashType sigHash, final Enums.HashType mgf1Hash, final int saltLength) throws GeneralSecurityException {
        final RsaSsaPssSignJce rsaSigner = new RsaSsaPssSignJce(privateKey, sigHash, mgf1Hash, saltLength);
        final RsaSsaPssVerifyJce rsaVerifier = new RsaSsaPssVerifyJce(publicKey, sigHash, mgf1Hash, saltLength);
        try {
            rsaVerifier.verify(rsaSigner.sign(SelfKeyTestValidators.TEST_MESSAGE.toByteArray()), SelfKeyTestValidators.TEST_MESSAGE.toByteArray());
        }
        catch (final GeneralSecurityException e) {
            throw new GeneralSecurityException("RSA PSS signing with private key followed by verifying with public key failed. The key may be corrupted.", e);
        }
    }
    
    public static final void validateRsaSsaPkcs1(final RSAPrivateCrtKey privateKey, final RSAPublicKey publicKey, final Enums.HashType sigHash) throws GeneralSecurityException {
        final RsaSsaPkcs1SignJce rsaSigner = new RsaSsaPkcs1SignJce(privateKey, sigHash);
        final RsaSsaPkcs1VerifyJce rsaVerifier = new RsaSsaPkcs1VerifyJce(publicKey, sigHash);
        try {
            rsaVerifier.verify(rsaSigner.sign(SelfKeyTestValidators.TEST_MESSAGE.toByteArray()), SelfKeyTestValidators.TEST_MESSAGE.toByteArray());
        }
        catch (final GeneralSecurityException e) {
            throw new GeneralSecurityException("RSA PKCS1 signing with private key followed by verifying with public key failed. The key may be corrupted.", e);
        }
    }
    
    public static final void validateEcdsa(final ECPrivateKey privateKey, final ECPublicKey publicKey, final Enums.HashType hash, final EllipticCurves.EcdsaEncoding encoding) throws GeneralSecurityException {
        final EcdsaSignJce ecdsaSigner = new EcdsaSignJce(privateKey, hash, encoding);
        final EcdsaVerifyJce ecdsaverifier = new EcdsaVerifyJce(publicKey, hash, encoding);
        try {
            ecdsaverifier.verify(ecdsaSigner.sign(SelfKeyTestValidators.TEST_MESSAGE.toByteArray()), SelfKeyTestValidators.TEST_MESSAGE.toByteArray());
        }
        catch (final GeneralSecurityException e) {
            throw new GeneralSecurityException("ECDSA signing with private key followed by verifying with public key failed. The key may be corrupted.", e);
        }
    }
    
    static {
        TEST_MESSAGE = ByteString.copyFromUtf8("Tink and Wycheproof.");
    }
}
