mirror of https://github.com/openssl/openssl.git
				
				
				
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| =pod
 | |
| 
 | |
| =head1 NAME
 | |
| 
 | |
| EVP_SIGNATURE-LMS
 | |
| - The EVP_PKEY Leighton-Micali Signature (LMS) implementation
 | |
| 
 | |
| =head1 DESCRIPTION
 | |
| 
 | |
| The B<LMS> EVP_PKEY implementation supports Leighton-Micali Signatures (LMS)
 | |
| described in [RFC 8554](https://datatracker.ietf.org/doc/html/rfc8854)
 | |
| and [SP 800-208](https://csrc.nist.gov/pubs/sp/800/208/final).
 | |
| The OpenSSL providers only support LMS signature verification, as this is a
 | |
| [SP 800-208](https://csrc.nist.gov/pubs/sp/800/208/final) requirement for
 | |
| FIPS software modules.
 | |
| 
 | |
| EVP_PKEY_verify_message_init() and EVP_PKEY_verify() are the only supported
 | |
| functions used for LMS signatures. Streaming is not currently supported,
 | |
| and since the signature data contains data related to the digest used, functions
 | |
| that specify the digest name are not necessary.
 | |
| 
 | |
| =head1 NOTES
 | |
| 
 | |
| LMS support is disabled by default at compile-time.
 | |
| To enable, specify the B<enable-lms> build configuration option.
 | |
| 
 | |
| LMS should only be used for older deployments.
 | |
| New deployments should use either L<EVP_SIGNATURE-ML-DSA(7)>
 | |
| or <L/EVP_SIGNATURE-SLH-DSA(7)>.
 | |
| 
 | |
| =head1 EXAMPLES
 | |
| 
 | |
| Error checking has been omitted from the following examples
 | |
| 
 | |
| =head2 LMS signature verification
 | |
| 
 | |
|  /* See L<EVP_PKEY-LMS(7)/EXAMPLES for an example of loading a LMS |pub| key */
 | |
|  ctx = EVP_PKEY_CTX_new_from_pkey(libctx, pub, propq);
 | |
|  sig = EVP_SIGNATURE_fetch(libctx, "LMS", propq);
 | |
|  EVP_PKEY_verify_message_init(ctx, sig, NULL);
 | |
|  /*
 | |
|   * EVP_PKEY_verify_message_update() and EVP_PKEY_verify_message_final()
 | |
|   * are not supported
 | |
|   */
 | |
|  ret = EVP_PKEY_verify(ctx, sigdata, sigdata_len, msg, msglen);
 | |
|  /*
 | |
|   * ret == 1 indicates success, 0 verify failure and < 0 for some
 | |
|   * other error.
 | |
|   */
 | |
| 
 | |
| =head1 SEE ALSO
 | |
| 
 | |
| L<EVP_PKEY-LMS(7)>,
 | |
| L<provider-signature(7)>,
 | |
| 
 | |
| =head1 HISTORY
 | |
| 
 | |
| This functionality was added in OpenSSL 3.6.
 | |
| 
 | |
| =head1 COPYRIGHT
 | |
| 
 | |
| Copyright 2025 The OpenSSL Project Authors. All Rights Reserved.
 | |
| 
 | |
| Licensed under the Apache License 2.0 (the "License").  You may not use
 | |
| this file except in compliance with the License.  You can obtain a copy
 | |
| in the file LICENSE in the source distribution or at
 | |
| L<https://www.openssl.org/source/license.html>.
 | |
| 
 | |
| =cut
 |