Sha256: 04a7db24f73bc31145e81edca61705dd68b492d83a4f03b1429ccbeb65c0ea90

Contents?: true

Size: 1.6 KB

Versions: 33

Compression:

Stored size: 1.6 KB

Contents

/**
 * EdDSA-Java by str4d
 *
 * To the extent possible under law, the person who associated CC0 with
 * EdDSA-Java has waived all copyright and related or neighboring rights
 * to EdDSA-Java.
 *
 * You should have received a copy of the CC0 legalcode along with this
 * work. If not, see <https://creativecommons.org/publicdomain/zero/1.0/>.
 *
 */
package net.i2p.crypto.eddsa.spec;

import java.security.spec.KeySpec;

import net.i2p.crypto.eddsa.math.GroupElement;

/**
 * @author str4d
 *
 */
public class EdDSAPublicKeySpec implements KeySpec {
    private final GroupElement A;
    private final GroupElement Aneg;
    private final EdDSAParameterSpec spec;

    /**
     * @param pk the public key
     * @param spec the parameter specification for this key
     * @throws IllegalArgumentException if key length is wrong
     */
    public EdDSAPublicKeySpec(byte[] pk, EdDSAParameterSpec spec) {
        if (pk.length != spec.getCurve().getField().getb()/8)
            throw new IllegalArgumentException("public-key length is wrong");

        this.A = new GroupElement(spec.getCurve(), pk);
        // Precompute -A for use in verification.
        this.Aneg = A.negate();
        Aneg.precompute(false);
        this.spec = spec;
    }

    public EdDSAPublicKeySpec(GroupElement A, EdDSAParameterSpec spec) {
        this.A = A;
        this.Aneg = A.negate();
        Aneg.precompute(false);
        this.spec = spec;
    }

    public GroupElement getA() {
        return A;
    }

    public GroupElement getNegativeA() {
        return Aneg;
    }

    public EdDSAParameterSpec getParams() {
        return spec;
    }
}

Version data entries

33 entries across 29 versions & 2 rubygems

Version Path
ed25519-1.3.0 ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
ed25519-1.3.0-java ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.19.0 vendor/bundle/ruby/3.0.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.18.0 vendor/bundle/ruby/3.0.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/3.0.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.16.0 vendor/bundle/ruby/2.7.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.14.0 vendor/bundle/ruby/2.7.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.9.0 vendor/bundle/ruby/2.7.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.8.0 vendor/bundle/ruby/2.7.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.7.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.6.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.6.2 vendor/bundle/ruby/2.6.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.6.1 vendor/bundle/ruby/2.6.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.6.0 vendor/bundle/ruby/2.6.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.5.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.6.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.5.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.6.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java
vagrant-unbundled-2.2.3.0 vendor/bundle/ruby/2.5.0/gems/ed25519-1.2.4/ext/ed25519_jruby/net/i2p/crypto/eddsa/spec/EdDSAPublicKeySpec.java