Skip to content

Getting intermittent errors with DSA NIST P521 verification. #232

@wolfmcnally

Description

@wolfmcnally

Below is a test that sometimes fails, sometimes succeeds. I can run it several times before it fails. It throws a Crypto error because either r or s are the wrong length.

    #[test]
    fn test_dsa_nistp521() {
        let encoded_key = r#"
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAArAAAABNlY2RzYS
1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQBD3AAo2UN1WreSuQWtp4DTbfzQ+D2
LyK9u5ykCfFXd/AMpQbyIyEQGbAiLNyAhGOfLgarJiAv4myKcHSGW2fTxQUB3V09IqubOw
JdNLaCJbszLQQSqoZlIWrXD51X7FdQFtXYY4GKmVeMKuK+u9Iby6F41nSrYpHlaFzzxr+D
5n1uq7cAAAEQrIPPE6yDzxMAAAATZWNkc2Etc2hhMi1uaXN0cDUyMQAAAAhuaXN0cDUyMQ
AAAIUEAQ9wAKNlDdVq3krkFraeA02380Pg9i8ivbucpAnxV3fwDKUG8iMhEBmwIizcgIRj
ny4GqyYgL+JsinB0hltn08UFAd1dPSKrmzsCXTS2giW7My0EEqqGZSFq1w+dV+xXUBbV2G
OBiplXjCrivrvSG8uheNZ0q2KR5Whc88a/g+Z9bqu3AAAAQgGDA9XptdyVFY5Svw8XXSJ5
7lrvc2R/T2CBthF0FgxqlNF5oTdqmrFuEqJ34oxIvhd9sJB/3qBpoJnPVKcuVmGC6gAAAA
xLZXkgY29tbWVudC4BAgMEBQY=
-----END OPENSSH PRIVATE KEY-----
"#;
        let private_key = PrivateKey::from_openssh(encoded_key).unwrap();
        const MESSAGE: &[u8] = b"Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it.";
        const NAMESPACE: &str = "test";
        let signature = private_key.sign(NAMESPACE, HashAlg::Sha256, MESSAGE).unwrap();
        let public_key = private_key.public_key();
        public_key.verify(NAMESPACE, MESSAGE, &signature).unwrap();
    }

Cargo.toml:

ssh-key = { version = "=0.6.6", default-features = false, features = ["dsa", "ecdsa", "rand_core", "std", "crypto"] }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions