package org.bouncycastle.crypto.params; import org.bouncycastle.crypto.CipherParameters; /** * Public parameters for an SM2 key exchange. In this case the ephemeralPublicKey provides the random point used in the algorithm. */ public class SM2KeyExchangePublicParameters implements CipherParameters { private ECPublicKeyParameters staticPublicKey; private ECPublicKeyParameters ephemeralPublicKey; public SM2KeyExchangePublicParameters( ECPublicKeyParameters staticPublicKey, ECPublicKeyParameters ephemeralPublicKey) { if (staticPublicKey == null) { throw new NullPointerException("staticPublicKey cannot be null"); } if (ephemeralPublicKey == null) { throw new NullPointerException("ephemeralPublicKey cannot be null"); } if (!staticPublicKey.getParameters().equals(ephemeralPublicKey.getParameters())) { throw new IllegalArgumentException("Static and ephemeral public keys have different domain parameters"); } this.staticPublicKey = staticPublicKey; this.ephemeralPublicKey = ephemeralPublicKey; } public ECPublicKeyParameters getStaticPublicKey() { return staticPublicKey; } public ECPublicKeyParameters getEphemeralPublicKey() { return ephemeralPublicKey; } }